1 /* SPDX-License-Identifier: GPL-2.0-only */ !! 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 2 /* 3 * linux/arch/arm/lib/copypage.S !! 3 * arch/alpha/lib/copy_page.S 4 * 4 * 5 * Copyright (C) 1995-1999 Russell King !! 5 * Copy an entire page. 6 * << 7 * ASM optimised string functions << 8 */ 6 */ 9 #include <linux/linkage.h> !! 7 #include <linux/export.h> 10 #include <asm/assembler.h> !! 8 .text 11 #include <asm/asm-offsets.h> !! 9 .align 4 12 #include <asm/cache.h> !! 10 .global copy_page >> 11 .ent copy_page >> 12 copy_page: >> 13 .prologue 0 13 14 14 #define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BY !! 15 lda $18,128 >> 16 nop >> 17 unop >> 18 nop 15 19 16 .text !! 20 1: ldq $0,0($17) 17 .align 5 !! 21 ldq $1,8($17) 18 /* !! 22 ldq $2,16($17) 19 * StrongARM optimised copy_page routine !! 23 ldq $3,24($17) 20 * now 1.78bytes/cycle, was 1.60 bytes/cycle ( !! 24 21 * Note that we probably achieve closer to the !! 25 ldq $4,32($17) 22 * the core clock switching. !! 26 ldq $5,40($17) 23 */ !! 27 ldq $6,48($17) 24 ENTRY(copy_page) !! 28 ldq $7,56($17) 25 stmfd sp!, {r4, lr} !! 29 26 PLD( pld [r1, #0] !! 30 stq $0,0($16) 27 PLD( pld [r1, #L1_CACHE_BYTES] !! 31 subq $18,1,$18 28 mov r2, #COPY_COUNT !! 32 stq $1,8($16) 29 ldmia r1!, {r3, r4, ip, lr} !! 33 addq $17,64,$17 30 1: PLD( pld [r1, #2 * L1_CACHE_BYT !! 34 31 PLD( pld [r1, #3 * L1_CACHE_BYT !! 35 stq $2,16($16) 32 2: !! 36 stq $3,24($16) 33 .rept (2 * L1_CACHE_BYTES / 16 - 1) !! 37 stq $4,32($16) 34 stmia r0!, {r3, r4, ip, lr} !! 38 stq $5,40($16) 35 ldmia r1!, {r3, r4, ip, lr} !! 39 36 .endr !! 40 stq $6,48($16) 37 subs r2, r2, #1 !! 41 stq $7,56($16) 38 stmia r0!, {r3, r4, ip, lr} !! 42 addq $16,64,$16 39 ldmiagt r1!, {r3, r4, ip, lr} !! 43 bne $18, 1b 40 bgt 1b !! 44 41 PLD( ldmiaeq r1!, {r3, r4, ip, lr} !! 45 ret 42 PLD( beq 2b !! 46 nop 43 ldmfd sp!, {r4, pc} !! 47 unop 44 ENDPROC(copy_page) !! 48 nop >> 49 >> 50 .end copy_page >> 51 EXPORT_SYMBOL(copy_page)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.