VirtualBox

Changeset 4391 in vbox for trunk


Ignore:
Timestamp:
Aug 27, 2007 5:12:05 PM (17 years ago)
Author:
vboxsync
Message:

Support booting from the Intel PXE ROM.

Location:
trunk/src/VBox/Devices/PC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/rombios.c

    r2981 r4391  
    79817981    if (read_word(VBOX_LANBOOT_SEG,0) == 0xaa55) {
    79827982      Bit16u pnpoff;
     7983      Bit32u manuf;
    79837984      // This is NOT a generic PnP implementation, but an Etherboot-specific hack.
    79847985      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);
    79897992ASM_START
    79907993    push ds
     
    79967999    pop ds
    79978000ASM_END
     8001          } else if (manuf == 0x65746E49) {
     8002            // Found Intel PXE ROM
     8003            print_boot_device(bootcd, bootlan, bootdrv);
     8004ASM_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
     8020bev_jump:
     8021    push cs
     8022    push #no_rom
     8023    push #VBOX_LANBOOT_SEG
     8024    push ax
     8025    retf    ; call Boot Entry Vector
     8026no_rom:
     8027    popa
     8028    pop es
     8029    pop ds
     8030ASM_END
     8031          }
    79988032        }
    79998033      }
  • trunk/src/VBox/Devices/PC/DevPcBios.cpp

    r4382 r4391  
    14001400    if (pu8LanBoot)
    14011401        rc = PDMDevHlpROMRegister(pDevIns, VBOX_LANBOOT_SEG << 4, cbFileLanBoot, pu8LanBoot,
    1402                                   false /* fShadow */, "Net Boot ROM");
     1402                                  true /* fShadow */, "Net Boot ROM");
    14031403
    14041404    rc = CFGMR3QueryU8(pCfgHandle, "DelayBoot", &pData->uBootDelay);
  • trunk/src/VBox/Devices/PC/DevPcBios.h

    r4071 r4391  
    2626#define VBOX_MPS_TABLE_BASE          0xe1100
    2727
    28 #define VBOX_LANBOOT_SEG             0xca00
     28#define VBOX_LANBOOT_SEG             0xe200
    2929
    3030#endif
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