[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
+ ; 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
+ ; 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
+ 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
+ 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
pop ebp\r
ret\r
\r
-[extern Proc_Clone]\r
-[extern Threads_Exit]\r
-[global SpawnTask]\r
-SpawnTask:\r
- ; Call Proc_Clone with Flags=0\r
- xor eax, eax\r
- push eax
- push eax\r
- call Proc_Clone\r
- add esp, 8 ; Remove arguments from stack\r
- \r
- test eax, eax\r
- jnz .parent\r
- \r
- ; In child, so now set up stack frame\r
- mov ebx, [esp+4] ; Child Function\r
- mov edx, [esp+8] ; Argument\r
- ; Child\r
- push edx ; Argument\r
- call ebx ; Function\r
- call Threads_Exit ; Kill Thread\r
- \r
-.parent:\r
- ret\r
-\r
[section .initpd]\r
[global gaInitPageDir]\r
[global gaInitPageTable]\r