diff options
Diffstat (limited to 'arch/sparc/kernel/traps_64.c')
| -rw-r--r-- | arch/sparc/kernel/traps_64.c | 166 | 
1 files changed, 90 insertions, 76 deletions
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index d809c4ebb48..10f7bb9fc14 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c @@ -2509,6 +2509,7 @@ void do_getpsr(struct pt_regs *regs)  }  struct trap_per_cpu trap_block[NR_CPUS]; +EXPORT_SYMBOL(trap_block);  /* This can get invoked before sched_init() so play it super safe   * and use hard_smp_processor_id(). @@ -2530,84 +2531,97 @@ extern void tsb_config_offsets_are_bolixed_dave(void);  void __init trap_init(void)  {  	/* Compile time sanity check. */ -	if (TI_TASK != offsetof(struct thread_info, task) || -	    TI_FLAGS != offsetof(struct thread_info, flags) || -	    TI_CPU != offsetof(struct thread_info, cpu) || -	    TI_FPSAVED != offsetof(struct thread_info, fpsaved) || -	    TI_KSP != offsetof(struct thread_info, ksp) || -	    TI_FAULT_ADDR != offsetof(struct thread_info, fault_address) || -	    TI_KREGS != offsetof(struct thread_info, kregs) || -	    TI_UTRAPS != offsetof(struct thread_info, utraps) || -	    TI_EXEC_DOMAIN != offsetof(struct thread_info, exec_domain) || -	    TI_REG_WINDOW != offsetof(struct thread_info, reg_window) || -	    TI_RWIN_SPTRS != offsetof(struct thread_info, rwbuf_stkptrs) || -	    TI_GSR != offsetof(struct thread_info, gsr) || -	    TI_XFSR != offsetof(struct thread_info, xfsr) || -	    TI_USER_CNTD0 != offsetof(struct thread_info, user_cntd0) || -	    TI_USER_CNTD1 != offsetof(struct thread_info, user_cntd1) || -	    TI_KERN_CNTD0 != offsetof(struct thread_info, kernel_cntd0) || -	    TI_KERN_CNTD1 != offsetof(struct thread_info, kernel_cntd1) || -	    TI_PCR != offsetof(struct thread_info, pcr_reg) || -	    TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) || -	    TI_NEW_CHILD != offsetof(struct thread_info, new_child) || -	    TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) || -	    TI_RESTART_BLOCK != offsetof(struct thread_info, restart_block) || -	    TI_KUNA_REGS != offsetof(struct thread_info, kern_una_regs) || -	    TI_KUNA_INSN != offsetof(struct thread_info, kern_una_insn) || -	    TI_FPREGS != offsetof(struct thread_info, fpregs) || -	    (TI_FPREGS & (64 - 1))) -		thread_info_offsets_are_bolixed_dave(); +	BUILD_BUG_ON(TI_TASK != offsetof(struct thread_info, task) || +		     TI_FLAGS != offsetof(struct thread_info, flags) || +		     TI_CPU != offsetof(struct thread_info, cpu) || +		     TI_FPSAVED != offsetof(struct thread_info, fpsaved) || +		     TI_KSP != offsetof(struct thread_info, ksp) || +		     TI_FAULT_ADDR != offsetof(struct thread_info, +					       fault_address) || +		     TI_KREGS != offsetof(struct thread_info, kregs) || +		     TI_UTRAPS != offsetof(struct thread_info, utraps) || +		     TI_EXEC_DOMAIN != offsetof(struct thread_info, +						exec_domain) || +		     TI_REG_WINDOW != offsetof(struct thread_info, +					       reg_window) || +		     TI_RWIN_SPTRS != offsetof(struct thread_info, +					       rwbuf_stkptrs) || +		     TI_GSR != offsetof(struct thread_info, gsr) || +		     TI_XFSR != offsetof(struct thread_info, xfsr) || +		     TI_USER_CNTD0 != offsetof(struct thread_info, +					       user_cntd0) || +		     TI_USER_CNTD1 != offsetof(struct thread_info, +					       user_cntd1) || +		     TI_KERN_CNTD0 != offsetof(struct thread_info, +					       kernel_cntd0) || +		     TI_KERN_CNTD1 != offsetof(struct thread_info, +					       kernel_cntd1) || +		     TI_PCR != offsetof(struct thread_info, pcr_reg) || +		     TI_PRE_COUNT != offsetof(struct thread_info, +					      preempt_count) || +		     TI_NEW_CHILD != offsetof(struct thread_info, new_child) || +		     TI_SYS_NOERROR != offsetof(struct thread_info, +						syscall_noerror) || +		     TI_RESTART_BLOCK != offsetof(struct thread_info, +						  restart_block) || +		     TI_KUNA_REGS != offsetof(struct thread_info, +					      kern_una_regs) || +		     TI_KUNA_INSN != offsetof(struct thread_info, +					      kern_una_insn) || +		     TI_FPREGS != offsetof(struct thread_info, fpregs) || +		     (TI_FPREGS & (64 - 1))); -	if (TRAP_PER_CPU_THREAD != offsetof(struct trap_per_cpu, thread) || -	    (TRAP_PER_CPU_PGD_PADDR != -	     offsetof(struct trap_per_cpu, pgd_paddr)) || -	    (TRAP_PER_CPU_CPU_MONDO_PA != -	     offsetof(struct trap_per_cpu, cpu_mondo_pa)) || -	    (TRAP_PER_CPU_DEV_MONDO_PA != -	     offsetof(struct trap_per_cpu, dev_mondo_pa)) || -	    (TRAP_PER_CPU_RESUM_MONDO_PA != -	     offsetof(struct trap_per_cpu, resum_mondo_pa)) || -	    (TRAP_PER_CPU_RESUM_KBUF_PA != -	     offsetof(struct trap_per_cpu, resum_kernel_buf_pa)) || -	    (TRAP_PER_CPU_NONRESUM_MONDO_PA != -	     offsetof(struct trap_per_cpu, nonresum_mondo_pa)) || -	    (TRAP_PER_CPU_NONRESUM_KBUF_PA != -	     offsetof(struct trap_per_cpu, nonresum_kernel_buf_pa)) || -	    (TRAP_PER_CPU_FAULT_INFO != -	     offsetof(struct trap_per_cpu, fault_info)) || -	    (TRAP_PER_CPU_CPU_MONDO_BLOCK_PA != -	     offsetof(struct trap_per_cpu, cpu_mondo_block_pa)) || -	    (TRAP_PER_CPU_CPU_LIST_PA != -	     offsetof(struct trap_per_cpu, cpu_list_pa)) || -	    (TRAP_PER_CPU_TSB_HUGE != -	     offsetof(struct trap_per_cpu, tsb_huge)) || -	    (TRAP_PER_CPU_TSB_HUGE_TEMP != -	     offsetof(struct trap_per_cpu, tsb_huge_temp)) || -	    (TRAP_PER_CPU_IRQ_WORKLIST_PA != -	     offsetof(struct trap_per_cpu, irq_worklist_pa)) || -	    (TRAP_PER_CPU_CPU_MONDO_QMASK != -	     offsetof(struct trap_per_cpu, cpu_mondo_qmask)) || -	    (TRAP_PER_CPU_DEV_MONDO_QMASK != -	     offsetof(struct trap_per_cpu, dev_mondo_qmask)) || -	    (TRAP_PER_CPU_RESUM_QMASK != -	     offsetof(struct trap_per_cpu, resum_qmask)) || -	    (TRAP_PER_CPU_NONRESUM_QMASK != -	     offsetof(struct trap_per_cpu, nonresum_qmask))) -		trap_per_cpu_offsets_are_bolixed_dave(); +	BUILD_BUG_ON(TRAP_PER_CPU_THREAD != offsetof(struct trap_per_cpu, +						     thread) || +		     (TRAP_PER_CPU_PGD_PADDR != +		      offsetof(struct trap_per_cpu, pgd_paddr)) || +		     (TRAP_PER_CPU_CPU_MONDO_PA != +		      offsetof(struct trap_per_cpu, cpu_mondo_pa)) || +		     (TRAP_PER_CPU_DEV_MONDO_PA != +		      offsetof(struct trap_per_cpu, dev_mondo_pa)) || +		     (TRAP_PER_CPU_RESUM_MONDO_PA != +		      offsetof(struct trap_per_cpu, resum_mondo_pa)) || +		     (TRAP_PER_CPU_RESUM_KBUF_PA != +		      offsetof(struct trap_per_cpu, resum_kernel_buf_pa)) || +		     (TRAP_PER_CPU_NONRESUM_MONDO_PA != +		      offsetof(struct trap_per_cpu, nonresum_mondo_pa)) || +		     (TRAP_PER_CPU_NONRESUM_KBUF_PA != +		      offsetof(struct trap_per_cpu, nonresum_kernel_buf_pa)) || +		     (TRAP_PER_CPU_FAULT_INFO != +		      offsetof(struct trap_per_cpu, fault_info)) || +		     (TRAP_PER_CPU_CPU_MONDO_BLOCK_PA != +		      offsetof(struct trap_per_cpu, cpu_mondo_block_pa)) || +		     (TRAP_PER_CPU_CPU_LIST_PA != +		      offsetof(struct trap_per_cpu, cpu_list_pa)) || +		     (TRAP_PER_CPU_TSB_HUGE != +		      offsetof(struct trap_per_cpu, tsb_huge)) || +		     (TRAP_PER_CPU_TSB_HUGE_TEMP != +		      offsetof(struct trap_per_cpu, tsb_huge_temp)) || +		     (TRAP_PER_CPU_IRQ_WORKLIST_PA != +		      offsetof(struct trap_per_cpu, irq_worklist_pa)) || +		     (TRAP_PER_CPU_CPU_MONDO_QMASK != +		      offsetof(struct trap_per_cpu, cpu_mondo_qmask)) || +		     (TRAP_PER_CPU_DEV_MONDO_QMASK != +		      offsetof(struct trap_per_cpu, dev_mondo_qmask)) || +		     (TRAP_PER_CPU_RESUM_QMASK != +		      offsetof(struct trap_per_cpu, resum_qmask)) || +		     (TRAP_PER_CPU_NONRESUM_QMASK != +		      offsetof(struct trap_per_cpu, nonresum_qmask)) || +		     (TRAP_PER_CPU_PER_CPU_BASE != +		      offsetof(struct trap_per_cpu, __per_cpu_base))); -	if ((TSB_CONFIG_TSB != -	     offsetof(struct tsb_config, tsb)) || -	    (TSB_CONFIG_RSS_LIMIT != -	     offsetof(struct tsb_config, tsb_rss_limit)) || -	    (TSB_CONFIG_NENTRIES != -	     offsetof(struct tsb_config, tsb_nentries)) || -	    (TSB_CONFIG_REG_VAL != -	     offsetof(struct tsb_config, tsb_reg_val)) || -	    (TSB_CONFIG_MAP_VADDR != -	     offsetof(struct tsb_config, tsb_map_vaddr)) || -	    (TSB_CONFIG_MAP_PTE != -	     offsetof(struct tsb_config, tsb_map_pte))) -		tsb_config_offsets_are_bolixed_dave(); +	BUILD_BUG_ON((TSB_CONFIG_TSB != +		      offsetof(struct tsb_config, tsb)) || +		     (TSB_CONFIG_RSS_LIMIT != +		      offsetof(struct tsb_config, tsb_rss_limit)) || +		     (TSB_CONFIG_NENTRIES != +		      offsetof(struct tsb_config, tsb_nentries)) || +		     (TSB_CONFIG_REG_VAL != +		      offsetof(struct tsb_config, tsb_reg_val)) || +		     (TSB_CONFIG_MAP_VADDR != +		      offsetof(struct tsb_config, tsb_map_vaddr)) || +		     (TSB_CONFIG_MAP_PTE != +		      offsetof(struct tsb_config, tsb_map_pte)));  	/* Attach to the address space of init_task.  On SMP we  	 * do this in smp.c:smp_callin for other cpus.  |