aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-01-31 21:33:00 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:11:22 -0500
commit4da808c352c290d3f762933d44d4ab90c2fd65f3 (patch)
treeda99326440777580a19c345a5b0d52fbf800042b /arch/sparc64/kernel
parent4753eb2ac7022b999e5e484f1a5dc001dba22bd3 (diff)
[SPARC64]: Fix bogus flush instruction usage.
Some of the trap code was still assuming that alternate global %g6 was hard coded with current_thread_info(). Let's just consistently flush at KERNBASE when we need a pipeline synchronization. That's locked into the TLB and will always work. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r--arch/sparc64/kernel/etrap.S6
-rw-r--r--arch/sparc64/kernel/rtrap.S3
-rw-r--r--arch/sparc64/kernel/winfixup.S3
3 files changed, 8 insertions, 4 deletions
diff --git a/arch/sparc64/kernel/etrap.S b/arch/sparc64/kernel/etrap.S
index 8b3b6d720ed5..db7681017299 100644
--- a/arch/sparc64/kernel/etrap.S
+++ b/arch/sparc64/kernel/etrap.S
@@ -72,7 +72,8 @@ etrap_irq:
72 sethi %hi(sparc64_kern_pri_context), %g2 72 sethi %hi(sparc64_kern_pri_context), %g2
73 ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3 73 ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3
74 stxa %g3, [%l4] ASI_DMMU 74 stxa %g3, [%l4] ASI_DMMU
75 flush %l6 75 sethi %hi(KERNBASE), %l4
76 flush %l4
76 wr %g0, ASI_AIUS, %asi 77 wr %g0, ASI_AIUS, %asi
772: wrpr %g0, 0x0, %tl 782: wrpr %g0, 0x0, %tl
78 mov %g4, %l4 79 mov %g4, %l4
@@ -215,7 +216,8 @@ scetrap:
215 sethi %hi(sparc64_kern_pri_context), %g2 216 sethi %hi(sparc64_kern_pri_context), %g2
216 ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3 217 ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3
217 stxa %g3, [%l4] ASI_DMMU 218 stxa %g3, [%l4] ASI_DMMU
218 flush %l6 219 sethi %hi(KERNBASE), %l4
220 flush %l4
219 221
220 mov ASI_AIUS, %l7 222 mov ASI_AIUS, %l7
2212: mov %g4, %l4 2232: mov %g4, %l4
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S
index 5a62ec5d531c..89794ebdcbcf 100644
--- a/arch/sparc64/kernel/rtrap.S
+++ b/arch/sparc64/kernel/rtrap.S
@@ -259,7 +259,8 @@ rt_continue: ldx [%sp + PTREGS_OFF + PT_V9_G1], %g1
259 ldx [%l1 + %lo(sparc64_kern_pri_nuc_bits)], %l1 259 ldx [%l1 + %lo(sparc64_kern_pri_nuc_bits)], %l1
260 or %l0, %l1, %l0 260 or %l0, %l1, %l0
261 stxa %l0, [%l7] ASI_DMMU 261 stxa %l0, [%l7] ASI_DMMU
262 flush %g6 262 sethi %hi(KERNBASE), %l7
263 flush %l7
263 rdpr %wstate, %l1 264 rdpr %wstate, %l1
264 rdpr %otherwin, %l2 265 rdpr %otherwin, %l2
265 srl %l1, 3, %l1 266 srl %l1, 3, %l1
diff --git a/arch/sparc64/kernel/winfixup.S b/arch/sparc64/kernel/winfixup.S
index de588036df43..c0545d089c96 100644
--- a/arch/sparc64/kernel/winfixup.S
+++ b/arch/sparc64/kernel/winfixup.S
@@ -20,7 +20,8 @@ set_pcontext:
20 ldx [%l1 + %lo(sparc64_kern_pri_context)], %l1 20 ldx [%l1 + %lo(sparc64_kern_pri_context)], %l1
21 mov PRIMARY_CONTEXT, %g1 21 mov PRIMARY_CONTEXT, %g1
22 stxa %l1, [%g1] ASI_DMMU 22 stxa %l1, [%g1] ASI_DMMU
23 flush %g6 23 sethi %hi(KERNBASE), %l1
24 flush %l1
24 retl 25 retl
25 nop 26 nop
26 27