12345678910111213141516171819202122232425262728293031323334353637 |
- #
- ! $Source$
- ! $State$
- ! $Revision$
- #include "powerpc.h"
- .sect .text
- ! Converts a 32-bit integer into a 64-bit double.
- !
- ! Stack: ( int -- double )
- .define .cif8
- .cif8:
- addi sp, sp, -4 ! make space for the double
-
- lwz r3, 4(sp)
- xoris r3, r3, 0x8000
- stw r3, 4(sp) ! flip sign of integer value
-
- addis r3, r0, 0x4330
- stw r3, 0(sp) ! set high word to construct a double
-
- lfd f0, 0(sp) ! load value
- la (r3, pivot)
- lfd f1, 0(r3) ! load pivot value
- fsub f0, f0, f1 ! adjust
-
- stfd f0, 0(sp) ! save value again...
- bclr ALWAYS, 0, 0 ! ...and return
- .sect .rom
- pivot:
- .data4 0x43300000
- .data4 0x80000000
|