test-container: disable ld.so system cache on DSO detection
[glibc.git] / sysdeps / sh / memset.S
blob6c53df018d5ec89110de16ae2c8409c404bdaa15
1 /* Copyright (C) 1999-2023 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <https://www.gnu.org/licenses/>.  */
18 #include <sysdep.h>
20 /* void *memset (t, c, len);  */
22 ENTRY(memset)
23         mov     #12,r0
24         cmp/gt  r6,r0
25         bt.s    L_byte_loop_init
26         mov     r4,r7
28         extu.b  r5,r5
29         swap.b  r5,r1
30         or      r1,r5
31         swap.w  r5,r1
32         or      r1,r5
34         mov     r4,r0
35         tst     #1,r0
36         bt      L_wordalign
38         mov.b   r5,@r4
39         add     #-1,r6
40         add     #1,r4
41         mov     r4,r0
43         .balignw 4,0x0009
44 L_wordalign:
45         tst     #2,r0
46         bt      L_word_loop_init
48         mov.w   r5,@r4
49         add     #-2,r6
50         add     #2,r4
51         mov     r4,r0
53         .balignw 4,0x0009
54 L_word_loop_init:
55         mov     r6,r3
56         shlr2   r3
57         mov     #7,r0
58         shlr    r3
59         and     r0,r6
61         .balignw 4,0x0009
62 L_2word_loop:
63         mov.l   r5,@r4
64         dt      r3
65         mov.l   r5,@(4,r4)
66         bf.s    L_2word_loop
67         add     #8,r4
69         .balignw 4,0x0009
70 L_byte_loop_init:
71         tst     r6,r6
72         bt      L_byte_exit
74         .balignw 4,0x0009
75 L_byte_loop:
76         mov.b   r5,@r4
77         dt      r6
78         bf.s    L_byte_loop
79         add     #1,r4
81         .balignw 4,0x0009
82 L_byte_exit:
83         rts
84         mov     r7,r0
85 END(memset)
86 libc_hidden_builtin_def (memset)