formated code and fix include error in interrupts.c
[lunaix-os.git] / lunaix-os / arch / x86 / boot.S
index 29746eefd052fd4c36f8d51c2f6f58449b35e638..b41d24bba5cd81b887032dbfc4272ea201223ae1 100644 (file)
@@ -14,7 +14,9 @@
 
 .section .text
     .global start_
-    .type start_, @function
+    .type start_, @function     /* Optional, this just give the 
+                                 * linker more knowledge about the label 
+                                 */
     start_:
         movl $stack_top, %esp
         /* 
                 3. Enable paging
         */
         call _kernel_init
+        
+        subl $0x6, %esp
 
+        movl $_gdt, 2(%esp)
+        movw _gdt_limit, %ax
+        movw %ax, (%esp)
+        lgdt (%esp)
+
+        movl $_idt, 2(%esp)
+        movw _idt_limit, %ax
+        movw %ax, (%esp)
+        lidt (%esp)
+
+        addl $0x6, %esp
+
+        movw $0x10, %cx
+        movw %cx, %es
+        movw %cx, %ds
+        movw %cx, %fs
+        movw %cx, %gs
+        movw %cx, %ss
+
+        pushw $0x08
+        pushl $_after_gdt
+        retf
+
+    _after_gdt:
         pushl %ebx
         call _kernel_main