[PATCH] libgloss: riscv: Fix envp parameter for main

Bernd Edlinger <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
The envp paramter is currently NULL when crt0.S calls main.
With this patch the envp parameter should now be set correctly.
Tested with riscv32 and riscv64: both gdb/sim and qemu do work.
---
 libgloss/riscv/crt0.S | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libgloss/riscv/crt0.S b/libgloss/riscv/crt0.S
index f1c5419a5..54443e412 100644
--- a/libgloss/riscv/crt0.S
+++ b/libgloss/riscv/crt0.S
@@ -61,7 +61,9 @@ _start:
 
   lw      a0, 0(sp)                  # a0 = argc
   addi    a1, sp, __SIZEOF_POINTER__ # a1 = argv
-  li      a2, 0                      # a2 = envp = NULL
+  slli    a2, a0, 1 + __SIZEOF_POINTER__ >> 2
+  addi    a2, a2, __SIZEOF_POINTER__
+  add     a2, a2, a1                 # a2 = envp
   call    main
   tail    exit
   .size  _start, .-_start
-- 
2.25.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.