diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-18 16:39:39 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 01:13:39 -0800 |
commit | 24c523ecc667dfeb28ef969cfabc531709bfffb8 (patch) | |
tree | 67760d3bb5c5c9f950e61b263fff836e677957ee /arch/sparc64/kernel/winfixup.S | |
parent | 6cc200db9500f53c6b884ea5d5bc7eabae7f5d5c (diff) | |
download | op-kernel-dev-24c523ecc667dfeb28ef969cfabc531709bfffb8.zip op-kernel-dev-24c523ecc667dfeb28ef969cfabc531709bfffb8.tar.gz |
[SPARC64]: Fix unaligned access winfxup handling on SUN4V.
Another case where we have to force ourselves into global register
level one. Also make sure the arguments passed to sun4v_do_mna() are
correct.
This area actually needs some more work, for example spill fixup is
not necessarily going to do the right thing for this case.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/winfixup.S')
-rw-r--r-- | arch/sparc64/kernel/winfixup.S | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/sparc64/kernel/winfixup.S b/arch/sparc64/kernel/winfixup.S index 1613713..c4aa110 100644 --- a/arch/sparc64/kernel/winfixup.S +++ b/arch/sparc64/kernel/winfixup.S @@ -115,16 +115,17 @@ fill_fixup_mna: ba,pt %xcc, etrap rd %pc, %g7 sethi %hi(tlb_type), %g1 - mov %l4, %o1 lduw [%g1 + %lo(tlb_type)], %g1 - mov %l5, %o2 cmp %g1, 3 bne,pt %icc, 1f add %sp, PTREGS_OFF, %o0 + mov %l4, %o2 call sun4v_do_mna - nop + mov %l5, %o1 ba,a,pt %xcc, rtrap_clr_l6 -1: call mem_address_unaligned +1: mov %l4, %o1 + mov %l5, %o2 + call mem_address_unaligned nop ba,a,pt %xcc, rtrap_clr_l6 |