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