Changeset 42332 in vbox for trunk/src/VBox/Devices/PC/BIOS/pcibios.c
- Timestamp:
- Jul 23, 2012 4:48:01 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/pcibios.c
r42127 r42332 97 97 typedef struct { 98 98 pushad_regs_t gr; 99 uint32_t es; 99 100 uint32_t flags; 100 101 } pci_regs_t; … … 157 158 158 159 #endif 160 161 /* PCI IRQ routing expansion buffer descriptor. */ 162 typedef struct { 163 uint16_t buf_size; 164 uint8_t __far *buf_ptr; 165 } pci_route_buf; 166 167 /* Defined in assembler module .*/ 168 extern char pci_routing_table[]; 169 extern uint16_t pci_routing_table_size; 159 170 160 171 /* Write the CONFIG_ADDRESS register to prepare for data access. Requires … … 293 304 void BIOSCALL PCIxx(function)(volatile pci_regs_t r) 294 305 { 295 uint16_t device; 306 pci_route_buf __far *route_buf; 307 uint16_t device; 296 308 297 309 BX_DEBUG_PCI("PCI: AX=%04X BX=%04X CX=%04X\n", AX, BX, CX); … … 367 379 } 368 380 break; 381 case GET_IRQ_ROUTING: 382 route_buf = ES :> (void *)DI; 383 if (pci_routing_table_size > route_buf->buf_size) { 384 SET_AH(BUFFER_TOO_SMALL); 385 SET_CF(); 386 } else { 387 rep_movsb(route_buf->buf_ptr, pci_routing_table, pci_routing_table_size); 388 } 389 break; 369 390 default: 370 391 BX_INFO("PCI: Unsupported function AX=%04X BX=%04X called\n", AX, BX);
Note:
See TracChangeset
for help on using the changeset viewer.