1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
! Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
! Imagination Technologies Ltd
!
! Integer modulus routines.
!
!!
!! 32-bit modulus unsigned i/p - passed unsigned 32-bit numbers
!!
.text
.global ___umodsi3
.type ___umodsi3,function
.align 2
___umodsi3:
MOV D0FrT,D1RtP ! Save original return address
CALLR D1RtP,___udivsi3
MOV D1RtP,D0FrT ! Recover return address
MOV D0Re0,D1Ar1 ! Return remainder
MOV PC,D1RtP
.size ___umodsi3,.-___umodsi3
!!
!! 32-bit modulus signed i/p - passed signed 32-bit numbers
!!
.global ___modsi3
.type ___modsi3,function
.align 2
___modsi3:
MOV D0FrT,D1RtP ! Save original return address
MOV A0.2,D1Ar1 ! Save A in A0.2
CALLR D1RtP,___divsi3
MOV D1RtP,D0FrT ! Recover return address
MOV D1Re0,A0.2 ! Recover A
MOV D0Re0,D1Ar1 ! Return remainder
ORS D1Re0,D1Re0,D1Re0 ! Was A negative?
NEG D1Ar1,D1Ar1 ! Negate remainder
MOVMI D0Re0,D1Ar1 ! Return neg remainder
MOV PC, D1RtP
.size ___modsi3,.-___modsi3
|