Changeset 1070 in vbox
- Timestamp:
- Feb 27, 2007 9:48:48 AM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 18947
- Location:
- trunk/src/VBox/Devices/PC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/rombios.c
r985 r1070 1850 1850 { 1851 1851 #ifdef VBOX 1852 // Skip the logo if a warm boot is requested. 1853 Bit16u warm_boot = read_word(0x0040,0x0072); 1854 write_word(0x0040,0x0072, 0); 1855 if (warm_boot == 0x1234) 1856 return; 1852 1857 #ifndef DEBUG 1853 1858 /* show graphical logo */ … … 8530 8535 ;---------- 8531 8536 int19_relocated: ;; Boot function, relocated 8537 8538 #ifdef VBOX 8539 // If an already booted OS calls int 0x19 to reboot, it is not sufficient 8540 // just to try booting from the configured drives. All BIOS variables and 8541 // interrupt vectors need to be reset, otherwise strange things may happen. 8542 // The approach used is faking a warm reboot (which just skips showing the 8543 // logo), which is a bit more than what we need, but hey, it's fast. 8544 mov bp, sp 8545 mov ax, 2[bp] 8546 cmp ax, #0xf000 8547 jz bios_initiated_boot 8548 xor ax, ax 8549 mov ds, ax 8550 mov ax, #0x1234 8551 mov 0x472, ax 8552 jmp post 8553 bios_initiated_boot: 8554 #endif /* VBOX */ 8532 8555 8533 8556 ;; int19 was beginning to be really complex, so now it … … 10284 10307 mov ss, ax 10285 10308 10309 #ifndef VBOX 10286 10310 ;; zero out BIOS data area (40:00..40:ff) 10287 10311 mov es, ax … … 10291 10315 rep 10292 10316 stosw 10317 #else /* VBOX */ 10318 ;; zero out BIOS data area (40:00..40:ff) except word at 40:72 10319 mov es, ax 10320 mov di, #0x0400 10321 cld 10322 mov cx, #0x0039 ;; 57 words 10323 rep 10324 stosw 10325 inc di 10326 inc di 10327 mov cx, #0x0046 ;; 70 words 10328 rep 10329 stosw 10330 #endif 10293 10331 10294 10332 call _log_bios_start … … 10321 10359 ;; zerod out above 10322 10360 10361 #ifndef VBOX 10323 10362 ;; Warm Boot Flag 0040:0072 10324 10363 ;; value of 1234h = skip memory checks 10325 10364 ;; zerod out above 10365 #endif /* !VBOX */ 10326 10366 10327 10367 -
trunk/src/VBox/Devices/PC/DevPcBios.cpp
r1066 r1070 698 698 } 699 699 #endif 700 701 /* Force a BIOS cold boot after a reset. */ 702 uint16_t *pu16WarmBoot = (uint16_t *)MMPhysGCPhys2HCVirt(pVM, 0x00000472, 2); 703 AssertRelease(pu16WarmBoot); 704 *pu16WarmBoot = 0; 700 705 } 701 706
Note:
See TracChangeset
for help on using the changeset viewer.