Message ID | 20240830102007.2206384-2-andrew.jones@linux.dev (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [kvm-unit-tests] riscv: Fix argc | expand |
On Fri, Aug 30, 2024 at 12:20:08PM GMT, Andrew Jones wrote: > __argc is 32 bits so even rv64 should load it with lw, not just rv32. > This fixes odd behavior such as getting false when testing argc < 2 > even though we know argc should be 1. argc < 2 being false comes from > the register comparison using the full register width and the upper > 32 bits being loaded with junk. > > Fixes: bd744d465910 ("riscv: Initial port, hello world") > Signed-off-by: Andrew Jones <andrew.jones@linux.dev> > --- > riscv/cstart.S | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/riscv/cstart.S b/riscv/cstart.S > index d5d8ad253748..a9ac72df4dd2 100644 > --- a/riscv/cstart.S > +++ b/riscv/cstart.S > @@ -93,7 +93,7 @@ start: > > /* run the test */ > la a0, __argc > - REG_L a0, 0(a0) > + lw a0, 0(a0) > la a1, __argv > la a2, __environ > call main > -- > 2.45.2 Merged. Thanks, drew
diff --git a/riscv/cstart.S b/riscv/cstart.S index d5d8ad253748..a9ac72df4dd2 100644 --- a/riscv/cstart.S +++ b/riscv/cstart.S @@ -93,7 +93,7 @@ start: /* run the test */ la a0, __argc - REG_L a0, 0(a0) + lw a0, 0(a0) la a1, __argv la a2, __environ call main
__argc is 32 bits so even rv64 should load it with lw, not just rv32. This fixes odd behavior such as getting false when testing argc < 2 even though we know argc should be 1. argc < 2 being false comes from the register comparison using the full register width and the upper 32 bits being loaded with junk. Fixes: bd744d465910 ("riscv: Initial port, hello world") Signed-off-by: Andrew Jones <andrew.jones@linux.dev> --- riscv/cstart.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)