aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/winfixup.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-18 19:39:39 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:13:39 -0500
commit24c523ecc667dfeb28ef969cfabc531709bfffb8 (patch)
tree67760d3bb5c5c9f950e61b263fff836e677957ee /arch/sparc64/kernel/winfixup.S
parent6cc200db9500f53c6b884ea5d5bc7eabae7f5d5c (diff)
[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.S9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/sparc64/kernel/winfixup.S b/arch/sparc64/kernel/winfixup.S
index 161371370e9d..c4aa110a10e5 100644
--- a/arch/sparc64/kernel/winfixup.S
+++ b/arch/sparc64/kernel/winfixup.S
@@ -115,16 +115,17 @@ fill_fixup_mna:
115 ba,pt %xcc, etrap 115 ba,pt %xcc, etrap
116 rd %pc, %g7 116 rd %pc, %g7
117 sethi %hi(tlb_type), %g1 117 sethi %hi(tlb_type), %g1
118 mov %l4, %o1
119 lduw [%g1 + %lo(tlb_type)], %g1 118 lduw [%g1 + %lo(tlb_type)], %g1
120 mov %l5, %o2
121 cmp %g1, 3 119 cmp %g1, 3
122 bne,pt %icc, 1f 120 bne,pt %icc, 1f
123 add %sp, PTREGS_OFF, %o0 121 add %sp, PTREGS_OFF, %o0
122 mov %l4, %o2
124 call sun4v_do_mna 123 call sun4v_do_mna
125 nop 124 mov %l5, %o1
126 ba,a,pt %xcc, rtrap_clr_l6 125 ba,a,pt %xcc, rtrap_clr_l6
1271: call mem_address_unaligned 1261: mov %l4, %o1
127 mov %l5, %o2
128 call mem_address_unaligned
128 nop 129 nop
129 ba,a,pt %xcc, rtrap_clr_l6 130 ba,a,pt %xcc, rtrap_clr_l6
130 131