summaryrefslogtreecommitdiffstats
path: root/arch/sparc64/mm/ultra.S
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-08-08 19:25:53 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-08-08 19:25:53 +0000
commit57445428488a2862840c4d7c96d7746c11031aaf (patch)
tree60b88b3a21896a33ee4dccc727d88b745a9ff731 /arch/sparc64/mm/ultra.S
parent2e837819b1563679b55363d469239fdf4f17fbbb (diff)
Merge with Linu 2.4.0-test6-pre6.
Diffstat (limited to 'arch/sparc64/mm/ultra.S')
-rw-r--r--arch/sparc64/mm/ultra.S26
1 files changed, 25 insertions, 1 deletions
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S
index 85e62ad25..7940218d2 100644
--- a/arch/sparc64/mm/ultra.S
+++ b/arch/sparc64/mm/ultra.S
@@ -1,4 +1,4 @@
-/* $Id: ultra.S,v 1.44 2000/07/10 20:57:35 davem Exp $
+/* $Id: ultra.S,v 1.46 2000/08/05 13:30:33 davem Exp $
* ultra.S: Don't expand these all over the place...
*
* Copyright (C) 1997, 2000 David S. Miller (davem@redhat.com)
@@ -206,6 +206,30 @@ iflush2:sub %o1, 0x20, %g3
flush %g6
ba,a,pt %xcc, 3b
+ .align 64
+ .globl __flush_dcache_page
+__flush_dcache_page:
+ sub %o0, %g4, %o0
+ clr %o1
+ srlx %o0, 11, %o0
+ sethi %hi(1 << 14), %o2
+1: ldxa [%o1] ASI_DCACHE_TAG, %o3
+ andn %o3, 0x3, %o3
+ cmp %o0, %o3
+ bne,pt %xcc, 2f
+ nop
+ stxa %g0, [%o1] ASI_DCACHE_TAG
+ membar #Sync
+2: add %o1, (1 << 5), %o1
+ cmp %o1, %o2
+ bne,pt %xcc, 1b
+ nop
+ /* The I-cache does not snoop local stores so we
+ * better flush that too.
+ */
+ ba,pt %xcc, __flush_icache_page
+ sllx %o0, 11, %o0
+
.align 32
__prefill_dtlb:
rdpr %pstate, %g7