1 |
60d3bef2
|
(no author)
|
/*
|
2 |
|
|
* linux/arch/arm/lib/memcpy.S
|
3 |
|
|
*
|
4 |
|
|
* Author: Nicolas Pitre
|
5 |
|
|
* Created: Sep 28, 2005
|
6 |
|
|
* Copyright: MontaVista Software, Inc.
|
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 |
|
|
|
13 |
|
|
#include <asm/linkage.h>
|
14 |
|
|
#include <asm/assembler.h>
|
15 |
|
|
|
16 |
|
|
.macro ldr1w ptr reg abort
|
17 |
|
|
ldr \reg, [\ptr], #4
|
18 |
|
|
.endm
|
19 |
|
|
|
20 |
|
|
.macro ldr4w ptr reg1 reg2 reg3 reg4 abort
|
21 |
|
|
ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
|
22 |
|
|
.endm
|
23 |
|
|
|
24 |
|
|
.macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
|
25 |
|
|
ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
|
26 |
|
|
.endm
|
27 |
|
|
|
28 |
|
|
.macro ldr1b ptr reg cond=al abort
|
29 |
|
|
ldr\cond\()b \reg, [\ptr], #1
|
30 |
|
|
.endm
|
31 |
|
|
|
32 |
|
|
.macro str1w ptr reg abort
|
33 |
|
|
str \reg, [\ptr], #4
|
34 |
|
|
.endm
|
35 |
|
|
|
36 |
|
|
.macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
|
37 |
|
|
stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
|
38 |
|
|
.endm
|
39 |
|
|
|
40 |
|
|
.macro str1b ptr reg cond=al abort
|
41 |
|
|
str\cond\()b \reg, [\ptr], #1
|
42 |
|
|
.endm
|
43 |
|
|
|
44 |
|
|
.macro enter reg1 reg2
|
45 |
|
|
stmdb sp!, {r0, \reg1, \reg2}
|
46 |
|
|
.endm
|
47 |
|
|
|
48 |
|
|
.macro exit reg1 reg2
|
49 |
|
|
ldmfd sp!, {r0, \reg1, \reg2}
|
50 |
|
|
.endm
|
51 |
|
|
|
52 |
|
|
.text
|
53 |
|
|
|
54 |
|
|
/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
|
55 |
|
|
|
56 |
|
|
ENTRY(memcpy)
|
57 |
|
|
|
58 |
|
|
#include "copy_template.S"
|