VirtualBox

Ignore:
Timestamp:
Oct 14, 2011 1:48:03 PM (13 years ago)
Author:
vboxsync
Message:

DMA recompiler bug workaround for floppy, too.

Location:
trunk/src/VBox/Devices/PC/BIOS-new
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS-new/ahci.c

    r38899 r38997  
    4545
    4646#define AHCI_MAX_STORAGE_DEVICES 4
    47 
    48 /* Because we don't tell the recompiler when guest's physical memory
    49  * is written, it can incorrectly cache guest code overwritten by
    50  * bus master DMA. We just re-write the memory block to flush any of
    51  * its caches. This is not exactly efficient, but works!
    52  */
    53 #define DMA_WORKAROUND      1
    5447
    5548/* Number of S/G table entries in EDDS. */
  • trunk/src/VBox/Devices/PC/BIOS-new/biosint.h

    r38833 r38997  
    228228#define BX_PANIC(...)   bios_printf(BIOS_PRINTF_DEBHALT, __VA_ARGS__)
    229229
     230/* Because we don't tell the recompiler when guest physical memory
     231 * is written, it can incorrectly cache guest code overwritten by
     232 * DMA (bus master or not). We just re-write the memory block to flush
     233 * any of its caches. This is not exactly efficient, but works!
     234 */
     235#define DMA_WORKAROUND      1
     236
    230237/* Random hardware-related definitions. */
    231238
  • trunk/src/VBox/Devices/PC/BIOS-new/floppy.c

    r38699 r38997  
    607607                return;
    608608            }
    609            
     609
     610#ifdef DMA_WORKAROUND
     611            rep_movsw(ES :> BX, ES :> BX, num_sectors * 512 / 2);
     612#endif
    610613            // ??? should track be new val from return_status[3] ?
    611614            set_diskette_current_cyl(drive, track);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette