39 lines
747 B
ArmAsm
39 lines
747 B
ArmAsm
|
! fpu_compare() - compare doubles Author: Erik van der Kouwe
|
||
|
! fpu_sw_get() - get FPU status 17 Dec 2009
|
||
|
! fpu_xam() - examine double
|
||
|
.sect .text
|
||
|
.define _fpu_compare
|
||
|
.define _fpu_sw_get
|
||
|
.define _fpu_xam
|
||
|
|
||
|
! u16_t fpu_compare(double x, double y)
|
||
|
_fpu_compare:
|
||
|
! move the values onto the floating point stack
|
||
|
fldd 12(esp)
|
||
|
fldd 4(esp)
|
||
|
|
||
|
! compare values and return status word
|
||
|
fcompp
|
||
|
jmp _fpu_sw_get
|
||
|
|
||
|
! u16_t fpu_sw_get(void)
|
||
|
_fpu_sw_get:
|
||
|
! clear unused high-order word and get status word
|
||
|
xor eax, eax
|
||
|
.data1 0xdf, 0xe0 ! fnstsw ax
|
||
|
ret
|
||
|
|
||
|
! u16_t fpu_xam(double value)
|
||
|
_fpu_xam:
|
||
|
! move the value onto the floating point stack
|
||
|
fldd 4(esp)
|
||
|
|
||
|
! examine value and get status word
|
||
|
fxam
|
||
|
call _fpu_sw_get
|
||
|
|
||
|
! pop the value
|
||
|
fstp st
|
||
|
ret
|
||
|
|