Module Name: src Committed By: pgoyette Date: Sun Mar 18 01:17:29 UTC 2018
Modified Files: src/sys/compat/common [pgoyette-compat]: kern_cpu_60.c src/sys/compat/sys [pgoyette-compat]: cpuio.h src/sys/kern [pgoyette-compat]: kern_cpu.c src/sys/modules/compat [pgoyette-compat]: Makefile Log Message: Import from -current the MD glue code for compat cpu_ucode To generate a diff of this commit: cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/compat/common/kern_cpu_60.c cvs rdiff -u -r1.5.16.2 -r1.5.16.3 src/sys/compat/sys/cpuio.h cvs rdiff -u -r1.71.16.7 -r1.71.16.8 src/sys/kern/kern_cpu.c cvs rdiff -u -r1.14.14.3 -r1.14.14.4 src/sys/modules/compat/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/common/kern_cpu_60.c diff -u src/sys/compat/common/kern_cpu_60.c:1.1.2.2 src/sys/compat/common/kern_cpu_60.c:1.1.2.3 --- src/sys/compat/common/kern_cpu_60.c:1.1.2.2 Sat Mar 17 21:37:52 2018 +++ src/sys/compat/common/kern_cpu_60.c Sun Mar 18 01:17:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_cpu_60.c,v 1.1.2.2 2018/03/17 21:37:52 pgoyette Exp $ */ +/* $NetBSD: kern_cpu_60.c,v 1.1.2.3 2018/03/18 01:17:29 pgoyette Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,21 +30,31 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_cpu_60.c,v 1.1.2.2 2018/03/17 21:37:52 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_cpu_60.c,v 1.1.2.3 2018/03/18 01:17:29 pgoyette Exp $"); + +#ifdef _KERNEL_OPT +#include "opt_cpu_ucode.h" +#include "opt_compat_netbsd.h" +#endif #include <sys/param.h> #include <sys/types.h> #include <sys/systm.h> #include <sys/errno.h> #include <sys/kauth.h> +#include <sys/lwp.h> #include <sys/cpu.h> #include <sys/cpuio.h> -#include <compat/sys/cpuio.h> +#include <compat/common/compat_mod.h> static int -compat6_cpuctl_ioctl(u_long cmd, void *data) +compat6_cpuctl_ioctl(struct lwp *l, u_long cmd, void *data) { +#if defined(CPU_UCODE) && defined(COMPAT_60) + int error; +#endif + switch (cmd) { #if defined(CPU_UCODE) && defined(COMPAT_60) case OIOC_CPU_UCODE_GET_VERSION: @@ -62,14 +72,18 @@ compat6_cpuctl_ioctl(u_long cmd, void *d } } -void +int kern_cpu_60_init(void) { + compat_cpuctl_ioctl = compat6_cpuctl_ioctl; + return 0; } -void +int kern_cpu_60_fini(void) { + compat_cpuctl_ioctl = (void *)enosys; + return 0; } Index: src/sys/compat/sys/cpuio.h diff -u src/sys/compat/sys/cpuio.h:1.5.16.2 src/sys/compat/sys/cpuio.h:1.5.16.3 --- src/sys/compat/sys/cpuio.h:1.5.16.2 Sat Mar 17 23:54:33 2018 +++ src/sys/compat/sys/cpuio.h Sun Mar 18 01:17:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cpuio.h,v 1.5.16.2 2018/03/17 23:54:33 pgoyette Exp $ */ +/* $NetBSD: cpuio.h,v 1.5.16.3 2018/03/18 01:17:29 pgoyette Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -39,7 +39,7 @@ struct compat6_cpu_ucode { char fwname[PATH_MAX]; }; -extern int (*compat_cpuctl_ioctl)(u_long, void *); +extern int (*compat_cpuctl_ioctl)(struct lwp *, u_long, void *); #define OIOC_CPU_UCODE_GET_VERSION _IOR('c', 4, struct compat6_cpu_ucode) #define OIOC_CPU_UCODE_APPLY _IOW('c', 5, struct compat6_cpu_ucode) Index: src/sys/kern/kern_cpu.c diff -u src/sys/kern/kern_cpu.c:1.71.16.7 src/sys/kern/kern_cpu.c:1.71.16.8 --- src/sys/kern/kern_cpu.c:1.71.16.7 Sat Mar 17 21:37:53 2018 +++ src/sys/kern/kern_cpu.c Sun Mar 18 01:17:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_cpu.c,v 1.71.16.7 2018/03/17 21:37:53 pgoyette Exp $ */ +/* $NetBSD: kern_cpu.c,v 1.71.16.8 2018/03/18 01:17:29 pgoyette Exp $ */ /*- * Copyright (c) 2007, 2008, 2009, 2010, 2012 The NetBSD Foundation, Inc. @@ -56,7 +56,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_cpu.c,v 1.71.16.7 2018/03/17 21:37:53 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_cpu.c,v 1.71.16.8 2018/03/18 01:17:29 pgoyette Exp $"); #include "opt_cpu_ucode.h" @@ -127,7 +127,7 @@ struct cpu_info **cpu_infos __read_most kcpuset_t * kcpuset_attached __read_mostly = NULL; kcpuset_t * kcpuset_running __read_mostly = NULL; -int (*compat_cpuctl_ioctl)(u_long, void *) = (void *)enosys; +int (*compat_cpuctl_ioctl)(struct lwp *, u_long, void *) = (void *)enosys; static char cpu_model[128]; @@ -296,7 +296,7 @@ cpuctl_ioctl(dev_t dev, u_long cmd, void #endif default: - error = (*compat_cpuctl_ioctl)(cmd, data); + error = (*compat_cpuctl_ioctl)(l, cmd, data); break; } mutex_exit(&cpu_lock); Index: src/sys/modules/compat/Makefile diff -u src/sys/modules/compat/Makefile:1.14.14.3 src/sys/modules/compat/Makefile:1.14.14.4 --- src/sys/modules/compat/Makefile:1.14.14.3 Sat Mar 17 06:49:57 2018 +++ src/sys/modules/compat/Makefile Sun Mar 18 01:17:29 2018 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.14.14.3 2018/03/17 06:49:57 pgoyette Exp $ +# $NetBSD: Makefile,v 1.14.14.4 2018/03/18 01:17:29 pgoyette Exp $ .include "../Makefile.inc" @@ -25,6 +25,15 @@ CPPFLAGS+= -DCOMPAT_30 -DCOMPAT_40 -DCOM CPPFLAGS+= -DCOMPAT_60 -DCOMPAT_70 -DCOMPAT_80 CPPFLAGS+= -DCOMPAT_43 +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" +CPPFLAGS+= -DCPU_UCODE +# pick up more for bsd.klinks.mk as needed. +MACHINE_EXTRA= x86 +.else +MACHINE_EXTRA= none + +.endif + .include "../../compat/common/Makefile.sysio" SRCS+= compat_mod.c compat_exec.c compat_util.c @@ -32,17 +41,15 @@ SRCS+= compat_mod.c compat_exec.c compat .PATH: ${S}/arch/${MACHINE}/${MACHINE} .PATH: ${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} .PATH: ${S}/arch/${MACHINE_CPU}/${MACHINE_CPU} +.PATH: ${S} ${S}/arch/${MACHINE_EXTRA}/${MACHINE_EXTRA} -.if (exists(${S}/arch/${MACHINE}/${MACHINE}/compat_13_machdep.c)) || \ - (exists(${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}/compat_13_machdep.c)) || \ - (exists(${S}/arch/${MACHINE_CPU}/${MACHINE_CPU}/compat_13_machdep.c)) -SRCS+= compat_13_machdep.c -.endif - -.if (exists(${S}/arch/${MACHINE}/${MACHINE}/compat_16_machdep.c)) || \ - (exists(${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}/compat_16_machdep.c)) || \ - (exists(${S}/arch/${MACHINE_CPU}/${MACHINE_CPU}/compat_16_machdep.c)) -SRCS+= compat_16_machdep.c -.endif +.for i in compat_13_machdep.c compat_16_machdep.c compat_60_cpu_ucode.c +. if exists(${S}/arch/${MACHINE}/${MACHINE}/${i}) || \ + exists(${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}/${i}) || \ + exists(${S}/arch/${MACHINE_CPU}/${MACHINE_CPU}/${i}) || \ + exists(${S}/arch/${MACHINE_EXTRA}/${MACHINE_EXTRA}/${i}) +SRCS+= ${i} +. endif +.endfor .include <bsd.kmodule.mk>