]> git.baikalelectronics.ru Git - kernel.git/commit
riscv/atomic: Fix sign extension for RV64I
authorNathan Huckleberry <nhuck@google.com>
Thu, 11 Jun 2020 18:32:35 +0000 (18:32 +0000)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Fri, 12 Jun 2020 19:07:58 +0000 (12:07 -0700)
commit67f46c8af21c530927964c74aca5aa9afdd91537
treead1a12757a095c0ca949f651a2531389cbda4cb0
parent2122326ac85655091a13fea7ca2d941d1e353870
riscv/atomic: Fix sign extension for RV64I

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>
arch/riscv/include/asm/cmpxchg.h