| /* | |
| * linux/arch/unicore32/lib/copy_page.S | |
| * | |
| * Code specific to PKUnity SoC and UniCore ISA | |
| * | |
| * Copyright (C) 2001-2010 GUAN Xue-tao | |
| * | |
| * This program is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License version 2 as | |
| * published by the Free Software Foundation. | |
| * | |
| * ASM optimised string functions | |
| */ | |
| #include <linux/linkage.h> | |
| #include <asm/assembler.h> | |
| #include <generated/asm-offsets.h> | |
| #include <asm/cache.h> | |
| #define COPY_COUNT (PAGE_SZ/256) | |
| .text | |
| .align 5 | |
| /* | |
| * UniCore optimised copy_page routine | |
| */ | |
| ENTRY(copy_page) | |
| stm.w (r17 - r19, lr), [sp-] | |
| mov r17, r0 | |
| mov r18, r1 | |
| mov r19, #COPY_COUNT | |
| 1: | |
| .rept 4 | |
| ldm.w (r0 - r15), [r18]+ | |
| stm.w (r0 - r15), [r17]+ | |
| .endr | |
| sub.a r19, r19, #1 | |
| bne 1b | |
| ldm.w (r17 - r19, pc), [sp]+ | |
| ENDPROC(copy_page) |