diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-21 00:39:02 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-21 11:44:57 +0200 |
commit | 2e7cb17c15c64bfe6394b2a1951fa187c2620c7d (patch) | |
tree | 3f42e5910f51339fcc522782529674aa9d9d1543 /main.c | |
parent | 7cadd5a6fbdbf078c2e6a4d59dcb5e5e2371406e (diff) | |
download | qboot-2e7cb17c15c64bfe6394b2a1951fa187c2620c7d.zip qboot-2e7cb17c15c64bfe6394b2a1951fa187c2620c7d.tar.gz qboot-2e7cb17c15c64bfe6394b2a1951fa187c2620c7d.tar.bz2 |
initial fw_cfg support
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -1,7 +1,9 @@ #include "bios.h" +#include "e820.h" #include "pci.h" #include "string.h" #include "segment.h" +#include "fw_cfg.h" #define PCI_VENDOR_ID_INTEL 0x8086 #define PCI_DEVICE_ID_INTEL_82441 0x1237 @@ -77,13 +79,28 @@ static void setup_idt(void) set_realmode_int(0x15, bios_int15); } +static void extract_e820(void) +{ + int id = fw_cfg_file_id("etc/e820"); + uint32_t size; + + if (id == -1) + panic(); + + size = fw_cfg_file_size(id); + e820.nr_map = size / sizeof(e820.map[0]); + fw_cfg_file_select(id); + fw_cfg_read(&e820.map, size); +} + int main(void) { make_bios_writable(); setup_pic(); setup_idt(); + fw_cfg_setup(); // extract_acpi(); - // extract_e820(); + extract_e820(); // extract_smbios(); // extract_kernel(); // make_bios_readonly(); |