diff options
author | Patrick Georgi <patrick.georgi@secunet.com> | 2011-01-13 11:38:46 +0000 |
---|---|---|
committer | Patrick Georgi <patrick.georgi@coresystems.de> | 2011-01-13 11:38:46 +0000 |
commit | 9144304771be6cc89fcd010a0c8bc123bb750cfc (patch) | |
tree | 1ad3642b709324c910e6fffbb677698c6937b189 /src/devices/oprom/yabel/device.h | |
parent | fe7d6b9a4a784f0b92b3c9dc5b6c6070b4c2e10c (diff) | |
download | coreboot-9144304771be6cc89fcd010a0c8bc123bb750cfc.tar.xz |
Improve compatibility of YABEL with real-world VGABIOSes
Some of them do weird things to the option rom region (mapping
registers there or so) which failed as we handled these memory
region in emulation. As they were copied back to real memory
after the emulation was done, we can just as well use real
memory directly for these regions.
This affects IVT, BDA, and option ROM space.
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com>
Acked-by: Joseph Smith <joe@settoplinux.org>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6251 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/devices/oprom/yabel/device.h')
-rw-r--r-- | src/devices/oprom/yabel/device.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/devices/oprom/yabel/device.h b/src/devices/oprom/yabel/device.h index dbbd28d5e8..b6ec1e3df8 100644 --- a/src/devices/oprom/yabel/device.h +++ b/src/devices/oprom/yabel/device.h @@ -101,15 +101,18 @@ typedef struct { // device. Needed for faster address translation, so // not every I/O or Memory Access needs to call translate_address_dev // and access the device tree -// 6 BARs, 1 Exp. ROM, 1 Cfg.Space, and 3 Legacy +// 6 BARs, 1 Exp. ROM, 1 Cfg.Space, and 3 Legacy, plus 2 "special" // translations are supported... this should be enough for // most devices... for VGA it is enough anyways... -extern translate_address_t translate_address_array[11]; +extern translate_address_t translate_address_array[13]; // index of last translate_address_array entry // set by get_dev_addr_info function extern u8 taa_last_entry; +// add 1:1 mapped memory regions to translation table +void biosemu_add_special_memory(u32 start, u32 size); + /* the device we are working with... */ extern biosemu_device_t bios_device; @@ -117,7 +120,7 @@ u8 biosemu_dev_init(struct device * device); // NOTE: for dev_check_exprom to work, biosemu_dev_init MUST be called first! u8 biosemu_dev_check_exprom(unsigned long rom_base_addr); -u8 biosemu_dev_translate_address(unsigned long * addr); +u8 biosemu_dev_translate_address(int type, unsigned long * addr); /* endianness swap functions for 16 and 32 bit words * copied from axon_pciconfig.c |