38 lines
747 B
ArmAsm
38 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
|
|
|