1*c9945492SAndroid Build Coastguard Worker#if __SH_FPU_ANY__ || __SH4__ 2*c9945492SAndroid Build Coastguard Worker 3*c9945492SAndroid Build Coastguard Worker.global fegetround 4*c9945492SAndroid Build Coastguard Worker.type fegetround, @function 5*c9945492SAndroid Build Coastguard Workerfegetround: 6*c9945492SAndroid Build Coastguard Worker sts fpscr, r0 7*c9945492SAndroid Build Coastguard Worker rts 8*c9945492SAndroid Build Coastguard Worker and #3, r0 9*c9945492SAndroid Build Coastguard Worker 10*c9945492SAndroid Build Coastguard Worker.global __fesetround 11*c9945492SAndroid Build Coastguard Worker.hidden __fesetround 12*c9945492SAndroid Build Coastguard Worker.type __fesetround, @function 13*c9945492SAndroid Build Coastguard Worker__fesetround: 14*c9945492SAndroid Build Coastguard Worker sts fpscr, r0 15*c9945492SAndroid Build Coastguard Worker mov #-4, r1 16*c9945492SAndroid Build Coastguard Worker and r1, r0 17*c9945492SAndroid Build Coastguard Worker or r4, r0 18*c9945492SAndroid Build Coastguard Worker lds r0, fpscr 19*c9945492SAndroid Build Coastguard Worker rts 20*c9945492SAndroid Build Coastguard Worker mov #0, r0 21*c9945492SAndroid Build Coastguard Worker 22*c9945492SAndroid Build Coastguard Worker.global fetestexcept 23*c9945492SAndroid Build Coastguard Worker.type fetestexcept, @function 24*c9945492SAndroid Build Coastguard Workerfetestexcept: 25*c9945492SAndroid Build Coastguard Worker sts fpscr, r0 26*c9945492SAndroid Build Coastguard Worker and r4, r0 27*c9945492SAndroid Build Coastguard Worker rts 28*c9945492SAndroid Build Coastguard Worker and #0x7c, r0 29*c9945492SAndroid Build Coastguard Worker 30*c9945492SAndroid Build Coastguard Worker.global feclearexcept 31*c9945492SAndroid Build Coastguard Worker.type feclearexcept, @function 32*c9945492SAndroid Build Coastguard Workerfeclearexcept: 33*c9945492SAndroid Build Coastguard Worker mov r4, r0 34*c9945492SAndroid Build Coastguard Worker and #0x7c, r0 35*c9945492SAndroid Build Coastguard Worker not r0, r4 36*c9945492SAndroid Build Coastguard Worker sts fpscr, r0 37*c9945492SAndroid Build Coastguard Worker and r4, r0 38*c9945492SAndroid Build Coastguard Worker lds r0, fpscr 39*c9945492SAndroid Build Coastguard Worker rts 40*c9945492SAndroid Build Coastguard Worker mov #0, r0 41*c9945492SAndroid Build Coastguard Worker 42*c9945492SAndroid Build Coastguard Worker.global feraiseexcept 43*c9945492SAndroid Build Coastguard Worker.type feraiseexcept, @function 44*c9945492SAndroid Build Coastguard Workerferaiseexcept: 45*c9945492SAndroid Build Coastguard Worker mov r4, r0 46*c9945492SAndroid Build Coastguard Worker and #0x7c, r0 47*c9945492SAndroid Build Coastguard Worker sts fpscr, r4 48*c9945492SAndroid Build Coastguard Worker or r4, r0 49*c9945492SAndroid Build Coastguard Worker lds r0, fpscr 50*c9945492SAndroid Build Coastguard Worker rts 51*c9945492SAndroid Build Coastguard Worker mov #0, r0 52*c9945492SAndroid Build Coastguard Worker 53*c9945492SAndroid Build Coastguard Worker.global fegetenv 54*c9945492SAndroid Build Coastguard Worker.type fegetenv, @function 55*c9945492SAndroid Build Coastguard Workerfegetenv: 56*c9945492SAndroid Build Coastguard Worker sts fpscr, r0 57*c9945492SAndroid Build Coastguard Worker mov.l r0, @r4 58*c9945492SAndroid Build Coastguard Worker rts 59*c9945492SAndroid Build Coastguard Worker mov #0, r0 60*c9945492SAndroid Build Coastguard Worker 61*c9945492SAndroid Build Coastguard Worker.global fesetenv 62*c9945492SAndroid Build Coastguard Worker.type fesetenv, @function 63*c9945492SAndroid Build Coastguard Workerfesetenv: 64*c9945492SAndroid Build Coastguard Worker mov r4, r0 65*c9945492SAndroid Build Coastguard Worker cmp/eq #-1, r0 66*c9945492SAndroid Build Coastguard Worker bf 1f 67*c9945492SAndroid Build Coastguard Worker 68*c9945492SAndroid Build Coastguard Worker ! the default environment is complicated by the fact that we need to 69*c9945492SAndroid Build Coastguard Worker ! preserve the current precision bit, which we do not know a priori 70*c9945492SAndroid Build Coastguard Worker sts fpscr, r0 71*c9945492SAndroid Build Coastguard Worker mov #8, r1 72*c9945492SAndroid Build Coastguard Worker swap.w r1, r1 73*c9945492SAndroid Build Coastguard Worker bra 2f 74*c9945492SAndroid Build Coastguard Worker and r1, r0 75*c9945492SAndroid Build Coastguard Worker 76*c9945492SAndroid Build Coastguard Worker1: mov.l @r4, r0 ! non-default environment 77*c9945492SAndroid Build Coastguard Worker2: lds r0, fpscr 78*c9945492SAndroid Build Coastguard Worker rts 79*c9945492SAndroid Build Coastguard Worker mov #0, r0 80*c9945492SAndroid Build Coastguard Worker 81*c9945492SAndroid Build Coastguard Worker#endif 82