[syslinux] problem reading PXELinux's code

Gene Cumm gene.cumm at gmail.com
Wed Feb 28 09:18:46 PST 2018


On Wed, Feb 28, 2018 at 4:19 AM, Zenghui Yu via Syslinux
<syslinux at zytor.com> wrote:
> 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?

Placeholder.

> What does physical address 0x0 have?

0.

> Can anyone who can please explain it?

Read further.  You'll see PXEEntry references it and is modified
elsewhere in code.  Where depends on what version and architecture
(EFI32/EFI64/BIOS)

-- 
-Gene


More information about the Syslinux mailing list