diff --git a/modules.yaml b/modules.yaml index 0350124..0cf31d4 100644 --- a/modules.yaml +++ b/modules.yaml @@ -40,6 +40,27 @@ kernel: - src/kernel/syscall.s - src/kernel/crtn.s +boot: + kind: exe + target: boot + output: boot.elf + source: + - src/boot/crt0.s + - src/boot/console.cpp + - src/boot/guids.cpp + - src/boot/loader.cpp + - src/boot/main.cpp + - src/boot/memory.cpp + - src/boot/reloc.cpp + - src/boot/utility.cpp + +nulldrv: + kind: exe + target: host + output: nulldrv + source: + - src/drivers/nulldrv/main.s + elf: kind: lib output: libelf.a @@ -90,24 +111,3 @@ tests: - src/tests/linked_list.cpp - src/tests/main.cpp - src/tests/memory_manager.cpp - -boot: - kind: exe - target: boot - output: boot.elf - source: - - src/boot/crt0.s - - src/boot/console.cpp - - src/boot/guids.cpp - - src/boot/loader.cpp - - src/boot/main.cpp - - src/boot/memory.cpp - - src/boot/reloc.cpp - - src/boot/utility.cpp - -nulldrv: - kind: exe - target: host - output: nulldrv - source: - - src/drivers/nulldrv/main.s diff --git a/src/kernel/crti.s b/src/kernel/crti.s new file mode 100644 index 0000000..3f1d0ae --- /dev/null +++ b/src/kernel/crti.s @@ -0,0 +1,14 @@ +section .init +global _init:function +_init: + push rbp + mov rbp, rsp + ; Control flow falls through to other .init sections + +section .fini +global _fini:function +_fini: + push rbp + mov rbp, rsp + ; Control flow falls through to other .fini sections + diff --git a/src/kernel/crtn.s b/src/kernel/crtn.s new file mode 100644 index 0000000..3a960c4 --- /dev/null +++ b/src/kernel/crtn.s @@ -0,0 +1,10 @@ +section .init + ; Control flow falls through to here from other .init sections + pop rbp + ret + +section .fini + ; Control flow falls through to here from other .fini sections + pop rbp + ret +