diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 01:06:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 01:06:24 -0400 |
commit | e98bae7592a44bdce2e49ccd64f3c7ffe244a0f6 (patch) | |
tree | 1887da3331c5214c330226506d229222b454e960 /arch/sparc/include/asm/leon.h | |
parent | 4b382d0643603819e8b48da58efc254cabc22574 (diff) | |
parent | f400bdb1d6de4344980cf39041497b288090dd33 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6: (28 commits)
sparc32: fix build, fix missing cpu_relax declaration
SCHED_TTWU_QUEUE is not longer needed since sparc32 now implements IPI
sparc32,leon: Remove unnecessary page_address calls in LEON DMA API.
sparc: convert old cpumask API into new one
sparc32, sun4d: Implemented SMP IPIs support for SUN4D machines
sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines
sparc32,leon: Implemented SMP IPIs for LEON CPU
sparc32: implement SMP IPIs using the generic functions
sparc32,leon: SMP power down implementation
sparc32,leon: added some SMP comments
sparc: add {read,write}*_be routines
sparc32,leon: don't rely on bootloader to mask IRQs
sparc32,leon: operate on boot-cpu IRQ controller registers
sparc32: always define boot_cpu_id
sparc32: removed unused code, implemented by generic code
sparc32: avoid build warning at mm/percpu.c:1647
sparc32: always register a PROM based early console
sparc32: probe for cpu info only during startup
sparc: consolidate show_cpuinfo in cpu.c
sparc32,leon: implement genirq CPU affinity
...
Diffstat (limited to 'arch/sparc/include/asm/leon.h')
-rw-r--r-- | arch/sparc/include/asm/leon.h | 41 |
1 files changed, 10 insertions, 31 deletions
diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h index c04f96fb753c..6bdaf1e43d2a 100644 --- a/arch/sparc/include/asm/leon.h +++ b/arch/sparc/include/asm/leon.h | |||
@@ -52,29 +52,6 @@ | |||
52 | #define LEON_DIAGF_VALID 0x2000 | 52 | #define LEON_DIAGF_VALID 0x2000 |
53 | #define LEON_DIAGF_VALID_SHIFT 13 | 53 | #define LEON_DIAGF_VALID_SHIFT 13 |
54 | 54 | ||
55 | /* | ||
56 | * Interrupt Sources | ||
57 | * | ||
58 | * The interrupt source numbers directly map to the trap type and to | ||
59 | * the bits used in the Interrupt Clear, Interrupt Force, Interrupt Mask, | ||
60 | * and the Interrupt Pending Registers. | ||
61 | */ | ||
62 | #define LEON_INTERRUPT_CORRECTABLE_MEMORY_ERROR 1 | ||
63 | #define LEON_INTERRUPT_UART_1_RX_TX 2 | ||
64 | #define LEON_INTERRUPT_UART_0_RX_TX 3 | ||
65 | #define LEON_INTERRUPT_EXTERNAL_0 4 | ||
66 | #define LEON_INTERRUPT_EXTERNAL_1 5 | ||
67 | #define LEON_INTERRUPT_EXTERNAL_2 6 | ||
68 | #define LEON_INTERRUPT_EXTERNAL_3 7 | ||
69 | #define LEON_INTERRUPT_TIMER1 8 | ||
70 | #define LEON_INTERRUPT_TIMER2 9 | ||
71 | #define LEON_INTERRUPT_EMPTY1 10 | ||
72 | #define LEON_INTERRUPT_EMPTY2 11 | ||
73 | #define LEON_INTERRUPT_OPEN_ETH 12 | ||
74 | #define LEON_INTERRUPT_EMPTY4 13 | ||
75 | #define LEON_INTERRUPT_EMPTY5 14 | ||
76 | #define LEON_INTERRUPT_EMPTY6 15 | ||
77 | |||
78 | /* irq masks */ | 55 | /* irq masks */ |
79 | #define LEON_HARD_INT(x) (1 << (x)) /* irq 0-15 */ | 56 | #define LEON_HARD_INT(x) (1 << (x)) /* irq 0-15 */ |
80 | #define LEON_IRQMASK_R 0x0000fffe /* bit 15- 1 of lregs.irqmask */ | 57 | #define LEON_IRQMASK_R 0x0000fffe /* bit 15- 1 of lregs.irqmask */ |
@@ -183,7 +160,6 @@ static inline void leon_srmmu_enabletlb(void) | |||
183 | /* macro access for leon_readnobuffer_reg() */ | 160 | /* macro access for leon_readnobuffer_reg() */ |
184 | #define LEON_BYPASSCACHE_LOAD_VA(x) leon_readnobuffer_reg((unsigned long)(x)) | 161 | #define LEON_BYPASSCACHE_LOAD_VA(x) leon_readnobuffer_reg((unsigned long)(x)) |
185 | 162 | ||
186 | extern void sparc_leon_eirq_register(int eirq); | ||
187 | extern void leon_init(void); | 163 | extern void leon_init(void); |
188 | extern void leon_switch_mm(void); | 164 | extern void leon_switch_mm(void); |
189 | extern void leon_init_IRQ(void); | 165 | extern void leon_init_IRQ(void); |
@@ -239,8 +215,8 @@ static inline int sparc_leon3_cpuid(void) | |||
239 | #endif /*!__ASSEMBLY__*/ | 215 | #endif /*!__ASSEMBLY__*/ |
240 | 216 | ||
241 | #ifdef CONFIG_SMP | 217 | #ifdef CONFIG_SMP |
242 | # define LEON3_IRQ_RESCHEDULE 13 | 218 | # define LEON3_IRQ_IPI_DEFAULT 13 |
243 | # define LEON3_IRQ_TICKER (leon_percpu_timer_dev[0].irq) | 219 | # define LEON3_IRQ_TICKER (leon3_ticker_irq) |
244 | # define LEON3_IRQ_CROSS_CALL 15 | 220 | # define LEON3_IRQ_CROSS_CALL 15 |
245 | #endif | 221 | #endif |
246 | 222 | ||
@@ -339,9 +315,9 @@ struct leon2_cacheregs { | |||
339 | #include <linux/interrupt.h> | 315 | #include <linux/interrupt.h> |
340 | 316 | ||
341 | struct device_node; | 317 | struct device_node; |
342 | extern int sparc_leon_eirq_get(int eirq, int cpu); | 318 | extern unsigned int leon_build_device_irq(unsigned int real_irq, |
343 | extern irqreturn_t sparc_leon_eirq_isr(int dummy, void *dev_id); | 319 | irq_flow_handler_t flow_handler, |
344 | extern void sparc_leon_eirq_register(int eirq); | 320 | const char *name, int do_ack); |
345 | extern void leon_clear_clock_irq(void); | 321 | extern void leon_clear_clock_irq(void); |
346 | extern void leon_load_profile_irq(int cpu, unsigned int limit); | 322 | extern void leon_load_profile_irq(int cpu, unsigned int limit); |
347 | extern void leon_init_timers(irq_handler_t counter_fn); | 323 | extern void leon_init_timers(irq_handler_t counter_fn); |
@@ -358,6 +334,7 @@ extern void leon3_getCacheRegs(struct leon3_cacheregs *regs); | |||
358 | extern int leon_flush_needed(void); | 334 | extern int leon_flush_needed(void); |
359 | extern void leon_switch_mm(void); | 335 | extern void leon_switch_mm(void); |
360 | extern int srmmu_swprobe_trace; | 336 | extern int srmmu_swprobe_trace; |
337 | extern int leon3_ticker_irq; | ||
361 | 338 | ||
362 | #ifdef CONFIG_SMP | 339 | #ifdef CONFIG_SMP |
363 | extern int leon_smp_nrcpus(void); | 340 | extern int leon_smp_nrcpus(void); |
@@ -366,17 +343,19 @@ extern void leon_smp_done(void); | |||
366 | extern void leon_boot_cpus(void); | 343 | extern void leon_boot_cpus(void); |
367 | extern int leon_boot_one_cpu(int i); | 344 | extern int leon_boot_one_cpu(int i); |
368 | void leon_init_smp(void); | 345 | void leon_init_smp(void); |
369 | extern void cpu_probe(void); | ||
370 | extern void cpu_idle(void); | 346 | extern void cpu_idle(void); |
371 | extern void init_IRQ(void); | 347 | extern void init_IRQ(void); |
372 | extern void cpu_panic(void); | 348 | extern void cpu_panic(void); |
373 | extern int __leon_processor_id(void); | 349 | extern int __leon_processor_id(void); |
374 | void leon_enable_irq_cpu(unsigned int irq_nr, unsigned int cpu); | 350 | void leon_enable_irq_cpu(unsigned int irq_nr, unsigned int cpu); |
351 | extern irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused); | ||
375 | 352 | ||
376 | extern unsigned int real_irq_entry[], smpleon_ticker[]; | 353 | extern unsigned int real_irq_entry[]; |
354 | extern unsigned int smpleon_ipi[]; | ||
377 | extern unsigned int patchme_maybe_smp_msg[]; | 355 | extern unsigned int patchme_maybe_smp_msg[]; |
378 | extern unsigned int t_nmi[], linux_trap_ipi15_leon[]; | 356 | extern unsigned int t_nmi[], linux_trap_ipi15_leon[]; |
379 | extern unsigned int linux_trap_ipi15_sun4m[]; | 357 | extern unsigned int linux_trap_ipi15_sun4m[]; |
358 | extern int leon_ipi_irq; | ||
380 | 359 | ||
381 | #endif /* CONFIG_SMP */ | 360 | #endif /* CONFIG_SMP */ |
382 | 361 | ||