aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/lib/copy_page.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/lib/copy_page.S')
-rw-r--r--arch/arm/lib/copy_page.S16
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/arm/lib/copy_page.S b/arch/arm/lib/copy_page.S
index 6ae04db1ca4f..6ee2f6706f86 100644
--- a/arch/arm/lib/copy_page.S
+++ b/arch/arm/lib/copy_page.S
@@ -12,8 +12,9 @@
12#include <linux/linkage.h> 12#include <linux/linkage.h>
13#include <asm/assembler.h> 13#include <asm/assembler.h>
14#include <asm/asm-offsets.h> 14#include <asm/asm-offsets.h>
15#include <asm/cache.h>
15 16
16#define COPY_COUNT (PAGE_SZ/64 PLD( -1 )) 17#define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BYTES) PLD( -1 ))
17 18
18 .text 19 .text
19 .align 5 20 .align 5
@@ -26,17 +27,16 @@
26ENTRY(copy_page) 27ENTRY(copy_page)
27 stmfd sp!, {r4, lr} @ 2 28 stmfd sp!, {r4, lr} @ 2
28 PLD( pld [r1, #0] ) 29 PLD( pld [r1, #0] )
29 PLD( pld [r1, #32] ) 30 PLD( pld [r1, #L1_CACHE_BYTES] )
30 mov r2, #COPY_COUNT @ 1 31 mov r2, #COPY_COUNT @ 1
31 ldmia r1!, {r3, r4, ip, lr} @ 4+1 32 ldmia r1!, {r3, r4, ip, lr} @ 4+1
321: PLD( pld [r1, #64] ) 331: PLD( pld [r1, #2 * L1_CACHE_BYTES])
33 PLD( pld [r1, #96] ) 34 PLD( pld [r1, #3 * L1_CACHE_BYTES])
342: stmia r0!, {r3, r4, ip, lr} @ 4 352:
35 ldmia r1!, {r3, r4, ip, lr} @ 4+1 36 .rept (2 * L1_CACHE_BYTES / 16 - 1)
36 stmia r0!, {r3, r4, ip, lr} @ 4
37 ldmia r1!, {r3, r4, ip, lr} @ 4+1
38 stmia r0!, {r3, r4, ip, lr} @ 4 37 stmia r0!, {r3, r4, ip, lr} @ 4
39 ldmia r1!, {r3, r4, ip, lr} @ 4 38 ldmia r1!, {r3, r4, ip, lr} @ 4
39 .endr
40 subs r2, r2, #1 @ 1 40 subs r2, r2, #1 @ 1
41 stmia r0!, {r3, r4, ip, lr} @ 4 41 stmia r0!, {r3, r4, ip, lr} @ 4
42 ldmgtia r1!, {r3, r4, ip, lr} @ 4 42 ldmgtia r1!, {r3, r4, ip, lr} @ 4