source: mainline/boot/arch/arm32/loader/asm.S@ da349da0

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since da349da0 was da349da0, checked in by Jakub Jermar <jakub@…>, 17 years ago

memcpy(), memmove() and similar functions return dst instead of src.
Fix all implementations, including those in assembly. ppc32 assembly
version didn't seem to be affected by this.

  • Property mode set to 100644
File size: 2.2 KB
RevLine 
[d630139]1#
[6b781c0]2# Copyright (c) 2007 Michal Kebrt
[d630139]3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
[6b781c0]29
[d630139]30.text
31
[6b781c0]32.global memcpy
33
34memcpy:
35 add r3, r1, #3
36 bic r3, r3, #3
37 cmp r1, r3
[da349da0]38 stmdb sp!, {r4, r5, lr}
39 mov r5, r0
[6b781c0]40 beq 4f
411:
42 cmp r2, #0
43 movne ip, #0
44 beq 3f
452:
46 ldrb r3, [ip, r1]
47 strb r3, [ip, r0]
48 add ip, ip, #1
49 cmp ip, r2
50 bne 2b
513:
[da349da0]52 mov r0, r5
53 ldmia sp!, {r4, r5, pc}
[6b781c0]544:
55 add r3, r0, #3
56 bic r3, r3, #3
57 cmp r0, r3
58 bne 1b
59 movs r4, r2, lsr #2
60 moveq lr, r4
61 beq 6f
62 mov lr, #0
63 mov ip, lr
645:
65 ldr r3, [ip, r1]
66 add lr, lr, #1
67 cmp lr, r4
68 str r3, [ip, r0]
69 add ip, ip, #4
70 bne 5b
716:
72 ands r4, r2, #3
73 beq 3b
74 mov r3, lr, lsl #2
75 add r0, r3, r0
76 add ip, r3, r1
77 mov r2, #0
787:
79 ldrb r3, [r2, ip]
80 strb r3, [r2, r0]
81 add r2, r2, #1
82 cmp r2, r4
83 bne 7b
84 b 3b
85
[d630139]86
Note: See TracBrowser for help on using the repository browser.