-; AcessOS Microkernel Version\r
-; Start.asm\r
-\r
-[bits 32]\r
-\r
-KERNEL_BASE equ 0xC0000000\r
-\r
-[extern __load_addr]\r
-[extern __bss_start]\r
-[extern gKernelEnd]\r
-[section .multiboot]\r
-mboot:\r
- ; Multiboot macros to make a few lines later more readable\r
- MULTIBOOT_PAGE_ALIGN equ 1<<0\r
- MULTIBOOT_MEMORY_INFO equ 1<<1\r
- MULTIBOOT_HEADER_MAGIC equ 0x1BADB002\r
- MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO\r
- MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)\r
- \r
- ; This is the GRUB Multiboot header. A boot signature\r
- dd MULTIBOOT_HEADER_MAGIC\r
- dd MULTIBOOT_HEADER_FLAGS\r
- dd MULTIBOOT_CHECKSUM\r
- dd mboot - KERNEL_BASE ;Location of Multiboot Header\r
- \r
-; Multiboot 2 Header\r
-mboot2:\r
- MULTIBOOT2_HEADER_MAGIC equ 0xE85250D6\r
- MULTIBOOT2_HEADER_ARCH equ 0\r
- MULTIBOOT2_HEADER_LENGTH equ (mboot2_end-mboot2)\r
- MULTIBOOT2_CHECKSUM equ -(MULTIBOOT2_HEADER_MAGIC + MULTIBOOT2_HEADER_ARCH + MULTIBOOT2_HEADER_LENGTH)\r
- \r
- dd MULTIBOOT2_HEADER_MAGIC\r
- dd MULTIBOOT2_HEADER_ARCH\r
- dd MULTIBOOT2_HEADER_LENGTH\r
- dd MULTIBOOT2_CHECKSUM\r
- ; MBoot2 Address Header\r
- dw 2, 0\r
- dd 8 + 16\r
- dd mboot2 ; Location of Multiboot Header\r
- dd __load_addr - KERNEL_BASE ; Kernel Load base\r
- dd __bss_start - KERNEL_BASE ; Kernel Data End\r
- dd gKernelEnd - KERNEL_BASE ; Kernel BSS End\r
- ; MBoot2 Entry Point Tag\r
- dw 3, 0\r
- dd 8 + 4\r
- dd start - KERNEL_BASE\r
- ; MBoot2 Module Alignment Tag\r
- dw 6, 0\r
- dd 12 ; ???\r
- dd 0 ; Search me, seems it wants padding\r
- ; Terminator\r
- dw 0, 0\r
- dd 8\r
-mboot2_end:\r
- \r
-[section .text]\r
-[extern kmain]\r
-[global start]\r
-start:\r
- ; Set up stack\r
- mov esp, Kernel_Stack_Top\r
- \r
- ; Start Paging\r
- mov ecx, gaInitPageDir - KERNEL_BASE\r
- mov cr3, ecx\r
- \r
- mov ecx, cr0\r
- or ecx, 0x80010000 ; PG and WP\r
- mov cr0, ecx\r
- \r
- lea ecx, [.higherHalf]\r
- jmp ecx\r
-.higherHalf:\r
-\r
- ; Call the kernel\r
- push ebx ; Multiboot Info\r
- push eax ; Multiboot Magic Value\r
+; AcessOS Microkernel Version
+; Start.asm
+
+[bits 32]
+
+KERNEL_BASE equ 0xC0000000
+
+[extern __load_addr]
+[extern __bss_start]
+[extern gKernelEnd]
+[section .multiboot]
+mboot:
+ ; Multiboot macros to make a few lines later more readable
+ MULTIBOOT_PAGE_ALIGN equ 1<<0
+ MULTIBOOT_MEMORY_INFO equ 1<<1
+ MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
+ MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO
+ MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
+
+ ; This is the GRUB Multiboot header. A boot signature
+ dd MULTIBOOT_HEADER_MAGIC
+ dd MULTIBOOT_HEADER_FLAGS
+ dd MULTIBOOT_CHECKSUM
+ dd mboot - KERNEL_BASE ;Location of Multiboot Header
+
+; Multiboot 2 Header
+;mboot2:
+; MULTIBOOT2_HEADER_MAGIC equ 0xE85250D6
+; MULTIBOOT2_HEADER_ARCH equ 0
+; MULTIBOOT2_HEADER_LENGTH equ (mboot2_end-mboot2)
+; MULTIBOOT2_CHECKSUM equ -(MULTIBOOT2_HEADER_MAGIC + MULTIBOOT2_HEADER_ARCH + MULTIBOOT2_HEADER_LENGTH)
+;
+; dd MULTIBOOT2_HEADER_MAGIC
+; dd MULTIBOOT2_HEADER_ARCH
+; dd MULTIBOOT2_HEADER_LENGTH
+; dd MULTIBOOT2_CHECKSUM
+; ; MBoot2 Address Header
+; dw 2, 0
+; dd 8 + 16
+; dd mboot2 ; Location of Multiboot Header
+; dd __load_addr - KERNEL_BASE ; Kernel Load base
+; dd __bss_start - KERNEL_BASE ; Kernel Data End
+; dd gKernelEnd - KERNEL_BASE ; Kernel BSS End
+; ; MBoot2 Entry Point Tag
+; dw 3, 0
+; dd 8 + 4
+; dd start - KERNEL_BASE
+; ; MBoot2 Module Alignment Tag
+; dw 6, 0
+; dd 12 ; ???
+; dd 0 ; Search me, seems it wants padding
+; ; Terminator
+; dw 0, 0
+; dd 8
+;mboot2_end:
+
+[section .text]
+[extern kmain]
+[global start]
+start:
+
+ ; Set up stack
+ mov esp, Kernel_Stack_Top
+
+ ; Start Paging
+ mov ecx, gaInitPageDir - KERNEL_BASE
+ mov cr3, ecx
+
+ mov ecx, cr0
+ or ecx, 0x80010000 ; PG and WP
+ mov cr0, ecx
+
+ lea ecx, [.higherHalf]
+ jmp ecx
+.higherHalf:
+
+ ; Call the kernel
+ push ebx ; Multiboot Info
+ push eax ; Multiboot Magic Value