patch-2.4.0-test5 linux/arch/sparc64/lib/blockops.S
Next file: linux/arch/sparc64/math-emu/Makefile
Previous file: linux/arch/sparc64/kernel/systbls.S
Back to the patch index
Back to the overall index
- Lines: 105
- Date:
Tue Jul 18 12:29:47 2000
- Orig file:
v2.4.0-test4/linux/arch/sparc64/lib/blockops.S
- Orig date:
Wed Apr 26 16:34:07 2000
diff -u --recursive --new-file v2.4.0-test4/linux/arch/sparc64/lib/blockops.S linux/arch/sparc64/lib/blockops.S
@@ -1,4 +1,4 @@
-/* $Id: blockops.S,v 1.25 2000/04/13 04:45:58 davem Exp $
+/* $Id: blockops.S,v 1.27 2000/07/14 01:12:49 davem Exp $
* blockops.S: UltraSparc block zero optimized routines.
*
* Copyright (C) 1996, 1998, 1999, 2000 David S. Miller (davem@redhat.com)
@@ -83,21 +83,29 @@
or %g2, %g3, %g2
add %o0, %o3, %o0
add %o0, %o1, %o1
- sethi %hi(TLBTEMP_ENT1), %o3
+ mov TLBTEMP_ENT1, %o3
rdpr %pstate, %g3
wrpr %g3, PSTATE_IE, %pstate
+ /* Do this now, before loading the fixed TLB entries for copying,
+ * so we do not risk a multiple TLB match condition later when
+ * restoring those entries.
+ */
+ ldub [%g6 + AOFF_task_thread + AOFF_thread_use_blkcommit], %g3
+
/* Spitfire Errata #32 workaround */
mov 0x8, %o4
stxa %g0, [%o4] ASI_DMMU
- flush %g6
+ sethi %hi(empty_zero_page), %o4
+ flush %o4
ldxa [%o3] ASI_DTLB_TAG_READ, %o4
/* Spitfire Errata #32 workaround */
mov 0x8, %o5
stxa %g0, [%o5] ASI_DMMU
- flush %g6
+ sethi %hi(empty_zero_page), %o5
+ flush %o5
ldxa [%o3] ASI_DTLB_DATA_ACCESS, %o5
stxa %o0, [%o2] ASI_DMMU
@@ -108,22 +116,23 @@
/* Spitfire Errata #32 workaround */
mov 0x8, %g5
stxa %g0, [%g5] ASI_DMMU
- flush %g6
+ sethi %hi(empty_zero_page), %g5
+ flush %g5
ldxa [%o3] ASI_DTLB_TAG_READ, %g5
/* Spitfire Errata #32 workaround */
mov 0x8, %g7
stxa %g0, [%g7] ASI_DMMU
- flush %g6
+ sethi %hi(empty_zero_page), %g7
+ flush %g7
ldxa [%o3] ASI_DTLB_DATA_ACCESS, %g7
stxa %o1, [%o2] ASI_DMMU
stxa %g2, [%o3] ASI_DTLB_DATA_ACCESS
membar #Sync
- ldub [%g6 + AOFF_task_thread + AOFF_thread_use_blkcommit], %g2
- cmp %g2, 0
+ cmp %g3, 0
bne,pn %xcc, copy_page_using_blkcommit
nop
@@ -168,8 +177,9 @@
stxa %o4, [%o2] ASI_DMMU
stxa %o5, [%o3] ASI_DTLB_DATA_ACCESS
membar #Sync
+ rdpr %pstate, %g3
jmpl %o7 + 0x8, %g0
- wrpr %g3, 0x0, %pstate
+ wrpr %g3, PSTATE_IE, %pstate
copy_page_using_blkcommit:
membar #LoadStore | #StoreStore | #StoreLoad
@@ -227,21 +237,23 @@
or %g3, (_PAGE_CP | _PAGE_CV | _PAGE_P | _PAGE_L | _PAGE_W), %g3
or %g1, %g3, %g1
add %o0, %o3, %o0
- sethi %hi(TLBTEMP_ENT2), %o3
+ mov TLBTEMP_ENT2, %o3
rdpr %pstate, %g3
wrpr %g3, PSTATE_IE, %pstate
/* Spitfire Errata #32 workaround */
mov 0x8, %g5
stxa %g0, [%g5] ASI_DMMU
- flush %g6
+ sethi %hi(empty_zero_page), %g5
+ flush %g5
ldxa [%o3] ASI_DTLB_TAG_READ, %g5
/* Spitfire Errata #32 workaround */
mov 0x8, %g7
stxa %g0, [%g7] ASI_DMMU
- flush %g6
+ sethi %hi(empty_zero_page), %g7
+ flush %g7
ldxa [%o3] ASI_DTLB_DATA_ACCESS, %g7
stxa %o0, [%o2] ASI_DMMU
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)