VirtualBox

Changeset 76968 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Jan 24, 2019 8:50:37 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
128352
Message:

BIOS: Skip HLT instruction in protected-mode APM idle call. Avoids Windows 3.1 Standard mode (including Windows 3.1 installer) crashing when power.drv is used (see bugref:6549).

Location:
trunk/src/VBox/Devices/PC/BIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/apm_pm.asm

    r76553 r76968  
    7272
    7373apmf_idle:                              ; function 05h
     74                ;
     75                ; Windows 3.1 POWER.DRV in Standard mode calls into APM
     76                ; with CPL=3. If that happens, the HLT instruction will fault
     77                ; and Windows will crash. To prevent that, we check the CPL
     78                ; and do nothing (better than crashing).
     79                ;
     80                push    cs
     81                pop     ax
     82                test    ax, 3           ; CPL > 0?
     83                jnz     apmw_success
    7484                sti
    7585                hlt
  • trunk/src/VBox/Devices/PC/BIOS/notes.txt

    r76791 r76968  
    7171- PC DOS 6.x/7.x QCONFIG is a rare user of INT 16h fn 0Ah (read keyboard ID).
    7272
    73 - DOS POWER.EXE uses the real mode APM interface, OS/2 APM.SYS uses the 16-bit
    74   protected mode APM interface, and Windows 9x uses the 32-bit protected mode
    75   APM interface.
     73- DOS POWER.EXE uses the real mode APM interface, Windows 3.1 POWER.DRV and
     74  OS/2 APM.SYS use the 16-bit protected mode APM interface, and Windows 9x
     75  uses the 32-bit protected mode APM interface.
    7676
    7777- Windows 98 is one of the few APM 1.2 users; Windows 95 uses APM 1.1, while
    7878  newer systems prefer ACPI.
     79
     80- Windows 3.1 Standard mode violates the APM specifications and calls into
     81  APM with CPL=3, causing the HLT instruction to fault if used. 386 Enhanced
     82  mode Windows 3.1 calls into APM with CPL=3.
    7983
    8084- QNX4 calls 16-bit protected-mode PCI BIOS in an environment where ESP is
Note: See TracChangeset for help on using the changeset viewer.

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