 daecbf58a5
			
		
	
	
	daecbf58a5
	
	
	
		
			
			This keeps us from having to use kstat_irqs_cpu() from the NMI handler, the former of which is a profiled function. Instead we use a currently empty slot in the cpu_data Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /* cpudata.h: Per-cpu parameters.
 | |
|  *
 | |
|  * Copyright (C) 2003, 2005, 2006 David S. Miller (davem@davemloft.net)
 | |
|  */
 | |
| 
 | |
| #ifndef _SPARC64_CPUDATA_H
 | |
| #define _SPARC64_CPUDATA_H
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| 
 | |
| #include <linux/percpu.h>
 | |
| #include <linux/threads.h>
 | |
| 
 | |
| typedef struct {
 | |
| 	/* Dcache line 1 */
 | |
| 	unsigned int	__softirq_pending; /* must be 1st, see rtrap.S */
 | |
| 	unsigned int	__nmi_count;
 | |
| 	unsigned long	clock_tick;	/* %tick's per second */
 | |
| 	unsigned long	__pad;
 | |
| 	unsigned int	irq0_irqs;
 | |
| 	unsigned int	__pad2;
 | |
| 
 | |
| 	/* Dcache line 2, rarely used */
 | |
| 	unsigned int	dcache_size;
 | |
| 	unsigned int	dcache_line_size;
 | |
| 	unsigned int	icache_size;
 | |
| 	unsigned int	icache_line_size;
 | |
| 	unsigned int	ecache_size;
 | |
| 	unsigned int	ecache_line_size;
 | |
| 	int		core_id;
 | |
| 	int		proc_id;
 | |
| } cpuinfo_sparc;
 | |
| 
 | |
| DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data);
 | |
| #define cpu_data(__cpu)		per_cpu(__cpu_data, (__cpu))
 | |
| #define local_cpu_data()	__get_cpu_var(__cpu_data)
 | |
| 
 | |
| extern const struct seq_operations cpuinfo_op;
 | |
| 
 | |
| #endif /* !(__ASSEMBLY__) */
 | |
| 
 | |
| #include <asm/trap_block.h>
 | |
| 
 | |
| #endif /* _SPARC64_CPUDATA_H */
 |