From c2495101637d32f4ebadbcfdd065a4d338337807 Mon Sep 17 00:00:00 2001 From: Eric-Paul Ickhorn Date: Sat, 17 Aug 2024 18:59:52 +0200 Subject: [PATCH] Fix bug in PCI driver with not saved registers In the PCI driver's device enumeration function, there was a mistake where a register that is being used in that function wasn't preserved as it should've been. It didn't cause any errors (at least yet), but it's better to fix such stuff once found. --- i386/legacy-boot/src-asm/drivers/pci/driver.asm | 2 +- i386/legacy-boot/src-asm/drivers/pci/enumerate.asm | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/i386/legacy-boot/src-asm/drivers/pci/driver.asm b/i386/legacy-boot/src-asm/drivers/pci/driver.asm index 3be6296..0d1a92f 100755 --- a/i386/legacy-boot/src-asm/drivers/pci/driver.asm +++ b/i386/legacy-boot/src-asm/drivers/pci/driver.asm @@ -34,7 +34,7 @@ initialize_pci_driver: push ebp mov ebp, esp - push ebx + push dword PCI_DEVICE_COUNT_OFFSET push dword 2 push dword 0 push dword 0 diff --git a/i386/legacy-boot/src-asm/drivers/pci/enumerate.asm b/i386/legacy-boot/src-asm/drivers/pci/enumerate.asm index e5d7d2c..0b69b45 100755 --- a/i386/legacy-boot/src-asm/drivers/pci/enumerate.asm +++ b/i386/legacy-boot/src-asm/drivers/pci/enumerate.asm @@ -190,11 +190,12 @@ pci_enumerate_bus: mov [esi + (64 - 8)], ebx mov [esi + (64 - 12)], ecx + mov [esi + (64 - 16)], edx mov [esi + (64 - 20)], edi ; [esi]: Device-in-bus Index ; [esi + 4]: Number of existing devices ; [esi + 8]: Bus number - ; [esi + 12]: + ; [esi + 12]: PCI driver area pointer mov [esi], dword 0 mov [esi + 4], dword 0 mov eax, [ebp - 8] @@ -259,6 +260,7 @@ pci_enumerate_bus: .epilog: mov ebx, [esi + (64 - 8)] mov ecx, [esi + (64 - 12)] + mov edx, [esi + (64 - 16)] mov edi, [esi + (64 - 20)] mov eax, [esi + 4] @@ -313,7 +315,6 @@ pci_enumerate: cmp edx, [ebp - 8] jae .epilog - .call_bus_enumerator: push ebp mov ebp, esp