55 lines
565 B
ArmAsm
55 lines
565 B
ArmAsm
.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
|
|
|
|
|
|
|