patch-2.4.20 linux-2.4.20/arch/sparc64/lib/VIScopy.S
Next file: linux-2.4.20/arch/sparc64/lib/VIScsum.S
Previous file: linux-2.4.20/arch/sparc64/lib/U3memcpy.S
Back to the patch index
Back to the overall index
- Lines: 53
- Date:
Thu Nov 28 15:53:12 2002
- Orig file:
linux-2.4.19/arch/sparc64/lib/VIScopy.S
- Orig date:
Mon Oct 1 09:19:56 2001
diff -urN linux-2.4.19/arch/sparc64/lib/VIScopy.S linux-2.4.20/arch/sparc64/lib/VIScopy.S
@@ -368,6 +368,28 @@
or %g3, %lo(NOP), %g3; \
stw %g3, [%g2 + 0x4]; \
flush %g2;
+#define ULTRA3_PCACHE_DO_NOP(symbol) \
+ sethi %hi(symbol##_nop_1_6), %g1; \
+ or %g1, %lo(symbol##_nop_1_6), %g1; \
+ sethi %hi(NOP), %g2; \
+ stw %g2, [%g1 + 0x00]; \
+ stw %g2, [%g1 + 0x04]; \
+ flush %g1 + 0x00; \
+ stw %g2, [%g1 + 0x08]; \
+ stw %g2, [%g1 + 0x0c]; \
+ flush %g1 + 0x08; \
+ stw %g2, [%g1 + 0x10]; \
+ stw %g2, [%g1 + 0x04]; \
+ flush %g1 + 0x10; \
+ sethi %hi(symbol##_nop_2_3), %g1; \
+ or %g1, %lo(symbol##_nop_2_3), %g1; \
+ stw %g2, [%g1 + 0x00]; \
+ stw %g2, [%g1 + 0x04]; \
+ flush %g1 + 0x00; \
+ stw %g2, [%g1 + 0x08]; \
+ flush %g1 + 0x08;
+
+#include <asm/dcu.h>
.globl cheetah_patch_copyops
cheetah_patch_copyops:
@@ -375,6 +397,23 @@
ULTRA3_DO_PATCH(__copy_from_user, U3copy_from_user)
ULTRA3_DO_PATCH(__copy_to_user, U3copy_to_user)
ULTRA3_DO_PATCH(__copy_in_user, U3copy_in_user)
+#if 0 /* Causes data corruption, nop out the optimization
+ * for now -DaveM
+ */
+ ldxa [%g0] ASI_DCU_CONTROL_REG, %g3
+ sethi %uhi(DCU_PE), %o3
+ sllx %o3, 32, %o3
+ andcc %g3, %o3, %g0
+ be,pn %xcc, pcache_disabled
+ nop
+#endif
+ ULTRA3_PCACHE_DO_NOP(U3memcpy)
+ ULTRA3_PCACHE_DO_NOP(U3copy_from_user)
+ ULTRA3_PCACHE_DO_NOP(U3copy_to_user)
+ ULTRA3_PCACHE_DO_NOP(cheetah_copy_user_page)
+#if 0
+pcache_disabled:
+#endif
retl
nop
#undef BRANCH_ALWAYS
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)