Commit 22b5f16f authored by Akira Tsukamoto's avatar Akira Tsukamoto Committed by Palmer Dabbelt

riscv: __asm_copy_to-from_user: Fix: fail on RV32

Had a bug when converting bytes to bits when the cpu was rv32.

The a3 contains the number of bytes and multiple of 8
would be the bits. The LGREG is holding 2 for RV32 and 3 for
RV32, so to achieve multiple of 8 it must always be constant 3.
The 2 was mistakenly used for rv32.
Signed-off-by: default avatarAkira Tsukamoto <akira.tsukamoto@gmail.com>
Fixes: ca6eaaa2 ("riscv: __asm_copy_to-from_user: Optimize unaligned memory access and pipeline stall")
Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
parent 6010d300
...@@ -125,7 +125,7 @@ ENTRY(__asm_copy_from_user) ...@@ -125,7 +125,7 @@ ENTRY(__asm_copy_from_user)
* t3 - prev shift * t3 - prev shift
* t4 - current shift * t4 - current shift
*/ */
slli t3, a3, LGREG slli t3, a3, 3 /* converting bytes in a3 to bits */
li a5, SZREG*8 li a5, SZREG*8
sub t4, a5, t3 sub t4, a5, t3
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment