avoid null pointer on machine check printf's
[unix-history] / usr / src / sys / tahoe / math / Klogf.s
CommitLineData
9d1834ba 1/* Klogf.s 1.3 86/01/05 */
2b252132 2
9d1834ba 3#include "../tahoe/SYS.h"
2b252132 4
3893ac9d 5 .text
2b252132 6ENTRY(Klogf, R5|R4|R3|R2)
3893ac9d
SL
7 subl3 $88,fp,sp
8 clrl 8(fp)
9 tstl 4(fp)
10 jgtr L53
2b252132
SL
11 movl small+4,r1
12 movl small,r0
3893ac9d
SL
13 ret
14L53: pushl 20(fp) # hfs
15 subl3 $88,fp,-(sp) # &exp
16 pushl 8(fp) # arg
17 pushl 4(fp)
18 callf $20,_Kfrexpf
19 ldd r0
20 # movl r1,-56(fp)
21 std -60(fp) # movl r0,-60(fp)
22 jbr L55
23L2000001:
24 pushl 20(fp) # hfs
2b252132 25 ldd two # 2.0
3893ac9d
SL
26 pushd
27 ldd -60(fp) # x
28 pushd
29 callf $24,_Kmuld
30 ldd r0
31 std -60(fp)
32 subl2 $1,-88(fp)
2b252132 33L55: cmpd2 -60(fp),half
3893ac9d
SL
34 jlss L2000001
35 cmpd2 -60(fp),_sqrto2
36 jgeq L59
37 pushl 20(fp) # hfs
38 ldd -60(fp) # x
39 pushd
2b252132 40 ldd two # 2.0
3893ac9d
SL
41 pushd
42 callf $24,_Kmuld
43 ldd r0
44 std -60(fp)
45 subl2 $1,-88(fp)
46L59: pushl 20(fp) # hfs
2b252132 47 ldd one # 1.0
3893ac9d
SL
48 pushd
49 ldd -60(fp) # x
50 pushd
51 callf $24,_Ksubd
52 ldd r0
53 std r2
54 pushl 20(fp) # hfs
2b252132 55 ldd one # 1.0
3893ac9d
SL
56 pushd
57 ldd -60(fp) # x
58 pushd
59 callf $24,_Kaddd
60 ldd r0
61 std r4
62 pushl 20(fp) # hfs
63 ldd r4 # temp result of x-1
64 pushd
65 ldd r2 # temp result of x+1
66 pushd
67 callf $24,_Kdivd
68 ldd r0
69 std -68(fp) # z
70 pushl 20(fp) # hfs
71 pushd # z
72 pushd # z
73 callf $24,_Kmuld
74 ldd r0
75 std -76(fp) # zsq
76 pushl 20(fp) # hfs
77 ldd -76(fp) # zsq
78 pushd
79 ldd _p1 # p1
80 pushd
81 callf $24,_Kmuld
82 ldd r0
83 std r2
84 pushl 20(fp) # hfs
85 ldd _p0 # p0
86 pushd
87 ldd r2
88 pushd
89 callf $24,_Kaddd
90 ldd r0
91 std -84(fp) # temp
92 pushl 20(fp) # hfs
93 ldd -76(fp) # zsq
94 pushd
95 ldd _q1
96 pushd
97 callf $24,_Kmuld
98 ldd r0
99 std r2
100 pushl 20(fp) # hfs
101 ldd _q0 # q0
102 pushd
103 ldd r2
104 pushd
105 callf $24,_Kaddd
106 ldd r0
107 std r2 # temp result of (q1*zsq+q0)
108 pushl 20(fp) # hfs
109 ldd r2
110 pushd
111 ldd -84(fp) # temp
112 pushd
113 callf $24,_Kdivd
114 ldd r0
115 std -84(fp) # put in temp
116 pushl 20(fp) # hfs
117 ldd -68(fp) # z
118 pushd
119 ldd -84(fp)
120 pushd
121 callf $24,_Kmuld
122 ldd r0
123 std r2
124 pushl 20(fp) #hfs
125 pushl $0 # 0 pad
126 pushl -88(fp) # exp
127 pushl $0 # dummy
128 pushl $0 # dummy
129 callf $24,_Kcvtld
130 pushl 20(fp) # hfs
131 ldd _log2 # log2
132 pushd
133 pushl r1 # exp converted
134 pushl r0
135 callf $24,_Kmuld
136 ldd r0
137 std r4
138 pushl 20(fp) # hfs
139 ldd r2 # result of temp*z
140 pushd
141 ldd r4
142 pushd
143 callf $24,_Kaddd
144 ldd r0
145 cvdf
146 stf r0
147 clrl r1
148 ret
2b252132
SL
149
150 .data
151 .align 2
152_log2: .long 0x40317217, 0xf7d1cf7a # .double 0.69314718055994531
153_ln10: .long 0x41135d8d, 0xddaaa8ac # .double 2.3025850929940457
154_sqrto2:.long 0x403504f3, 0x33f9de65 # .double 0.70710678118654753
155_p0: .long 0xc154114d, 0xeb0ba468 # .double -3.31355617479
156_p1: .long 0x40654226, 0x56bd0c4c # .double 0.89554061525
157_q0: .long 0xc0d4114c, 0xfdc7df02 # .double -1.65677797691
158_q1: .long 0x40800000, 0x00000000 # .double 1
159small: .long 0xfffffffe, 0xfffffffe # .double -1.7014117331926443e+38
160half: .long 0x40000000, 0x00000000 # .double 0.5
161two: .long 0x41000000, 0x00000000 # .double 2
162one: .long 0x40800000, 0x00000000 # .double 1