VirtualBox

Changeset 71422 in vbox for trunk/src/VBox/Devices/PC/BIOS


Ignore:
Timestamp:
Mar 21, 2018 11:20:00 AM (7 years ago)
Author:
vboxsync
Message:

BIOS: INT 15h/87h unconditionally disables A20 gate when done. Also don't just destroy DI register.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/system.c

    r69501 r71422  
    104104    "call   pentry"                 \
    105105    "pentry:"                       \
    106     "pop    di"                     \
    107     "add    di, 1Bh"                \
     106    "pop    ax"                     \
     107    "add    ax, 1Bh"                \
    108108    "push   20h"                    \
    109     "push   di"                     \
     109    "push   ax"                     \
    110110    "lgdt   fword ptr es:[si+8]"    \
    111111    "lidt   fword ptr cs:pmode_IDT" \
     
    233233    "cld"                           \
    234234    "rep    movsw"                  \
    235     modify nomemory;
     235    modify [di] nomemory;
    236236
    237237/* The pm_switch has a few crucial differences from pm_enter, hence
     
    839839void BIOSCALL int15_blkmove(disk_regs_t r)
    840840{
    841     bx_bool     prev_a20_enable;
    842841    uint16_t    base15_00;
    843842    uint8_t     base23_16;
     
    850849    int_disable();    /// @todo aren't they disabled already?
    851850
    852     prev_a20_enable = set_enable_a20(1); // enable A20 line
     851    set_enable_a20(1); // enable A20 line
    853852
    854853    // 128K max of transfer on 386+ ???
     
    906905    pm_stack_restore();
    907906
    908     set_enable_a20(prev_a20_enable);
     907    set_enable_a20(0);  // unconditionally disable A20 line
    909908
    910909    // turn interrupts back on
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