int ultrix_sys_cacheflush(struct lwp *l, const struct ultrix_sys_cacheflush_args *uap, register_t *retval) { /* { syscallarg(void *) addr; syscallarg(unsigned) nbytes; syscallarg(int) flag; } */ struct proc *p = l->l_proc; vaddr_t va = (vaddr_t)SCARG(uap, addr); int nbytes = SCARG(uap, nbytes); int whichcache = SCARG(uap, whichcache); return mips_user_cacheflush(p, va, nbytes, whichcache); }
cpu_coredump32 netbsd32_cpu_upcall netbsd32_vm_default_addr #endif int netbsd32_sysarch(struct lwp *l, const struct netbsd32_sysarch_args *uap, register_t *retval) { /* { syscallarg(int) op; syscallarg(netbsd32_voidp) parms; } */ struct proc *p = l->l_proc; void *parms = SCARG_P32(uap, parms); int error = 0; switch(SCARG(uap, op)) { case MIPS_CACHEFLUSH: { struct mips_cacheflush_args32 cfua; error = copyin(parms, &cfua, sizeof(cfua)); if (error != 0) return (error); error = mips_user_cacheflush(p, cfua.va, cfua.nbytes, cfua.whichcache); break; } case MIPS_CACHECTL: { struct mips_cachectl_args32 ccua; error = copyin(parms, &ccua, sizeof(ccua)); if (error != 0) return (error); error = mips_user_cachectl(p, ccua.va, ccua.nbytes, ccua.ctl); break; } default: error = ENOSYS; break; } return (error); }