diff options
Diffstat (limited to 'arch/sparc64/kernel/irq.c')
-rw-r--r-- | arch/sparc64/kernel/irq.c | 26 |
1 files changed, 1 insertions, 25 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index f7490ef629b9..3e48af2769d4 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -848,33 +848,9 @@ static void kill_prom_timer(void) | |||
848 | 848 | ||
849 | void init_irqwork_curcpu(void) | 849 | void init_irqwork_curcpu(void) |
850 | { | 850 | { |
851 | register struct irq_work_struct *workp asm("o2"); | ||
852 | register unsigned long tmp asm("o3"); | ||
853 | int cpu = hard_smp_processor_id(); | 851 | int cpu = hard_smp_processor_id(); |
854 | 852 | ||
855 | memset(__irq_work + cpu, 0, sizeof(*workp)); | 853 | memset(__irq_work + cpu, 0, sizeof(struct irq_work_struct)); |
856 | |||
857 | /* Make sure we are called with PSTATE_IE disabled. */ | ||
858 | __asm__ __volatile__("rdpr %%pstate, %0\n\t" | ||
859 | : "=r" (tmp)); | ||
860 | if (tmp & PSTATE_IE) { | ||
861 | prom_printf("BUG: init_irqwork_curcpu() called with " | ||
862 | "PSTATE_IE enabled, bailing.\n"); | ||
863 | __asm__ __volatile__("mov %%i7, %0\n\t" | ||
864 | : "=r" (tmp)); | ||
865 | prom_printf("BUG: Called from %lx\n", tmp); | ||
866 | prom_halt(); | ||
867 | } | ||
868 | |||
869 | /* Set interrupt globals. */ | ||
870 | workp = &__irq_work[cpu]; | ||
871 | __asm__ __volatile__( | ||
872 | "rdpr %%pstate, %0\n\t" | ||
873 | "wrpr %0, %1, %%pstate\n\t" | ||
874 | "mov %2, %%g6\n\t" | ||
875 | "wrpr %0, 0x0, %%pstate\n\t" | ||
876 | : "=&r" (tmp) | ||
877 | : "i" (PSTATE_IG), "r" (workp)); | ||
878 | } | 854 | } |
879 | 855 | ||
880 | /* Only invoked on boot processor. */ | 856 | /* Only invoked on boot processor. */ |