diff options
author | David S. Miller <davem@davemloft.net> | 2006-01-31 21:33:00 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:11:22 -0500 |
commit | 4da808c352c290d3f762933d44d4ab90c2fd65f3 (patch) | |
tree | da99326440777580a19c345a5b0d52fbf800042b /arch/sparc64/lib | |
parent | 4753eb2ac7022b999e5e484f1a5dc001dba22bd3 (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/lib')
-rw-r--r-- | arch/sparc64/lib/clear_page.S | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/sparc64/lib/clear_page.S b/arch/sparc64/lib/clear_page.S index b59884ef051d..cdc634bceba0 100644 --- a/arch/sparc64/lib/clear_page.S +++ b/arch/sparc64/lib/clear_page.S | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <asm/page.h> | 9 | #include <asm/page.h> |
10 | #include <asm/pgtable.h> | 10 | #include <asm/pgtable.h> |
11 | #include <asm/spitfire.h> | 11 | #include <asm/spitfire.h> |
12 | #include <asm/head.h> | ||
12 | 13 | ||
13 | /* What we used to do was lock a TLB entry into a specific | 14 | /* What we used to do was lock a TLB entry into a specific |
14 | * TLB slot, clear the page with interrupts disabled, then | 15 | * TLB slot, clear the page with interrupts disabled, then |
@@ -66,7 +67,8 @@ clear_user_page: /* %o0=dest, %o1=vaddr */ | |||
66 | wrpr %o4, PSTATE_IE, %pstate | 67 | wrpr %o4, PSTATE_IE, %pstate |
67 | stxa %o0, [%g3] ASI_DMMU | 68 | stxa %o0, [%g3] ASI_DMMU |
68 | stxa %g1, [%g0] ASI_DTLB_DATA_IN | 69 | stxa %g1, [%g0] ASI_DTLB_DATA_IN |
69 | flush %g6 | 70 | sethi %hi(KERNBASE), %g1 |
71 | flush %g1 | ||
70 | wrpr %o4, 0x0, %pstate | 72 | wrpr %o4, 0x0, %pstate |
71 | 73 | ||
72 | mov 1, %o4 | 74 | mov 1, %o4 |