rearrange globals
[picodrive.git] / platform / gp2x / code940 / uClibc / memset.s
... / ...
CommitLineData
1/* Copyright (C) 1998 Free Software Foundation, Inc.\r
2 This file is part of the GNU C Library.\r
3 Contributed by Philip Blundell <philb@gnu.org>\r
4\r
5 The GNU C Library is free software; you can redistribute it and/or\r
6 modify it under the terms of the GNU Lesser General Public\r
7 License as published by the Free Software Foundation; either\r
8 version 2.1 of the License, or (at your option) any later version.\r
9\r
10 The GNU C Library is distributed in the hope that it will be useful,\r
11 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
13 Lesser General Public License for more details.\r
14\r
15 You should have received a copy of the GNU Lesser General Public\r
16 License along with the GNU C Library; if not, write to the Free\r
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\r
18 02111-1307 USA. */\r
19\r
20@ #include <sys/syscall.h>\r
21\r
22 .text\r
23 .global memset\r
24 .type memset,%function\r
25 .align 4\r
26\r
27memset:\r
28 mov a4, a1\r
29 cmp a3, $8 @ at least 8 bytes to do?\r
30 blt 2f\r
31 orr a2, a2, a2, lsl $8\r
32 orr a2, a2, a2, lsl $16\r
331:\r
34 tst a4, $3 @ aligned yet?\r
35 strneb a2, [a4], $1\r
36 subne a3, a3, $1\r
37 bne 1b\r
38 mov ip, a2\r
391:\r
40 cmp a3, $8 @ 8 bytes still to do?\r
41 blt 2f\r
42 stmia a4!, {a2, ip}\r
43 sub a3, a3, $8\r
44 cmp a3, $8 @ 8 bytes still to do?\r
45 blt 2f\r
46 stmia a4!, {a2, ip}\r
47 sub a3, a3, $8\r
48 cmp a3, $8 @ 8 bytes still to do?\r
49 blt 2f\r
50 stmia a4!, {a2, ip}\r
51 sub a3, a3, $8\r
52 cmp a3, $8 @ 8 bytes still to do?\r
53 stmgeia a4!, {a2, ip}\r
54 subge a3, a3, $8\r
55 bge 1b\r
562:\r
57 movs a3, a3 @ anything left?\r
58 moveq pc, lr @ nope\r
59 rsb a3, a3, $7\r
60 add pc, pc, a3, lsl $2\r
61 mov r0, r0\r
62 strb a2, [a4], $1\r
63 strb a2, [a4], $1\r
64 strb a2, [a4], $1\r
65 strb a2, [a4], $1\r
66 strb a2, [a4], $1\r
67 strb a2, [a4], $1\r
68 strb a2, [a4], $1\r
69 mov pc, lr\r
70\r
71.size memset,.-memset;\r
72\r