OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libc/] [machine/] [xscale/] [memset.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1010 ivang
#if defined __thumb__
2
 
3
#include "../../string/memset.c"
4
 
5
#else
6
 
7
#include <string.h>
8
#include "xscale.h"
9
 
10
void *
11
memset (void *dst, int c, size_t len)
12
{
13
  int dummy;
14
  asm volatile ("tst    %0, #0x3"
15
#ifndef __OPTIMIZE_SIZE__
16
"
17
        beq     1f
18
        b       2f
19
0:
20
        strb    %1, [%0], #1
21
        tst     %0, #0x3
22
        beq     1f
23
2:
24
        movs    r3, %2
25
        sub     %2, %2, #1
26
        bne     0b
27
1:
28
        cmp     %2, #0x3
29
        bls     2f
30
        and     %1, %1, #0xff
31
        orr     lr, %1, %1, asl #8
32
        cmp     %2, #0xf
33
        orr     lr, lr, lr, asl #16
34
        bls     1f
35
        mov     r3, lr
36
        mov     r4, lr
37
        mov     r5, lr
38
0:
39
        sub     %2, %2, #16
40
        stmia   %0!, { r3, r4, r5, lr }
41
        cmp     %2, #0xf
42
        bhi     0b
43
1:
44
        cmp     %2, #0x7
45
        bls     1f
46
        mov     r3, lr
47
0:
48
        sub     %2, %2, #8
49
        stmia   %0!, { r3, lr }
50
        cmp     %2, #0x7
51
        bhi     0b
52
1:
53
        cmp     %2, #0x3
54
        bls     2f
55
0:
56
        sub     %2, %2, #4
57
        str     lr, [%0], #4
58
        cmp     %2, #0x3
59
        bhi     0b
60
"
61
#endif /* !__OPTIMIZE_SIZE__ */
62
"
63
2:
64
        movs    r3, %2
65
        sub     %2, %2, #1
66
        beq     1f
67
0:
68
        movs    r3, %2
69
        sub     %2, %2, #1
70
        strb    %1, [%0], #1
71
        bne     0b
72
1:"
73
 
74
       : "=&r" (dummy), "=&r" (c), "=&r" (len)
75
       : "0" (dst), "1" (c), "2" (len)
76
       : "memory", "r3", "r4", "r5", "lr");
77
  return dst;
78
}
79
 
80
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.