|
Message-ID: <20191202110648.GA3068@APC301.andestech.com> Date: Mon, 2 Dec 2019 19:06:52 +0800 From: Ruinland ChuanTzu Tsai <ruinland@...estech.com> To: <musl@...ts.openwall.com> CC: <alankao@...estech.com> Subject: [PATCH] riscv64: fenv.S: Fix fesetenv(FE_DFL_ENV) failure Hi all, during testing libc-test on RV64, I happended to encounter a segfault on math/fenv.exe . When FE_DFL_ENV is passed to fesetenv(), the very first instruction : lw t1, 0(a0) will fail since a0 is -1 . Here's quick hack - - git diff -- src/fenv/riscv64/fenv.S diff --git a/src/fenv/riscv64/fenv.S b/src/fenv/riscv64/fenv.S index 97f74dd6..06215954 100644 --- a/src/fenv/riscv64/fenv.S +++ b/src/fenv/riscv64/fenv.S @@ -45,8 +45,12 @@ fegetenv: .global fesetenv .type fesetenv, %function fesetenv: + li t2, -1 + li t1, 0 + beq a0, t2, setfpcsr lw t1, 0(a0) - fscsr t0, t1 +setfpcsr: + fscsr t1 li a0, 0 ret And the test case will pass. Sincerely, Ruinland Chuan-Tzu Tsai
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.