Пример #1
0
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);
}
Пример #2
0
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);
}