summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2013-01-28 01:59:14 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-01-28 02:36:29 +0100
commitce99076635d342a1f6ae1c3b781638c04372df3d (patch)
tree4714aae32d0cf2aaf1ca80ddbbfedd412f9246ae
parent28d83087776ebdad43a11fa3e687859462de4542 (diff)
Add initial code for disabling ring1 xen execution
* xen/configfrag.ac (--disable-ring1): Add option. * i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_RING1]: Add supervisor_mode_kernel. * i386/i386/seg.h (KERNEL_RING) [!MACH_RING1]: Set macro to 0.
-rw-r--r--i386/i386/seg.h2
-rw-r--r--i386/xen/xen_boothdr.S6
-rw-r--r--xen/configfrag.ac10
3 files changed, 17 insertions, 1 deletions
diff --git a/i386/i386/seg.h b/i386/i386/seg.h
index fe7acc1..ff9a0cd 100644
--- a/i386/i386/seg.h
+++ b/i386/i386/seg.h
@@ -38,7 +38,7 @@
*/
/* Note: the value of KERNEL_RING is handled by hand in locore.S */
-#ifdef MACH_HYP
+#ifdef MACH_RING1
#define KERNEL_RING 1
#else /* MACH_HYP */
#define KERNEL_RING 0
diff --git a/i386/xen/xen_boothdr.S b/i386/xen/xen_boothdr.S
index 4e2fb51..617be51 100644
--- a/i386/xen/xen_boothdr.S
+++ b/i386/xen/xen_boothdr.S
@@ -39,6 +39,9 @@
#ifndef MACH_PV_DESCRIPTORS
.ascii "|writable_descriptor_tables"
#endif /* MACH_PV_DESCRIPTORS */
+#ifndef MACH_RING1
+ .ascii "|supervisor_mode_kernel"
+#endif /* MACH_PV_DESCRIPTORS */
.byte 0
/* Macro taken from linux/include/linux/elfnote.h */
@@ -76,6 +79,9 @@
#ifndef MACH_PV_DESCRIPTORS
"|writable_descriptor_tables"
#endif /* MACH_PV_DESCRIPTORS */
+#ifndef MACH_RING1
+ "|supervisor_mode_kernel"
+#endif /* MACH_RING1 */
)
#include <mach/machine/asm.h>
diff --git a/xen/configfrag.ac b/xen/configfrag.ac
index d0705a4..b55fc5b 100644
--- a/xen/configfrag.ac
+++ b/xen/configfrag.ac
@@ -45,10 +45,20 @@ dnl These are experimental
AM_CONDITIONAL([enable_pv_descriptors], [true])
[fi]
+ AC_ARG_ENABLE([ring1],
+ AS_HELP_STRING([--disable-ring1], [ring1 kernel support]))
+ [if [ x"$enable_ring1" = xno ]; then]
+ AM_CONDITIONAL([enable_ring1], [false])
+ [else]
+ AC_DEFINE([MACH_RING1], [], [Enable ring1 kernel support])
+ AM_CONDITIONAL([enable_ring1], [true])
+ [fi]
+
[else]
AM_CONDITIONAL([PLATFORM_xen], [false])
AM_CONDITIONAL([enable_pseudo_phys], [false])
AM_CONDITIONAL([enable_pv_descriptors], [false])
+ AM_CONDITIONAL([enable_ring1], [false])
[fi]
dnl Local Variables: