summaryrefslogtreecommitdiff
path: root/newlib/libc/machine/h8500/divhi3.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/h8500/divhi3.S
parentf60aca96985e68c7d8a52eb7bc955fb80e132f73 (diff)
Import newlib and create makefile
Diffstat (limited to 'newlib/libc/machine/h8500/divhi3.S')
-rw-r--r--newlib/libc/machine/h8500/divhi3.S54
1 files changed, 54 insertions, 0 deletions
diff --git a/newlib/libc/machine/h8500/divhi3.S b/newlib/libc/machine/h8500/divhi3.S
new file mode 100644
index 0000000..ee31351
--- /dev/null
+++ b/newlib/libc/machine/h8500/divhi3.S
@@ -0,0 +1,54 @@
+ .title "H8/500 DIVIDE"
+!! 2 byte integer Divide code for the H8/500
+!!
+!! Steve Chamberlain
+!! sac@cygnus.com
+!!
+!!
+
+!! args in r1 and r4, result in r0/r1
+
+#if __CODE__==32
+#define RET prts
+#else
+#define RET rts
+#endif
+ .global __divmodhi4
+
+
+__divmodhi4:
+ clr.w r0
+ tst.w r1 ! neg arg1
+ bpl PU
+
+
+ neg.w r1
+NU: tst.w r4
+ bmi NN
+
+NP: divxu.w r4,r0
+ neg.w r0
+ neg.w r1
+ RET
+
+NN: neg.w r4
+ divxu.w r4,r0
+ neg.w r0 ! get rem sign right
+ RET
+
+
+PU:
+ tst.w r4
+ bpl PP
+
+
+PN: neg.w r4
+ divxu.w r4,r0
+ neg.w r1
+ RET
+
+PP: divxu.w r4,r0 ! rem in r0, q in r1
+ RET
+
+
+