Changeset 58818 in vbox for trunk/src/VBox/Devices/PC/BIOS/ahci.c
- Timestamp:
- Nov 23, 2015 12:13:00 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 104274
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/ahci.c
r58724 r58818 235 235 parm [ax] modify nomemory; 236 236 237 void high_bits_save(ahci_t __far *ahci)237 void inline high_bits_save(ahci_t __far *ahci) 238 238 { 239 239 ahci->saved_eax_hi = eax_hi_rd(); 240 240 } 241 241 242 void high_bits_restore(ahci_t __far *ahci)242 void inline high_bits_restore(ahci_t __far *ahci) 243 243 { 244 244 eax_hi_wr(ahci->saved_eax_hi); … … 248 248 * Sets a given set of bits in a register. 249 249 */ 250 static void ahci_ctrl_set_bits(uint16_t iobase, uint16_t reg, uint32_t mask)250 static void inline ahci_ctrl_set_bits(uint16_t iobase, uint16_t reg, uint32_t mask) 251 251 { 252 252 outpd(iobase + AHCI_REG_IDX, reg); … … 257 257 * Clears a given set of bits in a register. 258 258 */ 259 static void ahci_ctrl_clear_bits(uint16_t iobase, uint16_t reg, uint32_t mask)259 static void inline ahci_ctrl_clear_bits(uint16_t iobase, uint16_t reg, uint32_t mask) 260 260 { 261 261 outpd(iobase + AHCI_REG_IDX, reg); … … 267 267 * for a register. 268 268 */ 269 static uint8_t ahci_ctrl_is_bit_set(uint16_t iobase, uint16_t reg, uint32_t mask)269 static uint8_t inline ahci_ctrl_is_bit_set(uint16_t iobase, uint16_t reg, uint32_t mask) 270 270 { 271 271 outpd(iobase + AHCI_REG_IDX, reg); … … 343 343 uint16_t n_sect = bios_dsk->drqp.nsect; 344 344 uint16_t sectsz = bios_dsk->drqp.sect_sz; 345 uint16_t prdt_idx;346 345 fis_d2h __far *d2h; 347 346 … … 373 372 vds_build_sg_list(&ahci->edds, bios_dsk->drqp.buffer, (uint32_t)n_sect * sectsz); 374 373 375 prdt_idx = ahci->cur_prd;376 377 374 /* Set up the PRDT. */ 378 ahci->aPrdt[ prdt_idx].len = ahci->edds.u.sg[0].size - 1;379 ahci->aPrdt[ prdt_idx].phys_addr = ahci->edds.u.sg[0].phys_addr;380 ++ prdt_idx;375 ahci->aPrdt[ahci->cur_prd].len = ahci->edds.u.sg[0].size - 1; 376 ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->edds.u.sg[0].phys_addr; 377 ++ahci->cur_prd; 381 378 382 379 if (bios_dsk->drqp.skip_a) { 383 ahci->aPrdt[prdt_idx].len = bios_dsk->drqp.skip_a - 1; 384 ahci->aPrdt[prdt_idx].phys_addr = ahci->sink_buf_phys; 385 ++prdt_idx; 386 } 387 388 ahci->cur_prd = prdt_idx; 389 390 #ifdef DEBUG_AHCI 391 for (prdt_idx = 0; prdt_idx < ahci->cur_prd; ++prdt_idx) { 392 DBG_AHCI("S/G entry %u: %5lu bytes @ %08lX\n", prdt_idx, 393 ahci->aPrdt[prdt_idx].len + 1, ahci->aPrdt[prdt_idx].phys_addr); 380 ahci->aPrdt[ahci->cur_prd].len = bios_dsk->drqp.skip_a - 1; 381 ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->sink_buf_phys; 382 ++ahci->cur_prd; 383 } 384 385 #if DEBUG_AHCI 386 { 387 uint16_t prdt_idx; 388 389 for (prdt_idx = 0; prdt_idx < ahci->cur_prd; ++prdt_idx) { 390 DBG_AHCI("S/G entry %u: %5lu bytes @ %08lX\n", prdt_idx, 391 ahci->aPrdt[prdt_idx].len + 1, ahci->aPrdt[prdt_idx].phys_addr); 392 } 394 393 } 395 394 #endif
Note:
See TracChangeset
for help on using the changeset viewer.