diff options
Diffstat (limited to 'include/asm-sparc64/cpudata.h')
| -rw-r--r-- | include/asm-sparc64/cpudata.h | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index e89922d6718c..03c385de7619 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
| @@ -17,11 +17,11 @@ | |||
| 17 | typedef struct { | 17 | typedef struct { |
| 18 | /* Dcache line 1 */ | 18 | /* Dcache line 1 */ |
| 19 | unsigned int __softirq_pending; /* must be 1st, see rtrap.S */ | 19 | unsigned int __softirq_pending; /* must be 1st, see rtrap.S */ |
| 20 | unsigned int __pad0_1; | 20 | unsigned int __pad0; |
| 21 | unsigned int __pad0_2; | ||
| 22 | unsigned int __pad1; | ||
| 23 | unsigned long clock_tick; /* %tick's per second */ | 21 | unsigned long clock_tick; /* %tick's per second */ |
| 24 | unsigned long udelay_val; | 22 | unsigned long udelay_val; |
| 23 | unsigned int __pad1; | ||
| 24 | unsigned int __pad2; | ||
| 25 | 25 | ||
| 26 | /* Dcache line 2, rarely used */ | 26 | /* Dcache line 2, rarely used */ |
| 27 | unsigned int dcache_size; | 27 | unsigned int dcache_size; |
| @@ -30,8 +30,8 @@ typedef struct { | |||
| 30 | unsigned int icache_line_size; | 30 | unsigned int icache_line_size; |
| 31 | unsigned int ecache_size; | 31 | unsigned int ecache_size; |
| 32 | unsigned int ecache_line_size; | 32 | unsigned int ecache_line_size; |
| 33 | int core_id; | ||
| 33 | unsigned int __pad3; | 34 | unsigned int __pad3; |
| 34 | unsigned int __pad4; | ||
| 35 | } cpuinfo_sparc; | 35 | } cpuinfo_sparc; |
| 36 | 36 | ||
| 37 | DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data); | 37 | DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data); |
| @@ -76,12 +76,18 @@ struct trap_per_cpu { | |||
| 76 | 76 | ||
| 77 | /* Dcache line 8: IRQ work list, and keep trap_block a power-of-2 in size. */ | 77 | /* Dcache line 8: IRQ work list, and keep trap_block a power-of-2 in size. */ |
| 78 | unsigned int irq_worklist; | 78 | unsigned int irq_worklist; |
| 79 | unsigned int __pad1; | 79 | unsigned int cpu_mondo_qmask; |
| 80 | unsigned long __pad2[3]; | 80 | unsigned int dev_mondo_qmask; |
| 81 | unsigned int resum_qmask; | ||
| 82 | unsigned int nonresum_qmask; | ||
| 83 | unsigned int __pad2[3]; | ||
| 81 | } __attribute__((aligned(64))); | 84 | } __attribute__((aligned(64))); |
| 82 | extern struct trap_per_cpu trap_block[NR_CPUS]; | 85 | extern struct trap_per_cpu trap_block[NR_CPUS]; |
| 83 | extern void init_cur_cpu_trap(struct thread_info *); | 86 | extern void init_cur_cpu_trap(struct thread_info *); |
| 84 | extern void setup_tba(void); | 87 | extern void setup_tba(void); |
| 88 | extern int ncpus_probed; | ||
| 89 | |||
| 90 | extern unsigned long real_hard_smp_processor_id(void); | ||
| 85 | 91 | ||
| 86 | struct cpuid_patch_entry { | 92 | struct cpuid_patch_entry { |
| 87 | unsigned int addr; | 93 | unsigned int addr; |
| @@ -122,6 +128,10 @@ extern struct sun4v_2insn_patch_entry __sun4v_2insn_patch, | |||
| 122 | #define TRAP_PER_CPU_TSB_HUGE 0xd0 | 128 | #define TRAP_PER_CPU_TSB_HUGE 0xd0 |
| 123 | #define TRAP_PER_CPU_TSB_HUGE_TEMP 0xd8 | 129 | #define TRAP_PER_CPU_TSB_HUGE_TEMP 0xd8 |
| 124 | #define TRAP_PER_CPU_IRQ_WORKLIST 0xe0 | 130 | #define TRAP_PER_CPU_IRQ_WORKLIST 0xe0 |
| 131 | #define TRAP_PER_CPU_CPU_MONDO_QMASK 0xe4 | ||
| 132 | #define TRAP_PER_CPU_DEV_MONDO_QMASK 0xe8 | ||
| 133 | #define TRAP_PER_CPU_RESUM_QMASK 0xec | ||
| 134 | #define TRAP_PER_CPU_NONRESUM_QMASK 0xf0 | ||
| 125 | 135 | ||
| 126 | #define TRAP_BLOCK_SZ_SHIFT 8 | 136 | #define TRAP_BLOCK_SZ_SHIFT 8 |
| 127 | 137 | ||
| @@ -192,7 +202,7 @@ extern struct sun4v_2insn_patch_entry __sun4v_2insn_patch, | |||
| 192 | * the calculations done by the macro mid-stream. | 202 | * the calculations done by the macro mid-stream. |
| 193 | */ | 203 | */ |
| 194 | #define LOAD_PER_CPU_BASE(DEST, THR, REG1, REG2, REG3) \ | 204 | #define LOAD_PER_CPU_BASE(DEST, THR, REG1, REG2, REG3) \ |
| 195 | ldub [THR + TI_CPU], REG1; \ | 205 | lduh [THR + TI_CPU], REG1; \ |
| 196 | sethi %hi(__per_cpu_shift), REG3; \ | 206 | sethi %hi(__per_cpu_shift), REG3; \ |
| 197 | sethi %hi(__per_cpu_base), REG2; \ | 207 | sethi %hi(__per_cpu_base), REG2; \ |
| 198 | ldx [REG3 + %lo(__per_cpu_shift)], REG3; \ | 208 | ldx [REG3 + %lo(__per_cpu_shift)], REG3; \ |
