Compare commits

...

2 Commits

Author SHA1 Message Date
Eric-Paul Ickhorn 0d16e3e35a
Make driver initialization easier in manager.asm
With this change, the driver's setup function only has to be added
to the 'driver_init_functions'-array and it will be called once
'setup_drivers' is called.
2024-07-24 00:14:55 +02:00
Eric-Paul Ickhorn 6e8e022937
Make stage 2 entry (after GDT) call driver setup
The driver setup, which in turn calls all the drivers' setup functions
wasn't being called until now. Now, it is included and being called.

The test text which was used to test some display functions in older
revisions is also gone now.
2024-07-23 23:57:58 +02:00
2 changed files with 39 additions and 8 deletions

View File

@ -26,13 +26,41 @@ setup_drivers:
mov [esi + (64 - 16)], edx mov [esi + (64 - 16)], edx
mov [esi + (64 - 20)], edi mov [esi + (64 - 20)], edi
; [esi + 8]: Pointer to the current driver init function
; [esi + 12]L Pointer to current driver slot
; ecx: Driver slot index
xor ecx, ecx
.driver_setup_loop:
cmp ecx, DRIVER_SLOT_COUNT
jae .epilog
mov ebx, ecx
shl ebx, 2
add ebx, driver_init_functions
mov eax, [ebx]
mov [esi + 8], eax
cmp eax, 0
je .epilog
mov eax, ecx
mov edx, DRIVER_SLOT_SIZE
mul edx
mov [esi + 12], eax
push ebp push ebp
mov ebp, esp mov ebp, esp
push dword DRIVER_MEMORY_AREA push dword [esi + 12]
call initialize_pci_driver mov eax, [esi + 8]
call eax
mov esp, ebp mov esp, ebp
pop ebp pop ebp
inc ecx
jmp .driver_setup_loop
.epilog: .epilog:
mov eax, [esi + (64 - 4)] mov eax, [esi + (64 - 4)]
mov ebx, [esi + (64 - 8)] mov ebx, [esi + (64 - 8)]
@ -45,3 +73,4 @@ setup_drivers:
ret ret
%include "drivers/pci/driver.asm" %include "drivers/pci/driver.asm"
%include "drivers/acpi/driver.asm"

View File

@ -46,9 +46,6 @@ stage_2_setup_entry:
cli cli
hlt hlt
some_text:
db "This is some text.", 0x00
; Utilities ; Utilities
; Memory Management ; Memory Management
%include "memory/a20.asm" %include "memory/a20.asm"
@ -58,13 +55,18 @@ some_text:
bits 32 bits 32
stage2_true_entry: stage2_true_entry:
mov [dword 0xb8000], byte 'X' push ebp
mov [dword 0xb8000 + 1], byte 0x31 mov ebp, esp
call setup_drivers
mov esp, ebp
pop ebp
cli cli
hlt hlt
%include "utility/math.asm" %include "utility/math.asm"
%include "utility/memory.asm" %include "utility/memory.asm"
%include "utility/display.asm"
; Driver Manager ; Driver Manager
; %include "drivers/manager.asm" %include "drivers/manager.asm"