diff options
| author | Michael Brown | 2008-08-28 00:45:59 +0200 |
|---|---|---|
| committer | Michael Brown | 2008-08-28 01:11:45 +0200 |
| commit | fc0c40a5b0833e215b596268e51c8a38076c8f19 (patch) | |
| tree | 05615189d289c42c58d807090cea739ec57e46b5 /src/arch/i386/interface | |
| parent | [romprefix] Add UNDI ROMID structure bus type field (diff) | |
| download | ipxe-fc0c40a5b0833e215b596268e51c8a38076c8f19.tar.gz ipxe-fc0c40a5b0833e215b596268e51c8a38076c8f19.tar.xz ipxe-fc0c40a5b0833e215b596268e51c8a38076c8f19.zip | |
[pxe] Fill in UNDIROMID pointer in !PXE structure
IBM's iSCSI Firmware Initiator checks the UNDIROMID pointer in the
!PXE structure that gets created by the UNDI loader. We didn't
previously fill this value in.
Diffstat (limited to 'src/arch/i386/interface')
| -rw-r--r-- | src/arch/i386/interface/pxe/pxe_call.c | 3 | ||||
| -rw-r--r-- | src/arch/i386/interface/pxe/pxe_entry.S | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/arch/i386/interface/pxe/pxe_call.c b/src/arch/i386/interface/pxe/pxe_call.c index 3a5f4c751..3ccb7fb5a 100644 --- a/src/arch/i386/interface/pxe/pxe_call.c +++ b/src/arch/i386/interface/pxe/pxe_call.c @@ -347,6 +347,9 @@ __cdecl void pxe_loader_call ( struct i386_all_regs *ix86 ) { /* Copy parameter block from caller */ copy_from_user ( ¶ms, uparams, 0, sizeof ( params ) ); + /* Fill in ROM segment address */ + ppxe.UNDIROMID.segment = ix86->segs.ds; + /* Set default status in case child routine fails to do so */ params.Status = PXENV_STATUS_FAILURE; diff --git a/src/arch/i386/interface/pxe/pxe_entry.S b/src/arch/i386/interface/pxe/pxe_entry.S index 204894ef8..c55e581f8 100644 --- a/src/arch/i386/interface/pxe/pxe_entry.S +++ b/src/arch/i386/interface/pxe/pxe_entry.S @@ -35,7 +35,7 @@ ppxe: .byte 0 /* StructCksum */ .byte 0 /* StructRev */ .byte 0 /* reserved_1 */ - .word 0, 0 /* UNDIROMID */ + .word undiheader, 0 /* UNDIROMID */ .word 0, 0 /* BaseROMID */ .word pxe_entry_sp, 0 /* EntryPointSP */ .word pxe_entry_esp, 0 /* EntryPointESP */ @@ -55,6 +55,11 @@ pxe_segments: .equ pxe_length, . - ppxe .size ppxe, . - ppxe + /* Define undiheader=0 as a weak symbol for non-ROM builds */ + .section ".weak" + .weak undiheader +undiheader: + /**************************************************************************** * PXENV+ structure **************************************************************************** |
