Index: sys/riscv/include/atomic.h =================================================================== --- sys/riscv/include/atomic.h +++ sys/riscv/include/atomic.h @@ -177,6 +177,8 @@ "0:" "li %1, 1\n" /* Preset to fail */ "lr.w %0, %2\n" + "slli %0, %0, 0x20\n" + "srli %0, %0, 0x20\n" "bne %0, %z3, 1f\n" "sc.w %1, %z4, %2\n" "bnez %1, 0b\n" @@ -200,6 +202,8 @@ "0:" "li %1, 1\n" /* Preset to fail */ "lr.w %0, %2\n" /* Load old value */ + "slli %0, %0, 0x20\n" + "srli %0, %0, 0x20\n" "bne %0, %z4, 1f\n" /* Compare */ "sc.w %1, %z5, %2\n" /* Try to store new value */ "j 2f\n"