mirror of
https://github.com/dingusdev/dingusppc.git
synced 2024-11-15 17:08:19 +00:00
Fix PCI struct offset size
The Pointer to PCI Data Structure is supposed to be two bytes. It is described in the PCI Firmware Specification Revision 3.0, section 5.1.1. PCI Expansion ROM Header Format. The pointer is two bytes at 0x18. The pointer is supposed to be a multiple of 4 which means there's always at least two bytes of padding after the pointer. Some BIOS firmware images may use the 2 bytes following the pointer for other purposes (plus additional bytes before the PCI Data Structure) so we cannot assume the bytes will be zero. Some PCI expansion ROMs may include both BIOS and Open Firmware images.
This commit is contained in:
parent
f27dd94945
commit
9f1d613a2d
@ -190,7 +190,7 @@ int PCIDevice::attach_exp_rom_image(const std::string img_path)
|
|||||||
uint32_t exp_rom_image_size = img_file.tellg();
|
uint32_t exp_rom_image_size = img_file.tellg();
|
||||||
|
|
||||||
// verify PCI struct offset
|
// verify PCI struct offset
|
||||||
uint32_t pci_struct_offset = 0;
|
uint16_t pci_struct_offset = 0;
|
||||||
img_file.seekg(0x18, std::ios::beg);
|
img_file.seekg(0x18, std::ios::beg);
|
||||||
img_file.read((char *)&pci_struct_offset, sizeof(pci_struct_offset));
|
img_file.read((char *)&pci_struct_offset, sizeof(pci_struct_offset));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user