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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [arch/] [sh/] [lib/] [memset.S] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* $Id: memset.S,v 1.1.1.1 2004-04-15 01:17:17 phoenix Exp $
2
 *
3
 * "memset" implementation of SuperH
4
 *
5
 * Copyright (C) 1999  Niibe Yutaka
6
 *
7
 */
8
 
9
/*
10
 *            void *memset(void *s, int c, size_t n);
11
 */
12
 
13
#include 
14
 
15
ENTRY(memset)
16
        tst     r6,r6
17
        bt/s    5f              ! if n=0, do nothing
18
         add    r6,r4
19
        mov     #12,r0
20
        cmp/gt  r6,r0
21
        bt/s    4f              ! if it's too small, set a byte at once
22
         mov    r4,r0
23
        and     #3,r0
24
        cmp/eq  #0,r0
25
        bt/s    2f              ! It's aligned
26
         sub    r0,r6
27
1:
28
        dt      r0
29
        bf/s    1b
30
         mov.b  r5,@-r4
31
2:                              ! make VVVV
32
        swap.b  r5,r0           !   V0
33
        or      r0,r5           !   VV
34
        swap.w  r5,r0           ! VV00
35
        or      r0,r5           ! VVVV
36
        !
37
        mov     r6,r0
38
        shlr2   r0
39
        shlr    r0              ! r0 = r6 >> 3
40
3:
41
        dt      r0
42
        mov.l   r5,@-r4         ! set 8-byte at once
43
        bf/s    3b
44
         mov.l  r5,@-r4
45
        !
46
        mov     #7,r0
47
        and     r0,r6
48
        tst     r6,r6
49
        bt      5f
50
        ! fill bytes
51
4:
52
        dt      r6
53
        bf/s    4b
54
         mov.b  r5,@-r4
55
5:
56
        rts
57
         mov    r4,r0

powered by: WebSVN 2.1.0

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