summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2003-05-17 07:24:12 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2003-05-17 07:24:12 +0000
commitb52942b7d6a99049ebd81ecdae3fb0e89e2cd3f3 (patch)
treec4cac5ea80e2fae2674a89238a31fdd9c199fcf2 /sys/arch/sparc64
parent2259cf7cb2b3ea69b1a57d489a90512a92fb798d (diff)
remove more ifdefs. Kill the VIS instruction pmap_{copy,zero}_page.
We haven't used them ever, they are hairy and if we want them back, we'll readd them in some other file. mdw@ henric@ ok
Diffstat (limited to 'sys/arch/sparc64')
-rw-r--r--sys/arch/sparc64/sparc64/locore.s532
1 files changed, 1 insertions, 531 deletions
diff --git a/sys/arch/sparc64/sparc64/locore.s b/sys/arch/sparc64/sparc64/locore.s
index 2f926a5fa17..e4bdf5d755a 100644
--- a/sys/arch/sparc64/sparc64/locore.s
+++ b/sys/arch/sparc64/sparc64/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.35 2003/05/17 07:09:08 art Exp $ */
+/* $OpenBSD: locore.s,v 1.36 2003/05/17 07:24:11 art Exp $ */
/* $NetBSD: locore.s,v 1.137 2001/08/13 06:10:10 jdolecek Exp $ */
/*
@@ -58,9 +58,6 @@
#undef NO_VCACHE /* Map w/D$ disabled */
#undef TRAPS_USE_IG /* Use Interrupt Globals for all traps */
-#undef PMAP_FPSTATE /* Allow nesting of VIS pmap copy/zero */
-#define NEW_FPSTATE
-#define PMAP_PHYS_PAGE /* Use phys ASIs for pmap copy/zero */
#undef DCACHE_BUG /* Flush D$ around ASI_PHYS accesses */
#undef NO_TSB /* Don't use TSB */
@@ -6217,227 +6214,6 @@ ENTRY(pmap_zero_phys)
!! If we have 64-bit physical addresses (and we do now)
!! we need to move the pointer from %o0:%o1 to %o0
!!
-#ifdef DEBUG
- set pmapdebug, %o4
- ld [%o4], %o4
- btst 0x80, %o4 ! PDB_COPY
- bz,pt %icc, 3f
- nop
- save %sp, -CC64FSZ, %sp
- set 2f, %o0
- call printf
- mov %i0, %o1
-! ta 1; nop
- restore
- .data
-2: .asciz "pmap_zero_page(%p)\n"
- _ALIGN
- .text
-3:
-#endif /* DEBUG */
-#ifndef PMAP_PHYS_PAGE
-/*
- * Here we use VIS instructions to do a block clear of a page.
- * First we will tickle the FPU. If is was not not enabled this
- * should cause a trap. The trap will check if they belong to a
- * user process and if so save them and clear %fprs. It will
- * also enable FP in PSTATE.
- *
- * We may now check the contents of %fprs. If either the upper
- * or lower FPU is dirty then that means some other kernel routine
- * is using the FPU and we should use the slow routine.
- *
- * Otherwise, we zero out the FP registers we'll use. Then we map
- * the page into the special VA we use for this purpose. When we're
- * done, we clear %fprs, so we'll know we can use it the nest time.
- */
- sethi %hi(_C_LABEL(vmmap)), %o2 ! Get VA
- ldx [%o2 + %lo(_C_LABEL(vmmap))], %o2
- brz,pn %o2, pmap_zero_phys ! Only do VIS if traps are enabled
- or %o2, 0x020, %o3 ! Nucleus flush page
-
-#ifdef PMAP_FPSTATE
-#ifndef NEW_FPSTATE
- !!
- !! This code will allow us to save the fpstate around this
- !! routine and nest FP use in the kernel
- !!
- save %sp, -(CC64FSZ+FS_SIZE+BLOCK_SIZE), %sp ! Allocate an fpstate
- add %sp, (CC64FSZ+BIAS+BLOCK_SIZE-1), %l0 ! Calculate pointer to fpstate
- rd %fprs, %l1 ! Save old fprs so we can restore it later
- andn %l0, BLOCK_ALIGN, %l0 ! And make it block aligned
- call _C_LABEL(savefpstate)
- mov %l0, %o0
- mov %i0, %o0
- mov %i2, %o2
- mov %i3, %o3
- wr %g0, FPRS_FEF, %fprs
-#else /* NEW_FPSTATE */ /* NEW_FPSTATE */
-/*
- * New version, new scheme:
- *
- * Here we use VIS instructions to do a block clear of a page.
- * But before we can do that we need to save and enable the FPU.
- * The last owner of the FPU registers is fpproc, and
- * fpproc->p_md.md_fpstate is the current fpstate. If that's not
- * null, call savefpstate() with it to store our current fp state.
- *
- * Next, allocate an aligned fpstate on the stack. We will properly
- * nest calls on a particular stack so this should not be a problem.
- *
- * Now we grab either curproc (or if we're on the interrupt stack
- * proc0). We stash its existing fpstate in a local register and
- * put our new fpstate in curproc->p_md.md_fpstate. We point
- * fpproc at curproc (or proc0) and enable the FPU.
- *
- * If we are ever preempted, our FPU state will be saved in our
- * fpstate. Then, when we're resumed and we take an FPDISABLED
- * trap, the trap handler will be able to fish our FPU state out
- * of curproc (or proc0).
- *
- * On exiting this routine we undo the damage: restore the original
- * pointer to curproc->p_md.md_fpstate, clear our fpproc, and disable
- * the MMU.
- *
- */
- !!
- !! This code will allow us to save the fpstate around this
- !! routine and nest FP use in the kernel
- !!
- save %sp, -(CC64FSZ+FS_SIZE+BLOCK_SIZE), %sp ! Allocate an fpstate
- sethi %hi(FPPROC), %l1
- ldx [%l1 + %lo(FPPROC)], %l2 ! Load fpproc
- add %sp, (CC64FSZ+BIAS+BLOCK_SIZE-1), %l0 ! Calculate pointer to fpstate
- brz,pt %l2, 1f ! fpproc == NULL?
- andn %l0, BLOCK_ALIGN, %l0 ! And make it block aligned
- ldx [%l2 + P_FPSTATE], %l3
- brz,pn %l3, 1f ! Make sure we have an fpstate
- mov %l3, %o0
- call _C_LABEL(savefpstate) ! Save the old fpstate
- set EINTSTACK-BIAS, %l4 ! Are we on intr stack?
- cmp %sp, %l4
- bgu,pt %xcc, 1f
- set INTSTACK-BIAS, %l4
- cmp %sp, %l4
- blu %xcc, 1f
-0:
- sethi %hi(_C_LABEL(proc0)), %l4 ! Yes, use proc0
- ba,pt %xcc, 2f
- or %l4, %lo(_C_LABEL(proc0)), %l5
-1:
- sethi %hi(CURPROC), %l4 ! Use curproc
- ldx [%l4 + %lo(CURPROC)], %l5
- brz,pn %l5, 0b ! If curproc is NULL need to use proc0
-2:
- mov %i0, %o0
- mov %i2, %o2
- ldx [%l5 + P_FPSTATE], %l6 ! Save old fpstate
- mov %i3, %o3
- stx %l0, [%l5 + P_FPSTATE] ! Insert new fpstate
- stx %l5, [%l1 + %lo(FPPROC)] ! Set new fpproc
- wr %g0, FPRS_FEF, %fprs ! Enable FPU
-#endif /* NEW_FPSTATE */ /* NEW_FPSTATE */
-#else /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
- !!
- !! Don't use FP regs if the kernel's already using them
- !!
- rd %fprs, %o1 ! Read old %fprs
- sethi %hi(FPPROC), %o4 ! Also load fpproc
- btst FPRS_DU|FPRS_DL, %o1 ! Is it dirty?
- ldx [%o4 + %lo(FPPROC)], %o4
- bz,pt %icc, 1f ! No, use fpregs
- bset FPRS_FEF, %o1
- brz,pn %o4, pmap_zero_phys ! No userland fpstate so do this the slow way
-1:
- wr %o1, 0, %fprs ! Enable the FPU
-#endif /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
-
-#ifdef DEBUG
- sethi %hi(paginuse), %o4 ! Prevent this from nesting
- lduw [%o4 + %lo(paginuse)], %o5
- tst %o5
- tnz %icc, 1
- bnz,pn %icc, pmap_zero_phys
- inc %o5
- stw %o5, [%o4 + %lo(paginuse)]
-#endif /* DEBUG */
-
- rdpr %pil, %g1
- wrpr %g0, PIL_HIGH, %pil ! s = splhigh()
-
- fzero %f0 ! Set up FPU
- fzero %f2
- fzero %f4
- fzero %f6
- fzero %f8
- fzero %f10
- fzero %f12
- fzero %f14
-
- stxa %o3, [%o3] ASI_DMMU_DEMAP ! Do the demap
- membar #Sync ! No real reason for this XXXX
-
- sethi %hi(0x80000000), %o4 ! Setup TTE:
- sllx %o4, 32, %o4 ! V = 1
- or %o4, TTE_CP|TTE_P|TTE_W|TTE_L, %o4 ! CP=1|P=1|W=1|L=1
- or %o4, %o0, %o4 ! PA
-
- mov TLB_TAG_ACCESS, %o5
- stxa %o2, [%o5] ASI_DMMU ! Store new address for mapping
- membar #Sync ! No real reason for this XXXX
- stxa %o4, [%g0] ASI_DMMU_DATA_IN ! Store TTE for new mapping
- membar #Sync
-
- set NBPG, %o4
-1:
- stda %f0, [%o2] ASI_BLK_COMMIT_P ! Store 64 bytes
- add %o2, 64, %o2
- dec 128, %o4
- stda %f0, [%o2] ASI_BLK_COMMIT_P ! Store 64 bytes
- brgz,pt %o4, 1b
- add %o2, 64, %o2
-
- membar #Sync ! Finish the operation
- stxa %o3, [%o3] ASI_DMMU_DEMAP ! Demap the page again
- membar #Sync ! No real reason for this XXXX
-
-
- wrpr %g1, 0, %pil ! splx(s)
-
-#ifdef PMAP_FPSTATE
-#ifndef NEW_FPSTATE
- btst FPRS_DU|FPRS_DL, %l1 ! Anything to restore?
- bz,pt %icc, 1f
- nop
- call _C_LABEL(loadfpstate)
- mov %l0, %o0
-1:
-! return ! Does this work?
- wr %l1, 0, %fprs
- ret
- restore
-#else /* NEW_FPSTATE */ /* NEW_FPSTATE */
-#ifdef DEBUG
- ldx [%l1 + %lo(FPPROC)], %l7
- cmp %l7, %l5
- tnz 1 ! fpproc has changed!
- ldx [%l5 + P_FPSTATE], %l7
- cmp %l7, %l0
- tnz 1 ! fpstate has changed!
-#endif /* DEBUG */
- stx %g0, [%l1 + %lo(FPPROC)] ! Clear fpproc
- stx %l6, [%l5 + P_FPSTATE] ! Restore old fpstate
- wr %g0, 0, %fprs ! Disable FPU
- ret
- restore
-#endif /* NEW_FPSTATE */ /* NEW_FPSTATE */
-#else /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
- retl ! Any other mappings have inconsistent D$
- wr %g0, 0, %fprs ! Turn off FPU and mark as clean
-#endif /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
-pmap_zero_phys:
-#endif /* PMAP_PHYS_PAGE */ /* PMAP_PHYS_PAGE */
-#if 1
set NBPG, %o2 ! Loop count
clr %o1
1:
@@ -6452,19 +6228,6 @@ pmap_zero_phys:
flush %o3
retl
nop
-#else /* 1 */
- set NBPG-8, %o1
- add %o1, %o0, %o1
-1:
- stxa %g0, [%o0] ASI_PHYS_CACHED
- cmp %o0, %o1
- blt 1b
- inc 8, %o0
- ba _C_LABEL(blast_vcache) ! Clear out D$ and return
- nop
- retl
- nop
-#endif /* 1 */
/*
* pmap_copy_page(src, dst)
*
@@ -6484,294 +6247,6 @@ ENTRY(pmap_copy_phys)
!! we need to move the pointer from %o0:%o1 to %o0 and
!! %o2:%o3 to %o1
!!
-#ifdef DEBUG
- set pmapdebug, %o4
- ld [%o4], %o4
- btst 0x80, %o4 ! PDB_COPY
- bz,pt %icc, 3f
- nop
- save %sp, -CC64FSZ, %sp
- mov %i0, %o1
- set 2f, %o0
- call printf
- mov %i1, %o2
-! ta 1; nop
- restore
- .data
-2: .asciz "pmap_copy_page(%p,%p)\n"
- _ALIGN
- .text
-3:
-#endif /* DEBUG */
-#ifndef PMAP_PHYS_PAGE
-/*
- * Here we use VIS instructions to do a block clear of a page.
- * First we zero out the FP registers we'll use. If they were
- * dirty this should cause a trap to save them.
- * Then we need to turn off interrupts so we don't have to deal
- * with possibly saving or restoring state. Then we map the page
- * into the special VA we use for this purpose.
- *
- * NB: THIS WILL ALWAYS ENABLE INTERRUPTS IN PSTATE ON EXIT
- */
- sethi %hi(_C_LABEL(vmmap)), %o2 ! Get VA
- ldx [%o2 + %lo(_C_LABEL(vmmap))], %o2
- brz,pn %o2, pmap_copy_phys
- or %o2, 0x020, %o3 ! Nucleus flush page
-
-#ifdef PMAP_FPSTATE
-#ifndef NEW_FPSTATE
- !!
- !! This code will allow us to save the fpstate around this
- !! routine and nest FP use in the kernel
- !!
- save %sp, -(CC64FSZ+FS_SIZE+BLOCK_SIZE), %sp ! Allocate an fpstate
- add %sp, (CC64FSZ+BIAS+BLOCK_SIZE-1), %l0 ! Calculate pointer to fpstate
- andn %l0, BLOCK_ALIGN, %l0 ! And make it block aligned
- rd %fprs, %l1 ! Save old fprs so we can restore it later
- call _C_LABEL(savefpstate)
- mov %l0, %o0
- mov %i0, %o0
- mov %i1, %o1
- mov %i2, %o2
- mov %i3, %o3
- wr %g0, FPRS_FEF, %fprs
-#else /* NEW_FPSTATE */ /* NEW_FPSTATE */
-/*
- * New version, new scheme:
- *
- * Here we use VIS instructions to do a block clear of a page.
- * But before we can do that we need to save and enable the FPU.
- * The last owner of the FPU registers is fpproc, and
- * fpproc->p_md.md_fpstate is the current fpstate. If that's not
- * null, call savefpstate() with it to store our current fp state.
- *
- * Next, allocate an aligned fpstate on the stack. We will properly
- * nest calls on a particular stack so this should not be a problem.
- *
- * Now we grab either curproc (or if we're on the interrupt stack
- * proc0). We stash its existing fpstate in a local register and
- * put our new fpstate in curproc->p_md.md_fpstate. We point
- * fpproc at curproc (or proc0) and enable the FPU.
- *
- * If we are ever preempted, our FPU state will be saved in our
- * fpstate. Then, when we're resumed and we take an FPDISABLED
- * trap, the trap handler will be able to fish our FPU state out
- * of curproc (or proc0).
- *
- * On exiting this routine we undo the damage: restore the original
- * pointer to curproc->p_md.md_fpstate, clear our fpproc, and disable
- * the MMU.
- *
- */
- !!
- !! This code will allow us to save the fpstate around this
- !! routine and nest FP use in the kernel
- !!
- save %sp, -(CC64FSZ+FS_SIZE+BLOCK_SIZE), %sp ! Allocate an fpstate
- sethi %hi(FPPROC), %l1
- ldx [%l1 + %lo(FPPROC)], %l2 ! Load fpproc
- add %sp, (CC64FSZ+BIAS+BLOCK_SIZE-1), %l0 ! Calculate pointer to fpstate
- brz,pt %l2, 1f ! fpproc == NULL?
- andn %l0, BLOCK_ALIGN, %l0 ! And make it block aligned
- ldx [%l2 + P_FPSTATE], %l3
- brz,pn %l3, 1f ! Make sure we have an fpstate
- mov %l3, %o0
- call _C_LABEL(savefpstate) ! Save the old fpstate
- set EINTSTACK-BIAS, %l4 ! Are we on intr stack?
- cmp %sp, %l4
- bgu,pt %xcc, 1f
- set INTSTACK-BIAS, %l4
- cmp %sp, %l4
- blu %xcc, 1f
-0:
- sethi %hi(_C_LABEL(proc0)), %l4 ! Yes, use proc0
- ba,pt %xcc, 2f
- or %l4, %lo(_C_LABEL(proc0)), %l5
-1:
- sethi %hi(CURPROC), %l4 ! No, use curproc
- ldx [%l4 + %lo(CURPROC)], %l5
- brz,pn %l5, 0b ! If curproc is NULL need to use proc0
-2:
- mov %i0, %o0
- mov %i2, %o2
- ldx [%l5 + P_FPSTATE], %l6 ! Save old fpstate
- mov %i3, %o3
- stx %l0, [%l5 + P_FPSTATE] ! Insert new fpstate
- stx %l5, [%l1 + %lo(FPPROC)] ! Set new fpproc
- wr %g0, FPRS_FEF, %fprs ! Enable FPU
-#endif /* NEW_FPSTATE */ /* NEW_FPSTATE */
-#else /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
- !!
- !! Don't use FP regs if the kernel's already using them
- !!
- rd %fprs, %o5 ! Read old %fprs
- sethi %hi(FPPROC), %o4 ! Also load fpproc
- btst FPRS_DU|FPRS_DL, %o5 ! Is it dirty?
- ldx [%o4 + %lo(FPPROC)], %o4
- bz,pt %icc, 1f ! No, use fpregs
- bset FPRS_FEF, %o5
- brz,pn %o4, pmap_copy_phys ! No userland fpstate so do this the slow way
-1:
- wr %o5, 0, %fprs ! Enable the FPU
-#endif /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
-
-#ifdef DEBUG
- sethi %hi(paginuse), %o4 ! Prevent this from nesting
- lduw [%o4 + %lo(paginuse)], %o5
- tst %o5
- tnz %icc, 1
- bnz,pn %icc, pmap_copy_phys
- inc %o5
- stw %o5, [%o4 + %lo(paginuse)]
-#endif /* DEBUG */ /* DEBUG */
-
- rdpr %pil, %g1
- wrpr %g0, 15, %pil ! s = splhigh();
-
- stxa %o3, [%o3] ASI_DMMU_DEMAP ! Do the demap
- sethi %hi(NBPG), %o4
- membar #Sync ! No real reason for this XXXX
- add %o3, %o4, %o3
- stxa %o3, [%o3] ASI_DMMU_DEMAP ! Demap the next page too
- membar #Sync ! No real reason for this XXXX
-
- sethi %hi(0x80000000), %o4 ! Setup TTE:
- sllx %o4, 32, %o4 ! V = 1
- or %o4, TTE_CP|TTE_P|TTE_W|TTE_L, %o4 ! CP=1|P=1|W=1|L=1
- or %o4, %o0, %o0 ! TTE for source page XXX Should be RO
- or %o4, %o1, %o1 ! TTE for dest page
-
- mov TLB_TAG_ACCESS, %o5
- stxa %o2, [%o5] ASI_DMMU ! Store new address for mapping
- membar #Sync ! No real reason for this XXXX
- stxa %o0, [%g0] ASI_DMMU_DATA_IN ! Store TTE for new mapping
- membar #Sync
-
- sethi %hi(NBPG), %o4
- add %o2, %o4, %o4 ! %o4 point to dest
- stxa %o4, [%o5] ASI_DMMU ! Store new address for mapping
- membar #Sync ! No real reason for this XXXX
- stxa %o1, [%g0] ASI_DMMU_DATA_IN ! Store TTE for new mapping
- membar #Sync
-
- set NBPG, %o5 ! # bytes to move
-
- ldda [%o2] ASI_BLK_P, %f0 ! Load 1st bank
- dec BLOCK_SIZE, %o5
- add %o2, BLOCK_SIZE, %o2
-1:
- membar #StoreLoad
- ldda [%o2] ASI_BLK_P, %f16 ! Load 2nd bank
- dec BLOCK_SIZE, %o5
- add %o2, BLOCK_SIZE, %o2
-
- membar #LoadStore
- fmovd %f14, %f14 ! Sync 1st bank
- stda %f0, [%o4] ASI_BLK_COMMIT_P ! Store 1st bank
- brlez,pn %o5, 1f ! Finished?
- add %o4, BLOCK_SIZE, %o4
-
- membar #StoreLoad
- ldda [%o2] ASI_BLK_P, %f0 ! Load 1st bank
- dec BLOCK_SIZE, %o5
- add %o2, BLOCK_SIZE, %o2
-
- membar #LoadStore
- fmovd %f30, %f30 ! Sync 2nd bank
- stda %f16, [%o4] ASI_BLK_COMMIT_P ! Store 2nd bank
- brgz,pt %o5, 1b ! Finished?
- add %o4, BLOCK_SIZE, %o4
-
- !!
- !! If we got here we have loaded bank 1 and stored bank 2
- !!
- membar #Sync
- fmovd %f14, %f14 ! Sync 1st bank
- stda %f0, [%o4] ASI_BLK_COMMIT_P ! Store 1st bank
- ba,pt %icc, 2f ! Finished?
- add %o4, BLOCK_SIZE, %o4
-
-1:
- !!
- !! If we got here we have loaded bank 2 and stored bank 1
- !!
- membar #Sync
- fmovd %f30, %f30 ! Sync 2nd bank
- stda %f16, [%o4] ASI_BLK_COMMIT_P ! Store 2nd bank
- add %o4, BLOCK_SIZE, %o4
-
-2:
- membar #Sync ! Finish the operation
- stxa %o3, [%o3] ASI_DMMU_DEMAP ! Demap the dest page again
- sethi %hi(NBPG), %o4
- membar #Sync ! No real reason for this XXXX
- sub %o3, %o4, %o3
- stxa %o3, [%o3] ASI_DMMU_DEMAP ! Demap the source page again
- membar #Sync ! No real reason for this XXXX
-
-
- wrpr %g1, 0, %pil ! splx(s)
-
-#ifdef PMAP_FPSTATE
-#ifndef NEW_FPSTATE
- btst FPRS_DU|FPRS_DL, %l1 ! Anything to restore?
- bz,pt %icc, 1f
- nop
- call _C_LABEL(loadfpstate)
- mov %l0, %o0
-1:
-! return ! Does this work?
- wr %l1, 0, %fprs
- ret
- restore
-#else /* NEW_FPSTATE */ /* NEW_FPSTATE */
-#ifdef DEBUG
- ldx [%l1 + %lo(FPPROC)], %l7
- cmp %l7, %l5
- tnz 1 ! fpproc has changed!
- ldx [%l5 + P_FPSTATE], %l7
- cmp %l7, %l0
- tnz 1 ! fpstate has changed!
-#endif /* DEBUG */ /* DEBUG */
- stx %g0, [%l1 + %lo(FPPROC)] ! Clear fpproc
- stx %l6, [%l5 + P_FPSTATE] ! Save old fpstate
- wr %g0, 0, %fprs ! Disable FPU
- ret
- restore
-#endif /* NEW_FPSTATE */ /* NEW_FPSTATE */
-#else /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
- ba _C_LABEL(blast_vcache)
- wr %g0, 0, %fprs ! Turn off FPU and mark as clean
-
- retl ! Any other mappings have inconsistent D$
- wr %g0, 0, %fprs ! Turn off FPU and mark as clean
-#endif /* PMAP_FPSTATE */ /* PMAP_FPSTATE */
-pmap_copy_phys:
-#endif /* PMAP_PHYS_PAGE */ /* PMAP_PHYS_PAGE */
-#if 0
- /* This is the short, slow, safe version that uses %g1 */
-
- set NBPG, %o3
- clr %o2
- mov %g1, %o4 ! Save g1
-1:
- DLFLUSH %o0,%g1
- ldxa [%o0] ASI_PHYS_CACHED, %g1
- inc 8, %o0
- stxa %g1, [%o1] ASI_PHYS_CACHED
- inc 8, %o1
-
- dec 8, %o3
- stxa %g0, [%o2] ASI_DCACHE_TAG! Blast away at the D$
- brnz,pt %o3, 1b
- inc 16, %o2
- mov %o4, %g1
- sethi %hi(KERNBASE), %o5
- flush %o5
- retl
- nop
-#else /* 0 */
set NBPG, %o3
add %o3, %o0, %o3
mov %g1, %o4 ! Save g1
@@ -6784,13 +6259,8 @@ pmap_copy_phys:
DLFLUSH %o1,%g1
bl,pt %icc, 1b ! We don't care about pages >4GB
inc 8, %o1
-#if 0
- ba _C_LABEL(blast_vcache) ! Clear out D$ and return
- mov %o4, %g1 ! Restore g1
-#endif /* 0 */
retl
mov %o4, %g1 ! Restore g1
-#endif /* 0 */
/*
* extern int64_t pseg_get(struct pmap* %o0, vaddr_t addr %o1);