.global fegetround .type fegetround,%function fegetround: mrs x0, fpcr and w0, w0, #0xc00000 ret .global __fesetround .hidden __fesetround .type __fesetround,%function __fesetround: mrs x1, fpcr bic w1, w1, #0xc00000 orr w1, w1, w0 msr fpcr, x1 mov w0, #0 ret .global fetestexcept .type fetestexcept,%function fetestexcept: and w0, w0, #0x1f mrs x1, fpsr and w0, w0, w1 ret .global feclearexcept .type feclearexcept,%function feclearexcept: and w0, w0, #0x1f mrs x1, fpsr bic w1, w1, w0 msr fpsr, x1 mov w0, #0 ret .global feraiseexcept .type feraiseexcept,%function feraiseexcept: and w0, w0, #0x1f mrs x1, fpsr orr w1, w1, w0 msr fpsr, x1 mov w0, #0 ret .global fegetenv .type fegetenv,%function fegetenv: mrs x1, fpcr mrs x2, fpsr stp w1, w2, [x0] mov w0, #0 ret // TODO preserve some bits .global fesetenv .type fesetenv,%function fesetenv: mov x1, #0 mov x2, #0 cmn x0, #1 b.eq 1f ldp w1, w2, [x0] 1: msr fpcr, x1 msr fpsr, x2 mov w0, #0 ret