diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2006-12-27 19:12:50 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2006-12-27 19:12:50 +0000 |
commit | 978ac4b99de8fa84fe3f8a8963cb3daccd77dc87 (patch) | |
tree | 1bbc05f0d9357a3478bdb74ee700d76447de2cb9 /sys/arch | |
parent | 16eff0890adf08347f2a7afec76d60f1ee69776c (diff) |
Patch a few more D-cache flush instructions on UltraSPARC-III.
ok miod@
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/sparc64/sparc64/locore.s | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/arch/sparc64/sparc64/locore.s b/sys/arch/sparc64/sparc64/locore.s index 73c151c9040..bc774ec95cd 100644 --- a/sys/arch/sparc64/sparc64/locore.s +++ b/sys/arch/sparc64/sparc64/locore.s @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.s,v 1.65 2006/12/23 12:28:11 kettenis Exp $ */ +/* $OpenBSD: locore.s,v 1.66 2006/12/27 19:12:49 kettenis Exp $ */ /* $NetBSD: locore.s,v 1.137 2001/08/13 06:10:10 jdolecek Exp $ */ /* @@ -4811,6 +4811,7 @@ _C_LABEL(blast_vcache): andn %o3, PSTATE_IE, %o4 ! Turn off PSTATE_IE bit wrpr %o4, 0, %pstate 1: +dlflush3: stxa %g0, [%o1] ASI_DCACHE_TAG brnz,pt %o1, 1b dec 8, %o1 @@ -4854,6 +4855,7 @@ _C_LABEL(dcache_flush_page): bne,pt %xcc, 1b membar #LoadStore +dlflush4: stxa %g0, [%o0] ASI_DCACHE_TAG ba,pt %icc, 1b membar #StoreLoad @@ -4888,6 +4890,7 @@ _C_LABEL(cache_flush_virt): !! Clear from start to end 1: +dlflush5: stxa %g0, [%o0] ASI_DCACHE_TAG dec 16, %o4 brgz,pt %o4, 1b @@ -4902,6 +4905,7 @@ _C_LABEL(cache_flush_virt): !! We got a hole. Clear from start to hole clr %o4 3: +dlflush6: stxa %g0, [%o4] ASI_DCACHE_TAG dec 16, %o1 brgz,pt %o1, 3b @@ -4955,6 +4959,7 @@ _C_LABEL(cache_flush_phys): nop membar #LoadStore +dlflush7: stxa %g0, [%o4] ASI_DCACHE_TAG ! Just right 2: membar #StoreLoad @@ -6316,6 +6321,7 @@ ENTRY(pmap_zero_phys) dec 8, %o2 stxa %g0, [%o0] ASI_PHYS_CACHED inc 8, %o0 +dlflush8: stxa %g0, [%o1] ASI_DCACHE_TAG brgz %o2, 1b inc 16, %o1 @@ -9618,4 +9624,10 @@ _C_LABEL(proc0paddr): _C_LABEL(dlflush_start): .xword dlflush1 .xword dlflush2 + .xword dlflush3 + .xword dlflush4 + .xword dlflush5 + .xword dlflush6 + .xword dlflush7 + .xword dlflush8 .xword 0 |