user: implement mlibc as the libc, finally.
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# The functions below are taken from musl.
|
||||
.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
|
||||
Reference in New Issue
Block a user