aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.davemloft.net>2004-08-09 00:07:26 -0700
committerDavid S. Miller <davem@nuts.davemloft.net>2004-08-09 00:07:26 -0700
commit5feed8ed2e463e369a38f13b9b80a9d59bd59405 (patch)
tree367e4a363e3aeb686f3eede8637845d9f0ae3bed /arch
parent6d5a0e9141324dc56517ccad55f71f5c478fd12e (diff)
downloadhistory-5feed8ed2e463e369a38f13b9b80a9d59bd59405.tar.gz
[SPARC64]: Remove memcpy Ultra3 PCACHE patching trick.
It could never be enabled safely, so just toss the code. Signed-off-by: David S. Miller <davem@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/sparc64/lib/U3copy_from_user.S17
-rw-r--r--arch/sparc64/lib/U3copy_to_user.S17
-rw-r--r--arch/sparc64/lib/U3memcpy.S18
-rw-r--r--arch/sparc64/lib/VIScopy.S38
4 files changed, 3 insertions, 87 deletions
diff --git a/arch/sparc64/lib/U3copy_from_user.S b/arch/sparc64/lib/U3copy_from_user.S
index ced14539d2624f..5976c32bfd822c 100644
--- a/arch/sparc64/lib/U3copy_from_user.S
+++ b/arch/sparc64/lib/U3copy_from_user.S
@@ -185,16 +185,7 @@ enter:
.align 64
begin:
-
- .globl U3copy_from_user_nop_1_6
-U3copy_from_user_nop_1_6:
- ldxa [%g0] ASI_DCU_CONTROL_REG, %g3
- sethi %uhi(DCU_PE), %o3
- sllx %o3, 32, %o3
- or %g3, %o3, %o3
- stxa %o3, [%g0] ASI_DCU_CONTROL_REG ! Enable P-cache
- membar #Sync
-
+ membar #StoreLoad | #StoreStore | #LoadStore
prefetcha [%o1 + 0x000] %asi, #one_read
prefetcha [%o1 + 0x040] %asi, #one_read
andn %o2, (0x40 - 1), %o4
@@ -280,12 +271,6 @@ loopfini:
add %o0, 0x40, %o0
add %o1, 0x40, %o1
- .globl U3copy_from_user_nop_2_3
-U3copy_from_user_nop_2_3:
- mov PRIMARY_CONTEXT, %o3
- stxa %g0, [%o3] ASI_DMMU ! Flush P-cache
- stxa %g3, [%g0] ASI_DCU_CONTROL_REG ! Disable P-cache
-
membar #Sync
/* Now we copy the (len modulo 64) bytes at the end.
diff --git a/arch/sparc64/lib/U3copy_to_user.S b/arch/sparc64/lib/U3copy_to_user.S
index 55e99ec3952011..dd8c42de0236df 100644
--- a/arch/sparc64/lib/U3copy_to_user.S
+++ b/arch/sparc64/lib/U3copy_to_user.S
@@ -204,16 +204,7 @@ enter:
.align 64
begin:
-
- .globl U3copy_to_user_nop_1_6
-U3copy_to_user_nop_1_6:
- ldxa [%g0] ASI_DCU_CONTROL_REG, %g3
- sethi %uhi(DCU_PE), %o3
- sllx %o3, 32, %o3
- or %g3, %o3, %o3
- stxa %o3, [%g0] ASI_DCU_CONTROL_REG ! Enable P-cache
- membar #Sync
-
+ membar #StoreLoad | #StoreStore | #LoadStore
prefetch [%o1 + 0x000], #one_read
prefetch [%o1 + 0x040], #one_read
andn %o2, (0x40 - 1), %o4
@@ -299,12 +290,6 @@ loopfini:
add %o0, 0x40, %o0
add %o1, 0x40, %o1
- .globl U3copy_to_user_nop_2_3
-U3copy_to_user_nop_2_3:
- mov PRIMARY_CONTEXT, %o3
- stxa %g0, [%o3] ASI_DMMU ! Flush P-cache
- stxa %g3, [%g0] ASI_DCU_CONTROL_REG ! Disable P-cache
-
membar #Sync
/* Now we copy the (len modulo 64) bytes at the end.
diff --git a/arch/sparc64/lib/U3memcpy.S b/arch/sparc64/lib/U3memcpy.S
index 8804f17ed1dc72..c04f176b9ca9ff 100644
--- a/arch/sparc64/lib/U3memcpy.S
+++ b/arch/sparc64/lib/U3memcpy.S
@@ -90,16 +90,7 @@ enter:
.align 64
begin:
-#ifdef __KERNEL__
- .globl U3memcpy_nop_1_6
-U3memcpy_nop_1_6:
- ldxa [%g0] ASI_DCU_CONTROL_REG, %g3
- sethi %uhi(DCU_PE), %o3
- sllx %o3, 32, %o3
- or %g3, %o3, %o3
- stxa %o3, [%g0] ASI_DCU_CONTROL_REG ! Enable P-cache
- membar #Sync
-#endif
+ membar #StoreLoad | #StoreStore | #LoadStore
prefetch [%o1 + 0x000], #one_read
prefetch [%o1 + 0x040], #one_read
andn %o2, (0x40 - 1), %o4
@@ -184,13 +175,6 @@ loopfini:
stda %f16, [%o0] ASI_BLK_P
add %o0, 0x40, %o0
add %o1, 0x40, %o1
-#ifdef __KERNEL__
- .globl U3memcpy_nop_2_3
-U3memcpy_nop_2_3:
- mov PRIMARY_CONTEXT, %o3
- stxa %g0, [%o3] ASI_DMMU ! Flush P-cache
- stxa %g3, [%g0] ASI_DCU_CONTROL_REG ! Disable P-cache
-#endif
membar #Sync
/* Now we copy the (len modulo 64) bytes at the end.
diff --git a/arch/sparc64/lib/VIScopy.S b/arch/sparc64/lib/VIScopy.S
index 79052cdf8ab374..2c90b25668c9e7 100644
--- a/arch/sparc64/lib/VIScopy.S
+++ b/arch/sparc64/lib/VIScopy.S
@@ -360,28 +360,6 @@ bcopy: or %o0, 0, %g3 ! IEU0 Group
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:
@@ -389,22 +367,6 @@ cheetah_patch_copyops:
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)
-#if 0
-pcache_disabled:
-#endif
retl
nop
#undef BRANCH_ALWAYS