Module Name: src Committed By: uwe Date: Fri Mar 2 23:11:42 UTC 2018
Modified Files: src/distrib/sets/lists/comp: ad.sh3 src/sys/arch/sh3/include: Makefile src/sys/arch/sh3/sh3: sys_machdep.c Added Files: src/sys/arch/sh3/include: sysarch.h Log Message: Introduce sh3/sysarch.h and add SH3_SYNC_ICACHE To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/distrib/sets/lists/comp/ad.sh3 cvs rdiff -u -r1.27 -r1.28 src/sys/arch/sh3/include/Makefile cvs rdiff -u -r0 -r1.1 src/sys/arch/sh3/include/sysarch.h cvs rdiff -u -r1.13 -r1.14 src/sys/arch/sh3/sh3/sys_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/comp/ad.sh3 diff -u src/distrib/sets/lists/comp/ad.sh3:1.38 src/distrib/sets/lists/comp/ad.sh3:1.39 --- src/distrib/sets/lists/comp/ad.sh3:1.38 Tue Feb 13 10:02:12 2018 +++ src/distrib/sets/lists/comp/ad.sh3 Fri Mar 2 23:11:42 2018 @@ -1,4 +1,4 @@ -# $NetBSD: ad.sh3,v 1.38 2018/02/13 10:02:12 mrg Exp $ +# $NetBSD: ad.sh3,v 1.39 2018/03/02 23:11:42 uwe Exp $ ./usr/include/gcc-4.5/tgmath.h comp-obsolete obsolete ./usr/include/gcc-4.8/tgmath.h comp-c-include obsolete ./usr/include/gcc-5/tgmath.h comp-c-include gcccmds,gcc=5 @@ -52,6 +52,7 @@ ./usr/include/sh3/sh_opcode.h comp-c-include ./usr/include/sh3/signal.h comp-c-include ./usr/include/sh3/stdarg.h comp-obsolete obsolete +./usr/include/sh3/sysarch.h comp-c-include ./usr/include/sh3/types.h comp-c-include ./usr/include/sh3/va-sh.h comp-obsolete obsolete ./usr/include/sh3/varargs.h comp-obsolete obsolete Index: src/sys/arch/sh3/include/Makefile diff -u src/sys/arch/sh3/include/Makefile:1.27 src/sys/arch/sh3/include/Makefile:1.28 --- src/sys/arch/sh3/include/Makefile:1.27 Thu Aug 25 12:14:10 2016 +++ src/sys/arch/sh3/include/Makefile Fri Mar 2 23:11:42 2018 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.27 2016/08/25 12:14:10 christos Exp $ +# $NetBSD: Makefile,v 1.28 2018/03/02 23:11:42 uwe Exp $ INCSDIR= /usr/include/sh3 @@ -17,7 +17,7 @@ INCS= ansi.h aout_machdep.h asm.h \ pte.h ptrace.h \ reg.h rwlock.h \ setjmp.h sh_opcode.h \ - signal.h \ + signal.h sysarch.h \ types.h \ vmparam.h \ wchar_limits.h Index: src/sys/arch/sh3/sh3/sys_machdep.c diff -u src/sys/arch/sh3/sh3/sys_machdep.c:1.13 src/sys/arch/sh3/sh3/sys_machdep.c:1.14 --- src/sys/arch/sh3/sh3/sys_machdep.c:1.13 Sat Dec 22 08:59:02 2007 +++ src/sys/arch/sh3/sh3/sys_machdep.c Fri Mar 2 23:11:42 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_machdep.c,v 1.13 2007/12/22 08:59:02 dsl Exp $ */ +/* $NetBSD: sys_machdep.c,v 1.14 2018/03/02 23:11:42 uwe Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -73,16 +73,46 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_machdep.c,v 1.13 2007/12/22 08:59:02 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_machdep.c,v 1.14 2018/03/02 23:11:42 uwe Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/mount.h> #include <sys/syscallargs.h> +#include <sh3/sysarch.h> +#include <sh3/cache.h> + int sys_sysarch(struct lwp *l, const struct sys_sysarch_args *uap, register_t *retval) { + /* { + syscallarg(int) op; + syscallarg(void *) parms; + } */ + int op; + int error = 0; + + op = SCARG(uap, op); + switch (op) { + case SH3_SYNC_ICACHE: { + struct sh3_sync_icache_args args; + + error = copyin(SCARG(uap, parms), &args, sizeof(args)); + if (error != 0) + break; + + if (args.len < (size_t)sh_cache_size_icache) + sh_icache_sync_range_index(args.addr, args.len); + else + sh_icache_sync_all(); + break; + } + + default: + error = ENOSYS; + break; + } - return (ENOSYS); + return error; } Added files: Index: src/sys/arch/sh3/include/sysarch.h diff -u /dev/null src/sys/arch/sh3/include/sysarch.h:1.1 --- /dev/null Fri Mar 2 23:11:43 2018 +++ src/sys/arch/sh3/include/sysarch.h Fri Mar 2 23:11:42 2018 @@ -0,0 +1,49 @@ +/* $NetBSD: sysarch.h,v 1.1 2018/03/02 23:11:42 uwe Exp $ */ + +/*- + * Copyright (c) 2017 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _SH3_SYSARCH_H_ +#define _SH3_SYSARCH_H_ + +/* + * Architecture specific syscalls (sh3) + */ +#define SH3_SYNC_ICACHE 0 + +struct sh3_sync_icache_args { + uintptr_t addr; /* Virtual start address */ + size_t len; /* Region size */ +}; + +#ifndef _KERNEL +#include <sys/cdefs.h> + +__BEGIN_DECLS +int sh3_sync_icache(uintptr_t, size_t); +int sysarch(int, void *); +__END_DECLS +#endif /* !_KERNEL */ +#endif /* !_SH3_SYSARCH_H_ */