diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-10 01:57:21 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:14 -0500 |
commit | 164c220fa3947abbada65329d168f421b461a2a7 (patch) | |
tree | 1a10418ccf896f1f9209c2206bedf87915b63bfd /arch/sparc64/mm | |
parent | dedacf623283cb24933ec9f7d5bf539f19173cd4 (diff) |
[SPARC64]: Fix hypervisor call arg passing.
Function goes in %o5, args go in %o0 --> %o5.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/mm')
-rw-r--r-- | arch/sparc64/mm/init.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index e602b857071a..7faba33202a9 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -518,11 +518,11 @@ static void __init hypervisor_tlb_lock(unsigned long vaddr, | |||
518 | unsigned long pte, | 518 | unsigned long pte, |
519 | unsigned long mmu) | 519 | unsigned long mmu) |
520 | { | 520 | { |
521 | register unsigned long func asm("%o0"); | 521 | register unsigned long func asm("%o5"); |
522 | register unsigned long arg0 asm("%o1"); | 522 | register unsigned long arg0 asm("%o0"); |
523 | register unsigned long arg1 asm("%o2"); | 523 | register unsigned long arg1 asm("%o1"); |
524 | register unsigned long arg2 asm("%o3"); | 524 | register unsigned long arg2 asm("%o2"); |
525 | register unsigned long arg3 asm("%o4"); | 525 | register unsigned long arg3 asm("%o3"); |
526 | 526 | ||
527 | func = HV_FAST_MMU_MAP_PERM_ADDR; | 527 | func = HV_FAST_MMU_MAP_PERM_ADDR; |
528 | arg0 = vaddr; | 528 | arg0 = vaddr; |
@@ -1112,18 +1112,18 @@ static void __init tsb_phys_patch(void) | |||
1112 | /* Register this cpu's fault status area with the hypervisor. */ | 1112 | /* Register this cpu's fault status area with the hypervisor. */ |
1113 | void __cpuinit sun4v_register_fault_status(void) | 1113 | void __cpuinit sun4v_register_fault_status(void) |
1114 | { | 1114 | { |
1115 | register unsigned long func asm("%o5"); | ||
1115 | register unsigned long arg0 asm("%o0"); | 1116 | register unsigned long arg0 asm("%o0"); |
1116 | register unsigned long arg1 asm("%o1"); | ||
1117 | int cpu = hard_smp_processor_id(); | 1117 | int cpu = hard_smp_processor_id(); |
1118 | struct trap_per_cpu *tb = &trap_block[cpu]; | 1118 | struct trap_per_cpu *tb = &trap_block[cpu]; |
1119 | unsigned long pa; | 1119 | unsigned long pa; |
1120 | 1120 | ||
1121 | pa = kern_base + ((unsigned long) tb - KERNBASE); | 1121 | pa = kern_base + ((unsigned long) tb - KERNBASE); |
1122 | arg0 = HV_FAST_MMU_FAULT_AREA_CONF; | 1122 | func = HV_FAST_MMU_FAULT_AREA_CONF; |
1123 | arg1 = pa; | 1123 | arg0 = pa; |
1124 | __asm__ __volatile__("ta %4" | 1124 | __asm__ __volatile__("ta %4" |
1125 | : "=&r" (arg0), "=&r" (arg1) | 1125 | : "=&r" (func), "=&r" (arg0) |
1126 | : "0" (arg0), "1" (arg1), | 1126 | : "0" (func), "1" (arg0), |
1127 | "i" (HV_FAST_TRAP)); | 1127 | "i" (HV_FAST_TRAP)); |
1128 | } | 1128 | } |
1129 | 1129 | ||