github.com/afumu/libc@v0.0.6/musl/src/fenv/aarch64/fenv.s (about) 1 .global fegetround 2 .type fegetround,%function 3 fegetround: 4 mrs x0, fpcr 5 and w0, w0, #0xc00000 6 ret 7 8 .global __fesetround 9 .hidden __fesetround 10 .type __fesetround,%function 11 __fesetround: 12 mrs x1, fpcr 13 bic w1, w1, #0xc00000 14 orr w1, w1, w0 15 msr fpcr, x1 16 mov w0, #0 17 ret 18 19 .global fetestexcept 20 .type fetestexcept,%function 21 fetestexcept: 22 and w0, w0, #0x1f 23 mrs x1, fpsr 24 and w0, w0, w1 25 ret 26 27 .global feclearexcept 28 .type feclearexcept,%function 29 feclearexcept: 30 and w0, w0, #0x1f 31 mrs x1, fpsr 32 bic w1, w1, w0 33 msr fpsr, x1 34 mov w0, #0 35 ret 36 37 .global feraiseexcept 38 .type feraiseexcept,%function 39 feraiseexcept: 40 and w0, w0, #0x1f 41 mrs x1, fpsr 42 orr w1, w1, w0 43 msr fpsr, x1 44 mov w0, #0 45 ret 46 47 .global fegetenv 48 .type fegetenv,%function 49 fegetenv: 50 mrs x1, fpcr 51 mrs x2, fpsr 52 stp w1, w2, [x0] 53 mov w0, #0 54 ret 55 56 // TODO preserve some bits 57 .global fesetenv 58 .type fesetenv,%function 59 fesetenv: 60 mov x1, #0 61 mov x2, #0 62 cmn x0, #1 63 b.eq 1f 64 ldp w1, w2, [x0] 65 1: msr fpcr, x1 66 msr fpsr, x2 67 mov w0, #0 68 ret