VirtualBox

Ignore:
Timestamp:
Jul 5, 2017 8:46:04 AM (8 years ago)
Author:
vboxsync
Message:

BIOS: Preserve most flags on INT 16h/01h, 11h. Some software depends on enabling interrupts and/or preserving TF, DF.

File:
1 edited

Legend:

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

    r63562 r67785  
    645645#define SP      r.gr.u.r16.sp
    646646#define FLAGS   r.ra.flags.u.r16.flags
     647#define IFLGS   r.ifl
    647648
    648649/* Interrupt 16h service implementation. */
     
    686687
    687688    case 0x01: /* check keyboard status */
    688         SET_IF();   /* Enable interrupts. Some callers depend on that! */
     689        /* Enable interrupts, preserve most flags. Some callers depend on that! */
     690        FLAGS = IFLGS;
    689691        if ( !dequeue_key(&scan_code, &ascii_code, 0) ) {
    690692            SET_ZF();
     
    763765
    764766    case 0x11: /* check MF-II keyboard status */
    765         SET_IF();
     767        /* Enable interrupts, preserve most flags. Some callers depend on that! */
     768        FLAGS = IFLGS;
    766769        if ( !dequeue_key(&scan_code, &ascii_code, 0) ) {
    767770            SET_ZF();
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