* Please see the COPYING-GPL-2 file for details.
*/
#include <l4/sys/compiler.h>
-#define JH
-#ifdef JH
+#ifdef JAILHOUSE
#include "inmate.h"
+
#define X86_CR0_PE 0x00000001
+#define X86_CR0_WP 0x00010000
+#define X86_CR0_PG 0x80000000
+
+#define X86_CR4_PSE 0x00000010
+
+#define MSR_MTRR_DEF_TYPE 0x000002ff
+#define MTRR_ENABLE 0x00000800
.code16
.section ".jh.boot", "ax"
or $X86_CR0_PE,%al
mov %eax,%cr0
- ljmpl $INMATE_CS32,$_start + FSEGMENT_BASE
+ ljmpl $INMATE_CS32,$_start
.code32
+.global loader_gdt
loader_gdt:
.quad 0
.quad 0x00cf9b000000ffff
.globl _start
_start:
-#ifdef REALMODE_LOADING
+#ifdef REALMODE_LOADING
+ /*
+ mov %cr4,%eax
+ or $X86_CR4_PSE,%eax
+ mov %eax,%cr4
+
+ mov $loader_pdpt + FSEGMENT_BASE,%eax
+ mov %eax,%cr3
+
+ mov $(X86_CR0_PG | X86_CR0_WP | X86_CR0_PE),%eax
+ mov %eax,%cr0
+ */
+#ifdef JAILHOUSE
+ movl $MSR_MTRR_DEF_TYPE,%ecx
+ rdmsr
+ or $MTRR_ENABLE,%eax
+ wrmsr
+#endif //JAILHOUSE
cld
cli
mov $(3 * 8), %eax
leal _stack, %esp
#endif
pushl $0
- pushl %esi /* Pointer to real mode or Xen start_info pointer */
+ pushl $0 /* No Xen start_info pointer */
pushl %eax
pushl %ebx
.space 8192
.globl _stack
_stack:
+
+