riscv/atomic: Fix sign extension for RV64I
commit 6c58f25e upstream. The argument passed to cmpxchg is not guaranteed to be sign extended, but lr.w sign extends on RV64I. This makes cmpxchg fail on clang built kernels when __old is negative. To fix this, we just cast __old to long which sign extends on RV64I. With this fix, clang built RISC-V kernels now boot. Link: https://github.com/ClangBuiltLinux/linux/issues/867 Signed-off-by:Nathan Huckleberry <nhuck@google.com> Signed-off-by:
Palmer Dabbelt <palmerdabbelt@google.com> Signed-off-by:
Paul Gortmaker <paul.gortmaker@windriver.com>
Loading
Please register or sign in to comment