Commit | Line | Data |
---|---|---|
a6730a00 | 1 | /* Kcmpd.s 1.4 90/12/04 */ |
6f4b515e | 2 | |
9d1834ba | 3 | #include "../tahoe/SYS.h" |
6f4b515e | 4 | |
2b252132 SL |
5 | /* |
6 | * cmpd(hi1, lo1, hi2, lo2) | |
7 | * register hi1, hi2; | |
8 | * register unsigned lo1, lo2; | |
9 | *{ | |
10 | * if(hi1 < 0) { | |
11 | * hi1 ^= 0x80000000; | |
12 | * if(lo1) { | |
13 | * lo1 = -lo1; | |
14 | * hi1 = ~hi1; | |
15 | * } else | |
16 | * hi1 = -hi1; | |
17 | * } | |
18 | * if(hi2 < 0) { | |
19 | * hi2 ^= 0x80000000; | |
20 | * if(lo2) { | |
21 | * lo2 = -lo2; | |
22 | * hi2 = ~hi2; | |
23 | * } else | |
24 | * hi2 = -hi2; | |
25 | * } | |
26 | * if(hi1 != hi2) | |
27 | * return(hi1>hi2 ? 1 : -1); | |
28 | * if(lo1 != lo2) | |
29 | * return(lo1>lo2 ? 1 : -1); | |
30 | * return(0); | |
31 | *} | |
32 | */ | |
33 | .text | |
34 | ENTRY(Kcmpd, 0) | |
35 | movl 8(fp),r3 | |
36 | movl 12(fp),r4 | |
37 | movl 16(fp),r2 | |
38 | movl 4(fp),r5 | |
39 | jgeq 1f | |
40 | xorl2 $0x80000000,r5 | |
41 | tstl r3 | |
42 | jeql 2f | |
43 | mnegl r3,r3 | |
44 | mcoml r5,r5 | |
45 | jbr 1f | |
46 | 2: | |
47 | mnegl r5,r5 | |
48 | 1: | |
49 | tstl r4 | |
50 | jgeq 1f | |
51 | xorl2 $0x80000000,r4 | |
52 | tstl r2 | |
53 | jeql 2f | |
54 | mnegl r2,r2 | |
55 | mcoml r4,r4 | |
56 | jbr 1f | |
57 | 2: | |
58 | mnegl r4,r4 | |
59 | 1: | |
60 | cmpl r5,r4 | |
61 | jeql 1f | |
62 | jleq 2f | |
63 | movl $1,r0 | |
64 | ret | |
65 | 2: | |
66 | mnegl $1,r0 | |
67 | ret | |
68 | 1: | |
69 | cmpl r3,r2 | |
70 | jeql 1f | |
71 | jlequ 2f | |
72 | movl $1,r0 | |
73 | ret | |
74 | 2: | |
75 | mnegl $1,r0 | |
76 | ret | |
77 | 1: | |
78 | clrl r0 | |
79 | ret |