patch-2.4.26 linux-2.4.26/arch/ppc/kernel/misc.S
Next file: linux-2.4.26/arch/ppc/kernel/ocp.c
Previous file: linux-2.4.26/arch/ppc/kernel/m8260_setup.c
Back to the patch index
Back to the overall index
- Lines: 61
- Date:
2004-04-14 06:05:27.000000000 -0700
- Orig file:
linux-2.4.25/arch/ppc/kernel/misc.S
- Orig date:
2003-11-28 10:26:19.000000000 -0800
diff -urN linux-2.4.25/arch/ppc/kernel/misc.S linux-2.4.26/arch/ppc/kernel/misc.S
@@ -694,29 +694,36 @@
_GLOBAL(copy_page)
addi r3,r3,-4
addi r4,r4,-4
+
+#ifdef CONFIG_8xx
+ /* don't use prefetch on 8xx */
+ li r0,4096/L1_CACHE_LINE_SIZE
+ mtctr r0
+1: COPY_16_BYTES
+ bdnz 1b
+ blr
+
+#else /* not 8xx, we can prefetch */
li r5,4
-#ifndef CONFIG_8xx
-#if MAX_L1_COPY_PREFETCH > 1
- li r0,MAX_L1_COPY_PREFETCH
+#if MAX_COPY_PREFETCH > 1
+ li r0,MAX_COPY_PREFETCH
li r11,4
mtctr r0
11: dcbt r11,r4
addi r11,r11,L1_CACHE_LINE_SIZE
bdnz 11b
-#else /* MAX_L1_COPY_PREFETCH == 1 */
+#else /* MAX_COPY_PREFETCH == 1 */
dcbt r5,r4
li r11,L1_CACHE_LINE_SIZE+4
-#endif /* MAX_L1_COPY_PREFETCH */
-#endif /* CONFIG_8xx */
-
- li r0,4096/L1_CACHE_LINE_SIZE
+#endif /* MAX_COPY_PREFETCH */
+ li r0,4096/L1_CACHE_LINE_SIZE - MAX_COPY_PREFETCH
+ crclr 4*cr0+eq
+2:
mtctr r0
1:
-#ifndef CONFIG_8xx
dcbt r11,r4
dcbz r5,r3
-#endif
COPY_16_BYTES
#if L1_CACHE_LINE_SIZE >= 32
COPY_16_BYTES
@@ -732,7 +739,12 @@
#endif
#endif
bdnz 1b
- blr
+ beqlr
+ crnot 4*cr0+eq,4*cr0+eq
+ li r0,MAX_COPY_PREFETCH
+ li r11,4
+ b 2b
+#endif /* CONFIG_8xx */
/*
* Atomic [test&set] exchange
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)