]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/bootstrap_custom/server/src/ARCH-x86/crt0.S
Some minor fixes.
[l4.git] / l4 / pkg / bootstrap_custom / server / src / ARCH-x86 / crt0.S
index 6fd45587694ea781e08e0783e40253fde62b9d87..df13f8cb9a85d4495ef3c37ea06266feabe4f44f 100644 (file)
@@ -8,10 +8,17 @@
  * 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"
@@ -29,10 +36,11 @@ start16:
     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
@@ -55,7 +63,24 @@ loader_pdpt:
 
        .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
@@ -69,7 +94,7 @@ _start:
        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
 
@@ -240,3 +265,5 @@ _stack_seg:
        .space  8192
        .globl  _stack
 _stack:
+
+