Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/trap.c
Show First 20 Lines • Show All 106 Lines • ▼ Show 20 Lines | cpu_fetch_syscall_args(struct thread *td) | ||||
sa->code = td->td_frame->tf_t[0]; | sa->code = td->td_frame->tf_t[0]; | ||||
if (sa->code == SYS_syscall || sa->code == SYS___syscall) { | if (sa->code == SYS_syscall || sa->code == SYS___syscall) { | ||||
sa->code = *ap++; | sa->code = *ap++; | ||||
nap--; | nap--; | ||||
} | } | ||||
syscall_read_barrier(); | |||||
if (sa->code >= p->p_sysent->sv_size) | if (sa->code >= p->p_sysent->sv_size) | ||||
sa->callp = &p->p_sysent->sv_table[0]; | sa->callp = &p->p_sysent->sv_table[0]; | ||||
else | else | ||||
sa->callp = &p->p_sysent->sv_table[sa->code]; | sa->callp = &p->p_sysent->sv_table[sa->code]; | ||||
sa->narg = sa->callp->sy_narg; | sa->narg = sa->callp->sy_narg; | ||||
memcpy(sa->args, ap, nap * sizeof(register_t)); | memcpy(sa->args, ap, nap * sizeof(register_t)); | ||||
if (sa->narg > nap) | if (sa->narg > nap) | ||||
▲ Show 20 Lines • Show All 243 Lines • Show Last 20 Lines |