date and time created 85/08/02 15:31:19 by sam
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Sat, 3 Aug 1985 06:31:19 +0000 (22:31 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Sat, 3 Aug 1985 06:31:19 +0000 (22:31 -0800)
SCCS-vsn: sys/tahoe/math/Kcvtlf.s 1.1
SCCS-vsn: sys/tahoe/math/Kfp_exp.s 1.1

usr/src/sys/tahoe/math/Kcvtlf.s [new file with mode: 0644]
usr/src/sys/tahoe/math/Kfp_exp.s [new file with mode: 0644]

diff --git a/usr/src/sys/tahoe/math/Kcvtlf.s b/usr/src/sys/tahoe/math/Kcvtlf.s
new file mode 100644 (file)
index 0000000..bcb3192
--- /dev/null
@@ -0,0 +1,64 @@
+#include       "fp.h"
+#include       "fp_in_krnl.h"
+
+       .text
+       .globl  _Kcvtlf     # _Kcvtlf(acc_most,acc_least,op_most,op_least,hfs)
+_Kcvtlf:       .word   0x003c          # we use r2,r3,r4,r5
+
+ #
+ #Some initializations:
+ #
+       clrl    r1
+       clrl    r4              # r4 - negative flag.
+       clrl    r2              # r2 - exponent.
+       movl    12(fp),r0       # fetch operand.
+       movl    r0,r5           # need another copy.
+       jeql    retzero         # return zero.
+       jgtr    positive
+       mnegl   r0,r0
+       jvs     retmin          # return minimum integer.
+       incl    r4              # remember it was negative.
+       movl    r0,r5           # remember the negated value.
+ #
+ #Compute exponent:
+ #
+positive:
+       ffs     r0,r1
+       incl    r1
+       addl2   r1,r2
+       shrl    r1,r0,r0
+       jneq    positive        # look for more set bits.
+ #
+ #we have the exponent in r2.
+ #
+       movl    r5,r0           # r0 will hold the resulting f.p. number.
+ #
+ #Shift the fraction part to its proper place:
+ #
+       subl3   r2,$HID_POS,r3
+       jlss    shiftr          # if less then zero we have to shift right.
+       shll    r3,r0,r0        # else we shift left.
+       jmp     shifted
+shiftr:
+       mnegl   r3,r3
+       shrl    r3,r0,r0
+shifted:
+       andl2   $CLEARHID,r0    # clear the hidden bit.
+       shal    $EXPSHIFT,r2,r2 # shift the exponent to its proper place.
+       orl2    $EXPSIGN,r2     # set the exponent sign bit(to bias it).
+       orl2    r2,r0           # combine exponent & fraction.
+       bbc     $0,r4,sign_ok   # do we  have to set the sign bit?
+       orl2    $SIGNBIT,r0     # yes...
+sign_ok:
+       ret
+
+retzero:
+       clrl    r0
+       ret
+
+retmin:
+       movl    $0xd0000000,r0
+       ret
+
+
+       
diff --git a/usr/src/sys/tahoe/math/Kfp_exp.s b/usr/src/sys/tahoe/math/Kfp_exp.s
new file mode 100644 (file)
index 0000000..6991870
--- /dev/null
@@ -0,0 +1,22 @@
+#include       "fp.h"
+#include       "fp_in_krnl.h"
+
+       .globl  Kfpover
+Kfpover:
+       .word   0x0000
+       movl    $HUGE0,r0
+       movl    $HUGE1,r1
+       ret
+
+       .globl  Kfpunder
+Kfpunder:
+       .word   0x0000
+       clrl    r0
+       clrl    r1
+       ret
+
+       .globl  Kfpzdiv
+Kfpzdiv:
+       .word   0x0000
+       divl2   $0,r1           # force divission by zero.
+       ret