From e7fc653f44247f1008509a68bf9b666e33fea0e5 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 23 Jul 2019 19:45:15 +0200 Subject: implement PCIBIOS specification Signed-off-by: Paolo Bonzini --- pci.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'pci.c') diff --git a/pci.c b/pci.c index 1457d17..f03ff6d 100644 --- a/pci.c +++ b/pci.c @@ -1,11 +1,13 @@ #include "bios.h" #include "ioport.h" #include "pci.h" +#include static uint16_t addend; -static uint8_t bus, max_bus, bridge_head; +static uint8_t bus, bridge_head; static bool use_i440fx_routing; static int bridge_count; +uint8_t max_bus; static void do_setup_pci_bus(void); @@ -143,6 +145,21 @@ static void do_setup_pci_bus(void) } } +void setup_bios32(void) +{ + char *bios32 = malloc_fseg_align(16, 16); + void *bios32_entry_ = &bios32_entry; + int i; + + memcpy(bios32, "_32_", 4); + memcpy(bios32 + 4, &bios32_entry_, 4); + bios32[8] = 0; + bios32[9] = 1; + memset(bios32 + 10, 0, 6); + for (i = 0; i <= 9; i++) + bios32[10] -= bios32[i]; +} + void setup_pci(void) { const int bdf = 0; @@ -156,4 +173,5 @@ void setup_pci(void) panic(); do_setup_pci_bus(); + setup_bios32(); } -- cgit v1.1