summaryrefslogtreecommitdiff
path: root/efi-kernel/kern64.s
diff options
context:
space:
mode:
authorclaude <[email protected]>2026-07-12 10:27:24 +0000
committerclaude <[email protected]>2026-07-12 10:27:24 +0000
commit3caf5e9682807b9579938431cca4446d7efcf615 (patch)
tree119845f998ad6dbf36cc486bad7f2bb646660c7b /efi-kernel/kern64.s
parentc480e76433f9bb8ce8ce9d5802cdada8883db184 (diff)
downloadplan9-kencc-linux-3caf5e9682807b9579938431cca4446d7efcf615.tar.gz
plan9-kencc-linux-3caf5e9682807b9579938431cca4446d7efcf615.zip
🌭 efi-kernel/: настоящий EFI-загрузчик + amd64-ядро (Plan9 a.out)HEADmain
По уточнению @lzcnt (нужен EFI-загрузчик, не a.out-парсер, и amd64-ядро): - kernel.c + kern64.s -> 6c/6a/6l -> amd64 Plan9 a.out (S_MAGIC 0x8A97, entry 0x100000), kmain пишет строку в VGA 0xB8000. - efi_load.c -> PE32+ bootx64.efi (через pe64.s из 9legacy + dd skip=40): под UEFI печатает через ConOut, разбирает встроенный a.out (big-endian 40-байтный заголовок), копирует сегменты по entry, прыгает в ядро (long mode). - Проверено: валидный PE32+ x64 EFI_APPLICATION, ядро встроено и парсится, ESP собран. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Diffstat (limited to 'efi-kernel/kern64.s')
-rw-r--r--efi-kernel/kern64.s5
1 files changed, 5 insertions, 0 deletions
diff --git a/efi-kernel/kern64.s b/efi-kernel/kern64.s
new file mode 100644
index 0000000..9c39029
--- /dev/null
+++ b/efi-kernel/kern64.s
@@ -0,0 +1,5 @@
+/* amd64-энтрипоинт ядра: зовёт kmain (стек уже валиден от загрузчика) */
+TEXT _start(SB), 1, $-4
+ CALL kmain(SB)
+loop:
+ JMP loop