diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2013-01-28 01:59:14 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2013-01-28 02:36:29 +0100 |
commit | ce99076635d342a1f6ae1c3b781638c04372df3d (patch) | |
tree | 4714aae32d0cf2aaf1ca80ddbbfedd412f9246ae | |
parent | 28d83087776ebdad43a11fa3e687859462de4542 (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.h | 2 | ||||
-rw-r--r-- | i386/xen/xen_boothdr.S | 6 | ||||
-rw-r--r-- | xen/configfrag.ac | 10 |
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: |