repo.or.cz
/
linux
/
fpc-iii.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
x86/efi: Enforce CONFIG_RELOCATABLE for EFI boot stub
[linux/fpc-iii.git]
/
arch
/
h8300
/
lib
/
memset.S
blob
4549a64c5b79655a5991ec77db03cbd2c96ac5c6
1
/* memset.S */
2
3
#include <asm/linkage.h>
4
5
#if defined(__H8300H__)
6
.h8300h
7
#endif
8
#if defined(__H8300S__)
9
.h8300s
10
#endif
11
.text
12
13
.global _memset
14
15
;;void *memset(*ptr, int c, size_t count)
16
;; ptr = er0
17
;; c = er1(r1l)
18
;; count = er2
19
_memset:
20
btst #0,r0l
21
beq 2f
22
23
;; odd address
24
1:
25
mov.b r1l,@er0
26
adds #1,er0
27
dec.l #1,er2
28
beq 6f
29
30
;; even address
31
2:
32
mov.l er2,er3
33
cmp.l #4,er2
34
blo 4f
35
;; count>=4 -> count/4
36
#if defined(__H8300H__)
37
shlr.l er2
38
shlr.l er2
39
#endif
40
#if defined(__H8300S__)
41
shlr.l #2,er2
42
#endif
43
;; byte -> long
44
mov.b r1l,r1h
45
mov.w r1,e1
46
3:
47
mov.l er1,@er0
48
adds #4,er0
49
dec.l #1,er2
50
bne 3b
51
4:
52
;; count % 4
53
and.b #3,r3l
54
beq 6f
55
5:
56
mov.b r1l,@er0
57
adds #1,er0
58
dec.b r3l
59
bne 5b
60
6:
61
rts