[ipxe-devel] ipxe/seabios: segment register initialization

Michael S. Tsirkin mst at redhat.com
Sun Feb 14 15:53:05 UTC 2016


On Sun, Feb 14, 2016 at 03:40:51PM +0000, Michael Brown wrote:
> On 14/02/16 15:26, Michael S. Tsirkin wrote:
> >>I'm not aware of any standard describing the content of %ds when jumping to
> >>a boot sector at 0000:7c00.  Every boot sector that I have encountered
> >>explicitly initialises %ds (and %es, and %ss:%sp) to known values.
> >
> >Sounds reasonable wrt %ds, but  I think %ss:%sp at least is initialized by PXE, isn't it?
> >
> >PXE spec says (4.4.5 Client State at Bootstrap Execution Time (Remote.0)):
> >
> >On entry to the NBP:
> >! CS:IP must contain the value 0:7C00h.
> >! ES:BX must contain the address of the PXENV+ structure.
> >! SS:[SP+4] must contain the segment:offset address of the !PXE structure.
> >! EDX is no longer used.
> >! SS:SP is to contain the address of the beginning of the unused portion of the PXE services stack.
> >! There must be at least 1.5KB of free stack space for the NBP.
> 
> That's for execution of a PXE NBP, rather than a (SAN-booted) disk boot
> sector.
> 
> Michael

I actually thought the initial post was about iPXE calling NBP (starting
at location 07C00h) with a non-zero DS, not about booting from disk.

Rephrasing the original question, do you think %DS should be zeroed when
NBP is called then?

-- 
MST



More information about the ipxe-devel mailing list