Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
[linux-2.6.git] / arch / unicore32 / lib / copy_page.S
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  */
26 ENTRY(copy_page)
27                 stm.w   (r17 - r19, lr), [sp-]
28                 mov     r17, r0
29                 mov     r18, r1
30                 mov     r19, #COPY_COUNT
31 1:
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]+
39 ENDPROC(copy_page)