License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / arch / h8300 / lib / memset.S
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
a71a29de
YS
2/* memset.S */
3
4#include <asm/linkage.h>
5
6#if defined(CONFIG_CPU_H8300H)
7 .h8300h
8#endif
9#if defined(CONFIG_CPU_H8S)
10 .h8300s
11#endif
12 .text
13
14.global memset
15.global clear_user
16
17;;void *memset(*ptr, int c, size_t count)
18;; ptr = er0
19;; c = er1(r1l)
20;; count = er2
21memset:
22 btst #0,r0l
23 beq 2f
24
25 ;; odd address
261:
27 mov.b r1l,@er0
28 adds #1,er0
29 dec.l #1,er2
30 beq 6f
31
32 ;; even address
332:
34 mov.l er2,er3
35 cmp.l #4,er2
36 blo 4f
37 ;; count>=4 -> count/4
38#if defined(CONFIG_CPU_H8300H)
39 shlr.l er2
40 shlr.l er2
41#endif
42#if defined(CONFIG_CPU_H8S)
43 shlr.l #2,er2
44#endif
45 ;; byte -> long
46 mov.b r1l,r1h
47 mov.w r1,e1
483:
49 mov.l er1,@er0
50 adds #4,er0
51 dec.l #1,er2
52 bne 3b
534:
54 ;; count % 4
55 and.b #3,r3l
56 beq 6f
575:
58 mov.b r1l,@er0
59 adds #1,er0
60 dec.b r3l
61 bne 5b
626:
63 rts
64
65clear_user:
66 mov.l er1, er2
67 sub.l er1, er1
68 bra memset
69
70 .end