1da177e4c3
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
81 lines
2.4 KiB
C
81 lines
2.4 KiB
C
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved.
|
|
*/
|
|
#ifndef _ASM_IA64_SN_PDA_H
|
|
#define _ASM_IA64_SN_PDA_H
|
|
|
|
#include <linux/cache.h>
|
|
#include <asm/percpu.h>
|
|
#include <asm/system.h>
|
|
#include <asm/sn/bte.h>
|
|
|
|
|
|
/*
|
|
* CPU-specific data structure.
|
|
*
|
|
* One of these structures is allocated for each cpu of a NUMA system.
|
|
*
|
|
* This structure provides a convenient way of keeping together
|
|
* all SN per-cpu data structures.
|
|
*/
|
|
|
|
typedef struct pda_s {
|
|
|
|
/* Having a pointer in the begining of PDA tends to increase
|
|
* the chance of having this pointer in cache. (Yes something
|
|
* else gets pushed out). Doing this reduces the number of memory
|
|
* access to all nodepda variables to be one
|
|
*/
|
|
struct nodepda_s *p_nodepda; /* Pointer to Per node PDA */
|
|
struct subnodepda_s *p_subnodepda; /* Pointer to CPU subnode PDA */
|
|
|
|
/*
|
|
* Support for SN LEDs
|
|
*/
|
|
volatile short *led_address;
|
|
u8 led_state;
|
|
u8 hb_state; /* supports blinking heartbeat leds */
|
|
unsigned int hb_count;
|
|
|
|
unsigned int idle_flag;
|
|
|
|
volatile unsigned long *bedrock_rev_id;
|
|
volatile unsigned long *pio_write_status_addr;
|
|
unsigned long pio_write_status_val;
|
|
volatile unsigned long *pio_shub_war_cam_addr;
|
|
|
|
unsigned long sn_soft_irr[4];
|
|
unsigned long sn_in_service_ivecs[4];
|
|
short cnodeid_to_nasid_table[MAX_NUMNODES];
|
|
int sn_lb_int_war_ticks;
|
|
int sn_last_irq;
|
|
int sn_first_irq;
|
|
} pda_t;
|
|
|
|
|
|
#define CACHE_ALIGN(x) (((x) + SMP_CACHE_BYTES-1) & ~(SMP_CACHE_BYTES-1))
|
|
|
|
/*
|
|
* PDA
|
|
* Per-cpu private data area for each cpu. The PDA is located immediately after
|
|
* the IA64 cpu_data area. A full page is allocated for the cp_data area for each
|
|
* cpu but only a small amout of the page is actually used. We put the SNIA PDA
|
|
* in the same page as the cpu_data area. Note that there is a check in the setup
|
|
* code to verify that we don't overflow the page.
|
|
*
|
|
* Seems like we should should cache-line align the pda so that any changes in the
|
|
* size of the cpu_data area don't change cache layout. Should we align to 32, 64, 128
|
|
* or 512 boundary. Each has merits. For now, pick 128 but should be revisited later.
|
|
*/
|
|
DECLARE_PER_CPU(struct pda_s, pda_percpu);
|
|
|
|
#define pda (&__ia64_per_cpu_var(pda_percpu))
|
|
|
|
#define pdacpu(cpu) (&per_cpu(pda_percpu, cpu))
|
|
|
|
#endif /* _ASM_IA64_SN_PDA_H */
|