1/* 2 * linux/arch/unicore32/lib/copy_page.S 3 * 4 * Code specific to PKUnity SoC and UniCore ISA 5 * 6 * Copyright (C) 2001-2010 GUAN Xue-tao 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 * 12 * ASM optimised string functions 13 */ 14#include <linux/linkage.h> 15#include <asm/assembler.h> 16#include <generated/asm-offsets.h> 17#include <asm/cache.h> 18 19#define COPY_COUNT (PAGE_SZ/256) 20 21 .text 22 .align 5 23/* 24 * UniCore optimised copy_page routine 25 */ 26ENTRY(copy_page) 27 stm.w (r17 - r19, lr), [sp-] 28 mov r17, r0 29 mov r18, r1 30 mov r19, #COPY_COUNT 311: 32 .rept 4 33 ldm.w (r0 - r15), [r18]+ 34 stm.w (r0 - r15), [r17]+ 35 .endr 36 sub.a r19, r19, #1 37 bne 1b 38 ldm.w (r17 - r19, pc), [sp]+ 39ENDPROC(copy_page) 40