[syslinux] problem reading PXELinux's code

Zenghui Yu zenghuiyu96 at gmail.com
Wed Feb 28 01:19:28 PST 2018


Hi All,

I have encountered a problem when reading PXELinux's source code.

In syslinux/core/pxelinux.asm, function *pxenv* is as below:

pxenv:

pushfd

pushad


; We may be removing ourselves from memory

cmp bx,PXENV_RESTART_TFTP


......


push es

push di

push bx

.jump:

call 0:0

add sp,6

mov [cs:PXEStatus],ax

......

ret


"Around" .jump, we store ES:DI and BX on PXE stack, which points to PXE
parameter block and PXE opcode correspondingly. Then we should call !PXE's
EntryPointSP to call specified PXE API, but why we use *call 0:0* here?
What does physical address 0x0 have?

Can anyone who can please explain it?

Thanks and regards,
zenghui


More information about the Syslinux mailing list