On Mon, Mar 21, 2022 at 08:00:56PM +0000, Miod Vallat wrote:
> The current state of the kernel starts userland processes with register
> a0 pointing to the stack, with a comment mentioning this is copied from
> FreeBSD.
> 
> But while FreeBSD userland startup code (lib/csu) depends on this,
> OpenBSD binaries do not need this.
> 
> Thus, don't bother setting up a0 upon startup.
> 
> Completely untested.

tested with qemu-system-riscv64 userland

ok jsg@

> 
> Index: machdep.c
> ===================================================================
> RCS file: /OpenBSD/src/sys/arch/riscv64/riscv64/machdep.c,v
> retrieving revision 1.26
> diff -u -p -r1.26 machdep.c
> --- machdep.c 14 Sep 2021 12:03:49 -0000      1.26
> +++ machdep.c 21 Mar 2022 19:58:15 -0000
> @@ -418,7 +418,6 @@ setregs(struct proc *p, struct exec_pack
>       tf->tf_sstatus |= SSTATUS_FS_OFF;
>  
>       memset(tf, 0, sizeof(*tf));
> -     tf->tf_a[0] = stack; // XXX Inherited from FreeBSD. Why?
>       tf->tf_sp = STACKALIGN(stack);
>       tf->tf_ra = pack->ep_entry;
>       tf->tf_sepc = pack->ep_entry;
> 
> 

Reply via email to