|
|
1.1 root 1: !
2: ! SPARC assembler primitives for rsalib.c
3: ! written by Branko Lankester, [email protected] 8/29/91
4: !
5: ! other sources must be compiled with UNIT32 and HIGHFIRST defined
6: !
7: .seg "text"
8: .proc 4
9: .global _P_SETP
10: _P_SETP:
11: retl
12: nop
13:
14:
15: .proc 4
16: .global _P_ADDC
17: _P_ADDC:
18: sethi %hi(_global_precision), %o3
19: ldsh [%o3+%lo(_global_precision)], %o3
20: and %o2, 1, %o2
21: dec %o3
22: sll %o3, 2, %o3
23: ld [%o0+%o3], %o4
24: add_loop:
25: ld [%o1+%o3], %o5
26: subcc %g0, %o2, %g0
27: addxcc %o4, %o5, %o4
28: addx %g0, %g0, %o2
29: st %o4, [%o0+%o3]
30: subcc %o3, 4, %o3
31: bge,a add_loop
32: ld [%o0+%o3], %o4
33: retl
34: mov %o2, %o0 ! return carry
35:
36:
37: .proc 4
38: .global _P_SUBB
39: _P_SUBB:
40: sethi %hi(_global_precision), %o3
41: ldsh [%o3+%lo(_global_precision)], %o3
42: and %o2, 1, %o2
43: dec %o3
44: sll %o3, 2, %o3
45: ld [%o0+%o3], %o4
46: sub_loop:
47: ld [%o1+%o3], %o5
48: subcc %g0, %o2, %g0
49: subxcc %o4, %o5, %o4
50: addx %g0, %g0, %o2
51: st %o4, [%o0+%o3]
52: subcc %o3, 4, %o3
53: bge,a sub_loop
54: ld [%o0+%o3], %o4
55: retl
56: mov %o2, %o0
57:
58:
59: .proc 4
60: .global _P_ROTL
61: _P_ROTL:
62: sethi %hi(_global_precision), %o3
63: ldsh [%o3+%lo(_global_precision)], %o3
64: and %o1, 1, %o1
65: dec %o3
66: sll %o3, 2, %o3
67: ld [%o0+%o3], %o4
68: rot_loop:
69: sll %o4, 1, %o5
70: or %o5, %o1, %o5
71: st %o5, [%o0+%o3]
72: srl %o4, 31, %o1
73: subcc %o3, 4, %o3
74: bge,a rot_loop
75: ld [%o0+%o3], %o4
76: retl
77: mov %o1, %o0
78:
79: .seg "data"
80:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.