From d9b8af151fb92fa89042dfdeaa60c854a3e8af31 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Tue, 9 Jan 2024 22:13:20 +0100 Subject: stage2: move kernel loading code to separate file --- stage2/main.asm | 67 +++------------------------------------------------------ 1 file changed, 3 insertions(+), 64 deletions(-) (limited to 'stage2/main.asm') diff --git a/stage2/main.asm b/stage2/main.asm index 5027546..fae8d5a 100644 --- a/stage2/main.asm +++ b/stage2/main.asm @@ -35,6 +35,8 @@ setup: [bits 64] +%include "stage2/elf.asm" + long_mode: ; setup segment registers mov ax, 0x0010 @@ -44,69 +46,6 @@ long_mode: mov gs, ax mov ss, ax - mov eax, [kernel_elf] - cmp eax, [.elf] - jne .fail - - mov r8, [kernel_elf+32] ; program header pos - add r8, kernel_elf - - movzx rbx, word[kernel_elf+54] ; program header size - movzx rdx, word[kernel_elf+56] ; num of program headers - -.header: - cmp rdx, 0 - je .start - - mov edi, [r8] ; type - cmp edi, 0 - je .next - - cmp edi, 1 - je .load - - cmp edi, 2 - je .fail - - cmp edi, 3 - je .fail - - jmp .next - -.load: - ; zero out the segment - mov al, 0 - mov rdi, [r8+16] - mov rcx, [r8+40] - rep stosb - - ; load from file - mov rdi, [r8+16] - mov rsi, [r8+8] - add rsi, kernel_elf - mov rcx, [r8+32] - rep movsb - -.next: - - add r8, rbx - dec rdx - jmp .header - -.start: - ; more stack space - mov rsp, 0x80000 - xor rbp, rbp - - ; ELF entry point - mov rax, [kernel_elf+24] - call rax - -.fail: - cli - hlt - jmp $ - -.elf: db 0x7f, "ELF" + call load_kernel_elf kernel_elf: -- cgit v1.2.3