e447ca1032f43b78067edb4165b7f313f0cdb549
[musl] / src / fenv / armhf / fenv.s
1 .fpu vfp
2
3 .global fegetround
4 .type fegetround,%function
5 fegetround:
6         fmrx r0, fpscr
7         and r0, r0, #0xc00000
8         bx lr
9
10 .global __fesetround
11 .type __fesetround,%function
12 __fesetround:
13         fmrx r3, fpscr
14         bic r3, r3, #0xc00000
15         orr r3, r3, r0
16         fmxr fpscr, r3
17         mov r0, #0
18         bx lr
19
20 .global fetestexcept
21 .type fetestexcept,%function
22 fetestexcept:
23         and r0, r0, #0x1f
24         fmrx r3, fpscr
25         and r0, r0, r3
26         bx lr
27
28 .global feclearexcept
29 .type feclearexcept,%function
30 feclearexcept:
31         and r0, r0, #0x1f
32         fmrx r3, fpscr
33         bic r3, r3, r0
34         fmxr fpscr, r3
35         mov r0, #0
36         bx lr
37
38 .global feraiseexcept
39 .type feraiseexcept,%function
40 feraiseexcept:
41         and r0, r0, #0x1f
42         fmrx r3, fpscr
43         orr r3, r3, r0
44         fmxr fpscr, r3
45         mov r0, #0
46         bx lr
47
48 .global fegetenv
49 .type fegetenv,%function
50 fegetenv:
51         fmrx r3, fpscr
52         str r3, [r0]
53         mov r0, #0
54         bx lr
55
56 .global fesetenv
57 .type fesetenv,%function
58 fesetenv:
59         cmn r0, #1
60         moveq r3, #0
61         ldrne r3, [r0]
62         fmxr fpscr, r3
63         mov r0, #0
64         bx lr