diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fenv/armebhf/fenv.sub | 1 | ||||
| -rw-r--r-- | src/fenv/armhf/fenv.s | 60 | ||||
| -rw-r--r-- | src/fenv/armhf/fenv.sub | 1 | 
3 files changed, 62 insertions, 0 deletions
| diff --git a/src/fenv/armebhf/fenv.sub b/src/fenv/armebhf/fenv.sub new file mode 100644 index 00000000..5281e40b --- /dev/null +++ b/src/fenv/armebhf/fenv.sub @@ -0,0 +1 @@ +../armhf/fenv.s diff --git a/src/fenv/armhf/fenv.s b/src/fenv/armhf/fenv.s new file mode 100644 index 00000000..ee81b3d5 --- /dev/null +++ b/src/fenv/armhf/fenv.s @@ -0,0 +1,60 @@ +.global fegetround +.type fegetround,%function +fegetround: +	mrc p10, 7, r0, cr1, cr0, 0 +	and r0, r0, #0xc00000 +	bx lr + +.global fesetround +.type fesetround,%function +fesetround: +	mrc p10, 7, r3, cr1, cr0, 0 +	bic r3, r3, #0xc00000 +	orr r3, r3, r0 +	mcr p10, 7, r3, cr1, cr0, 0 +	mov r0, #0 +	bx lr + +.global fetestexcept +.type fetestexcept,%function +fetestexcept: +	mrc p10, 7, r3, cr1, cr0, 0 +	and r0, r0, r3 +	bx lr + +.global feclearexcept +.type feclearexcept,%function +feclearexcept: +	mrc p10, 7, r3, cr1, cr0, 0 +	bic r3, r3, r0 +	mcr p10, 7, r3, cr1, cr0, 0 +	mov r0, #0 +	bx lr + +.global feraiseexcept +.type feraiseexcept,%function +feraiseexcept: +	mrc p10, 7, r3, cr1, cr0, 0 +	orr r3, r3, r0 +	mcr p10, 7, r3, cr1, cr0, 0 +	mov r0, #0 +	bx lr + +.global fegetenv +.type fegetenv,%function +fegetenv: +	mrc p10, 7, r3, cr1, cr0, 0 +	str r3, [r0] +	mov r0, #0 +	bx lr + +.global fesetenv +.type fesetenv,%function +fesetenv: +	mrc p10, 7, r3, cr1, cr0, 0 +	cmn r0, #1 +	moveq r3, #0 +	ldrne r3, [r0] +	mcr p10, 7, r3, cr1, cr0, 0 +	mov r0, #0 +	bx lr diff --git a/src/fenv/armhf/fenv.sub b/src/fenv/armhf/fenv.sub new file mode 100644 index 00000000..ec559cd4 --- /dev/null +++ b/src/fenv/armhf/fenv.sub @@ -0,0 +1 @@ +fenv.s | 
