diff options
Diffstat (limited to 'arch/riscv64/kernel')
| -rw-r--r-- | arch/riscv64/kernel/proc.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/riscv64/kernel/proc.c b/arch/riscv64/kernel/proc.c index 2cc3f36..a7721e2 100644 --- a/arch/riscv64/kernel/proc.c +++ b/arch/riscv64/kernel/proc.c @@ -35,15 +35,15 @@ void run_init(struct tcb *t, void *fdt) unreachable(); } -void set_args(struct tcb *t, struct sys_ret a) +void set_args(struct tcb *t, size_t n, struct sys_ret a) { struct riscv_regs *r = (struct riscv_regs *)(t->regs) - 1; - r->a0 = a.s; - r->a1 = a.ar0; - r->a2 = a.ar1; - r->a3 = a.ar2; - r->a4 = a.ar3; - r->a5 = a.ar4; + if (n >= 1) r->a0 = a.s; + if (n >= 2) r->a1 = a.ar0; + if (n >= 3) r->a2 = a.ar1; + if (n >= 4) r->a3 = a.ar2; + if (n >= 5) r->a4 = a.ar3; + if (n >= 6) r->a5 = a.ar4; } struct sys_ret get_args(struct tcb *t) |
