master
1.global fegetround
2.type fegetround,%function
3fegetround:
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
21fetestexcept:
22 and w0, w0, #0x1f
23 mrs x1, fpsr
24 and w0, w0, w1
25 ret
26
27.global feclearexcept
28.type feclearexcept,%function
29feclearexcept:
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
39feraiseexcept:
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
49fegetenv:
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
59fesetenv:
60 mov x1, #0
61 mov x2, #0
62 cmn x0, #1
63 b.eq 1f
64 ldp w1, w2, [x0]
651: msr fpcr, x1
66 msr fpsr, x2
67 mov w0, #0
68 ret