aboutsummaryrefslogtreecommitdiff
path: root/pci-arbiter/device_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'pci-arbiter/device_map.c')
-rw-r--r--pci-arbiter/device_map.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/pci-arbiter/device_map.c b/pci-arbiter/device_map.c
index 1627746d..284d6e93 100644
--- a/pci-arbiter/device_map.c
+++ b/pci-arbiter/device_map.c
@@ -47,3 +47,26 @@ device_map_region (struct pci_device *device, struct pci_mem_region *region,
return err;
}
+
+error_t
+device_map_rom (struct pci_device *device, void **addr)
+{
+ error_t err = 0;
+ vm_address_t fullrom;
+
+ if (*addr == 0)
+ {
+ err = vm_allocate (mach_task_self (), &fullrom, device->rom_size, 1);
+ if (err)
+ return ENOMEM;
+
+ err = pci_device_read_rom (device, (void *) fullrom);
+ if (err)
+ return err;
+
+ /* Return */
+ *addr = (void *) fullrom;
+ }
+
+ return err;
+}