- Timestamp:
- Aug 27, 2007 5:12:05 PM (17 years ago)
- Location:
- trunk/src/VBox/Devices/PC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/rombios.c
r2981 r4391 7981 7981 if (read_word(VBOX_LANBOOT_SEG,0) == 0xaa55) { 7982 7982 Bit16u pnpoff; 7983 Bit32u manuf; 7983 7984 // This is NOT a generic PnP implementation, but an Etherboot-specific hack. 7984 7985 pnpoff = read_word(VBOX_LANBOOT_SEG,0x1a); 7985 if (read_dword(VBOX_LANBOOT_SEG,pnpoff) == 0x506e5024 && 7986 read_dword(VBOX_LANBOOT_SEG,read_word(VBOX_LANBOOT_SEG,pnpoff+0xe)) == 0x65687445) { 7987 // Found PnP signature and Etherboot manufacturer string. 7988 print_boot_device(bootcd, bootlan, bootdrv); 7986 if (read_dword(VBOX_LANBOOT_SEG,pnpoff) == 0x506e5024) { 7987 // Found PnP signature 7988 manuf = read_dword(VBOX_LANBOOT_SEG,read_word(VBOX_LANBOOT_SEG,pnpoff+0xe)); 7989 if (manuf == 0x65687445) { 7990 // Found Etherboot ROM 7991 print_boot_device(bootcd, bootlan, bootdrv); 7989 7992 ASM_START 7990 7993 push ds … … 7996 7999 pop ds 7997 8000 ASM_END 8001 } else if (manuf == 0x65746E49) { 8002 // Found Intel PXE ROM 8003 print_boot_device(bootcd, bootlan, bootdrv); 8004 ASM_START 8005 push ds 8006 push es 8007 pusha 8008 sti ; Why are interrupts disabled now? Because we were called through an INT! 8009 calli 0x0003,VBOX_LANBOOT_SEG 8010 ; cmp bx,#0x20 8011 ; jne no_rom 8012 push #VBOX_LANBOOT_SEG 8013 pop ds 8014 mov bx,#0x1a ; PnP header offset 8015 mov bx,[bx] 8016 add bx,#0x1a ; BEV offset in PnP header 8017 mov ax,[bx] 8018 test ax,ax 8019 jz no_rom 8020 bev_jump: 8021 push cs 8022 push #no_rom 8023 push #VBOX_LANBOOT_SEG 8024 push ax 8025 retf ; call Boot Entry Vector 8026 no_rom: 8027 popa 8028 pop es 8029 pop ds 8030 ASM_END 8031 } 7998 8032 } 7999 8033 } -
trunk/src/VBox/Devices/PC/DevPcBios.cpp
r4382 r4391 1400 1400 if (pu8LanBoot) 1401 1401 rc = PDMDevHlpROMRegister(pDevIns, VBOX_LANBOOT_SEG << 4, cbFileLanBoot, pu8LanBoot, 1402 false /* fShadow */, "Net Boot ROM");1402 true /* fShadow */, "Net Boot ROM"); 1403 1403 1404 1404 rc = CFGMR3QueryU8(pCfgHandle, "DelayBoot", &pData->uBootDelay); -
trunk/src/VBox/Devices/PC/DevPcBios.h
r4071 r4391 26 26 #define VBOX_MPS_TABLE_BASE 0xe1100 27 27 28 #define VBOX_LANBOOT_SEG 0x ca0028 #define VBOX_LANBOOT_SEG 0xe200 29 29 30 30 #endif
Note:
See TracChangeset
for help on using the changeset viewer.