diff options
Diffstat (limited to 'arch/sparc64/kernel/irq.c')
-rw-r--r-- | arch/sparc64/kernel/irq.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 4d9931d124ab..e1729e5189a3 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -939,25 +939,13 @@ void init_irqwork_curcpu(void) | |||
939 | 939 | ||
940 | static void __cpuinit register_one_mondo(unsigned long paddr, unsigned long type) | 940 | static void __cpuinit register_one_mondo(unsigned long paddr, unsigned long type) |
941 | { | 941 | { |
942 | register unsigned long func __asm__("%o5"); | 942 | unsigned long num_entries = 128; |
943 | register unsigned long arg0 __asm__("%o0"); | 943 | unsigned long status; |
944 | register unsigned long arg1 __asm__("%o1"); | 944 | |
945 | register unsigned long arg2 __asm__("%o2"); | 945 | status = sun4v_cpu_qconf(type, paddr, num_entries); |
946 | 946 | if (status != HV_EOK) { | |
947 | func = HV_FAST_CPU_QCONF; | 947 | prom_printf("SUN4V: sun4v_cpu_qconf(%lu:%lx:%lu) failed, " |
948 | arg0 = type; | 948 | "err %lu\n", type, paddr, num_entries, status); |
949 | arg1 = paddr; | ||
950 | arg2 = 128; /* XXX Implied by Niagara queue offsets. XXX */ | ||
951 | __asm__ __volatile__("ta %8" | ||
952 | : "=&r" (func), "=&r" (arg0), | ||
953 | "=&r" (arg1), "=&r" (arg2) | ||
954 | : "0" (func), "1" (arg0), | ||
955 | "2" (arg1), "3" (arg2), | ||
956 | "i" (HV_FAST_TRAP)); | ||
957 | |||
958 | if (arg0 != HV_EOK) { | ||
959 | prom_printf("SUN4V: cpu_qconf(%lu) failed with error %lu\n", | ||
960 | type, func); | ||
961 | prom_halt(); | 949 | prom_halt(); |
962 | } | 950 | } |
963 | } | 951 | } |