summaryrefslogtreecommitdiff
path: root/newlib/libc/machine/h8300/strcmp.S
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-15 09:38:53 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-15 09:39:34 -0500
commitf95a4a932476be2ba99e2fd081e8d2bc6ea12813 (patch)
tree75f67192cb2d7b7b575c94edda318e475239b63c /newlib/libc/machine/h8300/strcmp.S
parentf60aca96985e68c7d8a52eb7bc955fb80e132f73 (diff)
Import newlib and create makefile
Diffstat (limited to 'newlib/libc/machine/h8300/strcmp.S')
-rw-r--r--newlib/libc/machine/h8300/strcmp.S45
1 files changed, 45 insertions, 0 deletions
diff --git a/newlib/libc/machine/h8300/strcmp.S b/newlib/libc/machine/h8300/strcmp.S
new file mode 100644
index 0000000..8dec7c0
--- /dev/null
+++ b/newlib/libc/machine/h8300/strcmp.S
@@ -0,0 +1,45 @@
+#include "defines.h"
+
+#ifdef __H8300H__
+ .h8300h
+#endif
+
+#ifdef __H8300S__
+ .h8300s
+#endif
+
+ .section .text
+ .align 2
+ .global _strcmp
+_strcmp:
+ MOVP A0P,A2P
+ MOVP A1P,A3P
+.L5:
+ mov.b @A2P+,A1L
+ beq .L3
+ mov.b @A3P+,A0L
+ cmp.b A0L,A1L
+ beq .L5
+ subs #1,A3P
+.L3:
+ mov.b @(-1,A2P),A0L
+ mov.b @A3P,A1L
+ sub.b A1L,A0L
+ ; We have to sign extend the result to 32bits just in case
+ ; we are using 32bit integers.
+#ifdef __H8300H__
+ exts.w r0
+ exts.l er0
+#else
+#ifdef __H8300S__
+ exts.w r0
+ exts.l er0
+#else
+ bld #7,r0l
+ subx r0h,r0h
+ subx r1l,r1l
+ subx r1h,r1h
+#endif
+#endif
+ rts
+ .end