Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/h8300/memset.S')
-rw-r--r--newlib/libc/machine/h8300/memset.S63
1 files changed, 6 insertions, 57 deletions
diff --git a/newlib/libc/machine/h8300/memset.S b/newlib/libc/machine/h8300/memset.S
index c92169c69..c12f17b4e 100644
--- a/newlib/libc/machine/h8300/memset.S
+++ b/newlib/libc/machine/h8300/memset.S
@@ -1,63 +1,13 @@
-#include "setarch.h"
-
#include "defines.h"
-#if defined (__H8300SX__)
-
- .global _memset
-_memset:
- ; Use er3 is a temporary since er0 must remain unchanged on exit.
- mov.l er0,er3
-
- ; Fill er1 with the byte to copy.
- mov.b r1l,r1h
- mov.w r1,e1
-
- ; Account for any excess bytes and words that will be copied after
- ; the main loop. r2 >= 0 if there is a longword to copy.
- sub #4,LEN(r2)
- blo longs_done
-
- ; Copy one byte if doing so will make er3 word-aligned.
- ; This isn't needed for correctness but it makes the main loop
- ; slightly faster.
- bld #0,r3l
- bcc word_aligned
- mov.b r1l,@er3+
- sub #1,LEN(r2)
- blo longs_done
-
-word_aligned:
- ; Likewise one word for longword alignment.
- bld #1,r3l
- bcc long_copy
- mov.w r1,@er3+
- sub #2,LEN(r2)
- blo longs_done
-
-long_copy:
- ; Copy longwords.
- mov.l er1,@er3+
- sub #4,LEN(r2)
- bhs long_copy
-
-longs_done:
- ; At this point, we need to copy r2 & 3 bytes. Copy a word
- ; if necessary.
- bld #1,r2l
- bcc words_done
- mov.w r1,@er3+
-
-words_done:
- ; Copy a byte.
- bld #0,r2l
- bcc bytes_done
- mov.b r1l,@er3+
+#ifdef __H8300H__
+ .h8300h
+#endif
-bytes_done:
- rts
+#ifdef __H8300S__
+ .h8300s
+#endif
-#else
; A0P pointer to cursor
; A1P thing to copy
@@ -99,4 +49,3 @@ byteloop:
bne byteloop
rts
-#endif