diff options
Diffstat (limited to 'arch/powerpc/lib/copypage_power7.S')
-rw-r--r-- | arch/powerpc/lib/copypage_power7.S | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/powerpc/lib/copypage_power7.S b/arch/powerpc/lib/copypage_power7.S index 0ef75bf0695c..395c594722a2 100644 --- a/arch/powerpc/lib/copypage_power7.S +++ b/arch/powerpc/lib/copypage_power7.S | |||
@@ -28,13 +28,14 @@ _GLOBAL(copypage_power7) | |||
28 | * aligned we don't need to clear the bottom 7 bits of either | 28 | * aligned we don't need to clear the bottom 7 bits of either |
29 | * address. | 29 | * address. |
30 | */ | 30 | */ |
31 | ori r9,r3,1 /* stream=1 */ | 31 | ori r9,r3,1 /* stream=1 => to */ |
32 | 32 | ||
33 | #ifdef CONFIG_PPC_64K_PAGES | 33 | #ifdef CONFIG_PPC_64K_PAGES |
34 | lis r7,0x0E01 /* depth=7, units=512 */ | 34 | lis r7,0x0E01 /* depth=7 |
35 | * units/cachelines=512 */ | ||
35 | #else | 36 | #else |
36 | lis r7,0x0E00 /* depth=7 */ | 37 | lis r7,0x0E00 /* depth=7 */ |
37 | ori r7,r7,0x1000 /* units=32 */ | 38 | ori r7,r7,0x1000 /* units/cachelines=32 */ |
38 | #endif | 39 | #endif |
39 | ori r10,r7,1 /* stream=1 */ | 40 | ori r10,r7,1 /* stream=1 */ |
40 | 41 | ||
@@ -43,12 +44,14 @@ _GLOBAL(copypage_power7) | |||
43 | 44 | ||
44 | .machine push | 45 | .machine push |
45 | .machine "power4" | 46 | .machine "power4" |
46 | dcbt r0,r4,0b01000 | 47 | /* setup read stream 0 */ |
47 | dcbt r0,r7,0b01010 | 48 | dcbt r0,r4,0b01000 /* addr from */ |
48 | dcbtst r0,r9,0b01000 | 49 | dcbt r0,r7,0b01010 /* length and depth from */ |
49 | dcbtst r0,r10,0b01010 | 50 | /* setup write stream 1 */ |
51 | dcbtst r0,r9,0b01000 /* addr to */ | ||
52 | dcbtst r0,r10,0b01010 /* length and depth to */ | ||
50 | eieio | 53 | eieio |
51 | dcbt r0,r8,0b01010 /* GO */ | 54 | dcbt r0,r8,0b01010 /* all streams GO */ |
52 | .machine pop | 55 | .machine pop |
53 | 56 | ||
54 | #ifdef CONFIG_ALTIVEC | 57 | #ifdef CONFIG_ALTIVEC |