Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[deliverable/linux.git] / arch / h8300 / lib / memset.S
CommitLineData
a71a29de
YS
1/* memset.S */
2
3#include <asm/linkage.h>
4
5#if defined(CONFIG_CPU_H8300H)
6 .h8300h
7#endif
8#if defined(CONFIG_CPU_H8S)
9 .h8300s
10#endif
11 .text
12
13.global memset
14.global clear_user
15
16;;void *memset(*ptr, int c, size_t count)
17;; ptr = er0
18;; c = er1(r1l)
19;; count = er2
20memset:
21 btst #0,r0l
22 beq 2f
23
24 ;; odd address
251:
26 mov.b r1l,@er0
27 adds #1,er0
28 dec.l #1,er2
29 beq 6f
30
31 ;; even address
322:
33 mov.l er2,er3
34 cmp.l #4,er2
35 blo 4f
36 ;; count>=4 -> count/4
37#if defined(CONFIG_CPU_H8300H)
38 shlr.l er2
39 shlr.l er2
40#endif
41#if defined(CONFIG_CPU_H8S)
42 shlr.l #2,er2
43#endif
44 ;; byte -> long
45 mov.b r1l,r1h
46 mov.w r1,e1
473:
48 mov.l er1,@er0
49 adds #4,er0
50 dec.l #1,er2
51 bne 3b
524:
53 ;; count % 4
54 and.b #3,r3l
55 beq 6f
565:
57 mov.b r1l,@er0
58 adds #1,er0
59 dec.b r3l
60 bne 5b
616:
62 rts
63
64clear_user:
65 mov.l er1, er2
66 sub.l er1, er1
67 bra memset
68
69 .end
This page took 0.039355 seconds and 5 git commands to generate.