VirtualBox

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


Ignore:
Timestamp:
Jun 4, 2020 9:38:05 AM (5 years ago)
Author:
vboxsync
Message:

BIOS: Removed INT 19h heuristic altogether (see bugref:5649).

File:
1 edited

Legend:

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

    r84502 r84673  
    15871587;;
    15881588int19_relocated:
    1589 ; If an already booted OS calls int 0x19 to reboot, it is not sufficient
    1590 ; just to try booting from the configured drives. All BIOS variables and
    1591 ; interrupt vectors need to be reset, otherwise strange things may happen.
    1592 ; The approach used is faking a warm reboot (which just skips showing the
    1593 ; logo), which is a bit more than what we need, but hey, it's fast.
    1594 ;
    1595 ; Initially we checked if the caller is in the F000h segment, i.e. the
    1596 ; system BIOS. But option ROMs can also legitimately invoke INT 19h so
    1597 ; we need different heuristics.
    1598                 xor     ax, ax
    1599                 mov     ds, ax
    1600                 mov     es, ax
    1601                 cld
    1602                 ; Check if the boot sector area is untouched
    1603                 mov     cx, 256
    1604                 mov     di, 7C00h
    1605                 repe scasw
    1606                 jcxz    bios_initiated_boot
    1607 
    1608                 mov     ax, 1234h
    1609                 mov     ds:[472], ax
    1610                 jmp     post
    1611 
    1612 bios_initiated_boot:
    16131589                ;; The C worker function returns the boot drive in bl and
    16141590                ;; the boot segment in ax. In case of failure, the boot
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