socsvn commit: r271269 - in soc2014/op/freebsd-base/sys: amd64/include x86/include

op at FreeBSD.org op at FreeBSD.org
Wed Jul 23 13:06:12 UTC 2014


Author: op
Date: Wed Jul 23 13:06:11 2014
New Revision: 271269
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271269

Log:
  KSP: added SMAP and XSAVE related patch definitions
  
  Signed-off-by: Oliver Pinter <oliver.pntr at gmail.com>
  
  git: https://github.com/opntr/opBSD/tree/op/gsoc2014/kpatch

Added:
  soc2014/op/freebsd-base/sys/amd64/include/selfpatch-asmacros.h
  soc2014/op/freebsd-base/sys/x86/include/selfpatch-asmacros.h
Modified:
  soc2014/op/freebsd-base/sys/x86/include/selfpatch-machdep.h

Added: soc2014/op/freebsd-base/sys/amd64/include/selfpatch-asmacros.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/op/freebsd-base/sys/amd64/include/selfpatch-asmacros.h	Wed Jul 23 13:06:11 2014	(r271269)
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (c) 2014, by Oliver Pinter <oliver.pntr at gmail.com>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef __AMD64_SELFPATH_ASMACROS_H__
+#define __AMD64_SELFPATH_ASMACROS_H__
+
+#include <x86/selfpatch-asmacros.h>
+
+#endif /* __AMD64_SELFPATH_ASMACROS_H__ */

Added: soc2014/op/freebsd-base/sys/x86/include/selfpatch-asmacros.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/op/freebsd-base/sys/x86/include/selfpatch-asmacros.h	Wed Jul 23 13:06:11 2014	(r271269)
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 2014, by Oliver Pinter <oliver.pntr at gmail.com>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+
+#ifndef	__X86_SELFPATCH_ASMACROS_H__
+#define	__X86_SELFPATCH_ASMACROS_H__
+
+#define KSP_CPU_FEATURE		1
+#define KSP_CPU_FEATURE2	2
+#define KSP_AMD_FEATURE		3
+#define KSP_AMD_FEATURE2	4
+#define KSP_VIA_FEATURE_RNG	5
+#define KSP_VIA_FEATURE_XCRYPT	6
+#define KSP_CPU_STDEXT_FEATURE	7
+
+/*
+ * Intel Instruction Set Reference M-Z
+ * Table 4-12. recommended Multi-Byte Sequeance of NOP Instruction
+ */
+#define	KSP_INSTR_INTEL_NOP1	.byte 0x90
+#define	KSP_INSTR_INTEL_NOP2	.byte 0x66,0x90
+#define	KSP_INSTR_INTEL_NOP3	.byte 0x0f,0x1f,0x00
+#define	KSP_INSTR_INTEL_NOP4	.byte 0x0f,0x1f,0x40,0x00
+#define	KSP_INSTR_INTEL_NOP5	.byte 0x0f,0x1f,0x44,0x00,0x00
+#define	KSP_INSTR_INTEL_NOP6	.byte 0x66,0x0f,0x1f,0x44,0x00,0x00
+#define	KSP_INSTR_INTEL_NOP7	.byte 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00
+#define	KSP_INSTR_INTEL_NOP8	.byte 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00
+#define	KSP_INSTR_INTEL_NOP9	.byte 0x66,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00
+
+#define	KSP_INSTR_NOP1	KSP_INSTR_INTEL_NOP1
+#define	KSP_INSTR_NOP2	KSP_INSTR_INTEL_NOP2
+#define	KSP_INSTR_NOP3	KSP_INSTR_INTEL_NOP3
+#define	KSP_INSTR_NOP4	KSP_INSTR_INTEL_NOP4
+#define	KSP_INSTR_NOP5	KSP_INSTR_INTEL_NOP5
+#define	KSP_INSTR_NOP6	KSP_INSTR_INTEL_NOP6
+#define	KSP_INSTR_NOP7	KSP_INSTR_INTEL_NOP7
+#define	KSP_INSTR_NOP8	KSP_INSTR_INTEL_NOP8
+#define	KSP_INSTR_NOP9	KSP_INSTR_INTEL_NOP9
+
+#define KSP_INSTR_XSAVE_XSAVEOPT(_ARG)					\
+	"0723:"								\
+	"	xsave " _ARG " ; "					\
+	"0724:	"							\
+	"	.pushsection set_selfpatch_patch_set, \"ax\" ;  "	\
+	"0725:	"							\
+	"	xsaveopt " _ARG " ;"					\
+	"0726:	"							\
+	"	.popsection "						\
+	"	.pushsection set_selfpatch_set, \"a\" ; "		\
+	"		.quad   0723b ; "				\
+	"		.quad   0725b ; "				\
+	"		.int    0724b-0723b ;	"			\
+	"		.int    0726b-0725b ;	"			\
+	"		.int    " KSP_CPU_FEATURE2 " ; "		\
+	"		.int    " CPUID2_OSXSAVE " ; "			\
+	"		.quad	0 ; "					\
+	"	.popsection ; "
+
+#define _xsave_xsaveopt(_ARG)	KSP_INSTR_XSAVE_XSAVEOPT(_ARG)
+
+
+#define KSP_INSTR_NOP3_CLAC						\
+	"0723:"								\
+	"	" KSP_INSTR_NOP3 " ; "					\
+	"0724:	"							\
+	"	.pushsection set_selfpatch_patch_set, \"ax\" ;  "	\
+	"0725:	"							\
+	"	clac " ;"						\
+	"0726:	"							\
+	"	.popsection "						\
+	"	.pushsection set_selfpatch_set, \"a\" ; "		\
+	"		.quad   0723b ; "				\
+	"		.quad   0725b ; "				\
+	"		.int    0724b-0723b ;	"			\
+	"		.int    0726b-0725b ;	"			\
+	"		.int    " KSP_CPU_STDEXT_FEATURE " ; "		\
+	"		.int    " CPUID_STDEXT_SMAP " ; "		\
+	"		.quad	0 ; "					\
+	"	.popsection ; "
+
+#define _clac	KSP_INSTR_NOP3_CLAC
+
+
+#define KSP_INSTR_NOP3_STAC						\
+	"0723:"								\
+	"	" KSP_INSTR_NOP3 " ; "					\
+	"0724:	"							\
+	"	.pushsection set_selfpatch_patch_set, \"ax\" ;  "	\
+	"0725:	"							\
+	"	stac " ;"						\
+	"0726:	"							\
+	"	.popsection "						\
+	"	.pushsection set_selfpatch_set, \"a\" ; "		\
+	"		.quad   0723b ; "				\
+	"		.quad   0725b ; "				\
+	"		.int    0724b-0723b ;	"			\
+	"		.int    0726b-0725b ;	"			\
+	"		.int    " KSP_CPU_STDEXT_FEATURE " ; "		\
+	"		.int    " CPUID_STDEXT_SMAP " ; "		\
+	"		.quad	0 ; "					\
+	"	.popsection ; "
+
+#define _stac	KSP_INSTR_NOP3_STAC
+
+#endif /* __X86_SELFPATCH_ASMACROS_H__ */

Modified: soc2014/op/freebsd-base/sys/x86/include/selfpatch-machdep.h
==============================================================================
--- soc2014/op/freebsd-base/sys/x86/include/selfpatch-machdep.h	Wed Jul 23 09:22:12 2014	(r271268)
+++ soc2014/op/freebsd-base/sys/x86/include/selfpatch-machdep.h	Wed Jul 23 13:06:11 2014	(r271269)
@@ -29,14 +29,6 @@
 #ifndef __X86_SELFPATH_MACHDEP_H__
 #define __X86_SELFPATH_MACHDEP_H__
 
-#define KSP_CPU_FEATURE		1
-#define KSP_CPU_FEATURE2	2
-#define KSP_AMD_FEATURE		3
-#define KSP_AMD_FEATURE2	4
-#define KSP_VIA_FEATURE_RNG	5
-#define KSP_VIA_FEATURE_XCRYPT	6
-#define KSP_CPU_STDEXT_FEATURE	7
-
 struct lf_selfpatch;
 
 extern char *md_selfpatch_nop_table[];


More information about the svn-soc-all mailing list