diff options
Diffstat (limited to 'pk/fp_asm.S')
-rw-r--r-- | pk/fp_asm.S | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/pk/fp_asm.S b/pk/fp_asm.S new file mode 100644 index 0000000..c6c8bba --- /dev/null +++ b/pk/fp_asm.S @@ -0,0 +1,88 @@ +#include "pcr.h" + + .text + .globl get_fp_state + .ent get_fp_state +get_fp_state: + + mffsr $v0 + + fsd $f0 , 0($a0) + fsd $f1 , 8($a0) + fsd $f2 , 16($a0) + fsd $f3 , 24($a0) + fsd $f4 , 32($a0) + fsd $f5 , 40($a0) + fsd $f6 , 48($a0) + fsd $f7 , 56($a0) + fsd $f8 , 64($a0) + fsd $f9 , 72($a0) + fsd $f10, 80($a0) + fsd $f11, 88($a0) + fsd $f12, 96($a0) + fsd $f13,104($a0) + fsd $f14,112($a0) + fsd $f15,120($a0) + fsd $f16,128($a0) + fsd $f17,136($a0) + fsd $f18,144($a0) + fsd $f19,152($a0) + fsd $f20,160($a0) + fsd $f21,168($a0) + fsd $f22,176($a0) + fsd $f23,184($a0) + fsd $f24,192($a0) + fsd $f25,200($a0) + fsd $f26,208($a0) + fsd $f27,216($a0) + fsd $f28,224($a0) + fsd $f29,232($a0) + fsd $f30,240($a0) + fsd $f31,248($a0) + + ret + + .end get_fp_state + + .globl put_fp_state + .ent put_fp_state +put_fp_state: + + fld $f0 , 0($a0) + fld $f1 , 8($a0) + fld $f2 , 16($a0) + fld $f3 , 24($a0) + fld $f4 , 32($a0) + fld $f5 , 40($a0) + fld $f6 , 48($a0) + fld $f7 , 56($a0) + fld $f8 , 64($a0) + fld $f9 , 72($a0) + fld $f10, 80($a0) + fld $f11, 88($a0) + fld $f12, 96($a0) + fld $f13,104($a0) + fld $f14,112($a0) + fld $f15,120($a0) + fld $f16,128($a0) + fld $f17,136($a0) + fld $f18,144($a0) + fld $f19,152($a0) + fld $f20,160($a0) + fld $f21,168($a0) + fld $f22,176($a0) + fld $f23,184($a0) + fld $f24,192($a0) + fld $f25,200($a0) + fld $f26,208($a0) + fld $f27,216($a0) + fld $f28,224($a0) + fld $f29,232($a0) + fld $f30,240($a0) + fld $f31,248($a0) + + mtfsr $a1 + + ret + + .end put_fp_state |