.text .globl __divsi3 __divsi3: bltz a0, .L10 bltz a1, .L11 .globl __udivsi3 __udivsi3: mv a2, a1 mv a1, a0 li a0, -1 beqz a2, .L5 li a3, 1 bgeu a2, a1, .L2 .L1: blez a2, .L2 slli a2, a2, 1 slli a3, a3, 1 bgtu a1, a2, .L1 .L2: li a0, 0 .L3: bltu a1, a2, .L4 sub a1, a1, a2 or a0, a0, a3 .L4: srli a3, a3, 1 srli a2, a2, 1 bnez a3, .L3 .L5: ret .globl __umodsi3 __umodsi3: move t0, ra jal __udivsi3 move a0, a1 jr t0 .L10: neg a0, a0 bgtz a1, .L12 neg a1, a1 j __udivsi3 .L11: neg a1, a1 .L12: move t0, ra jal __udivsi3 neg a0, a0 jr t0 .globl __modsi3 __modsi3: move t0, ra bltz a1, .L31 bltz a0, .L32 .L30: jal __udivsi3 move a0, a1 jr t0 .L31: neg a1, a1 bgez a0, .L30 .L32: neg a0, a0 jal __udivsi3 neg a0, a1 jr t0