diff options
author | dzwdz | 2021-07-10 16:37:45 +0200 |
---|---|---|
committer | dzwdz | 2021-07-10 16:37:45 +0200 |
commit | d093a8eea6bfb0ff7e621e9ba3307dae698322aa (patch) | |
tree | 08a5272e2813cf8db8feda4ff91d919cb9ad7330 /src/platform/boot.s | |
parent | 1faac72e2514c335e2d5721dce8c9fd1da722062 (diff) |
separate the source code from object files; more modular Makefile
Diffstat (limited to 'src/platform/boot.s')
-rw-r--r-- | src/platform/boot.s | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/platform/boot.s b/src/platform/boot.s new file mode 100644 index 0000000..d5bfda5 --- /dev/null +++ b/src/platform/boot.s @@ -0,0 +1,47 @@ +.set MAGIC, 0x1BADB002 +.set FLAG_ALIGN, 1<<0 /* align modules on page boundaries */ +.set FLAG_MEMINFO, 1<<1 /* memory map */ +.set FLAGS, FLAG_ALIGN | FLAG_MEMINFO +.set CHECKSUM, -(MAGIC + FLAGS) + +.section .multiboot +.align 4 +.long MAGIC +.long FLAGS +.long CHECKSUM + +/* a lil stack */ +.section .bss +.global stack_top +.type stack_top, @object +.align 16 +stack_bottom: +.skip 16384 +stack_top: + + +.section .text +.global _start +.type _start, @function +_start: + mov $stack_top, %esp + call kmain + +.global halt_cpu +.type halt_cpu, @function +halt_cpu: + cli +1: hlt + jmp 1b + +// temporary, will be moved to another file soon +.global change_cs +.type change_cs, @function +change_cs: + /* retf pops off the return address and code segment off the stack. + * it turns out that in the i386 cdecl calling convention they're in + * the correct place already. + */ + retf + +.size _start, . - _start |