Changeset 84673 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Jun 4, 2020 9:38:05 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/orgs.asm
r84502 r84673 1587 1587 ;; 1588 1588 int19_relocated: 1589 ; If an already booted OS calls int 0x19 to reboot, it is not sufficient1590 ; just to try booting from the configured drives. All BIOS variables and1591 ; interrupt vectors need to be reset, otherwise strange things may happen.1592 ; The approach used is faking a warm reboot (which just skips showing the1593 ; 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. the1596 ; system BIOS. But option ROMs can also legitimately invoke INT 19h so1597 ; we need different heuristics.1598 xor ax, ax1599 mov ds, ax1600 mov es, ax1601 cld1602 ; Check if the boot sector area is untouched1603 mov cx, 2561604 mov di, 7C00h1605 repe scasw1606 jcxz bios_initiated_boot1607 1608 mov ax, 1234h1609 mov ds:[472], ax1610 jmp post1611 1612 bios_initiated_boot:1613 1589 ;; The C worker function returns the boot drive in bl and 1614 1590 ;; the boot segment in ax. In case of failure, the boot
Note:
See TracChangeset
for help on using the changeset viewer.