In message <6C97C4DE-EDB4-4852-88DE-(E-Mail Removed)>, santosh
<(E-Mail Removed)> wrote:
> Hi All,
>
> We are writing a 16 bit PXE driver. Our network card registers map in the
> 32 bit address space using the flat.asm available in net. To access the
> registers from real mode we are changing the GDT limit to 4GB as a first
> step in our driver. With this we are able to tftp OSChooser.com and ntldr
> file with RIS. After this system hangs. Actually it is supposed to get the
> winnt.sif file.
>
> I read that during NT boot process has the following steps
> 4. Ntldr is loaded and initialized from the boot sector
> 5. Change the processor from real mode to 32-bit flat memory mode
> 6. Ntldr starts the appropriate minifile system drivers.
>
> Since we have already chnaged the GDT limit to 4GB in the beginning, how
> does it will affect the step 5 of NT boot process??
NTLDR needs to switch back to real mode (or VM86 mode) to call BIOS
functions (including your PXE driver), to do this it should set the segment
limits back to 64K, and I assume it does. Every time your driver is entered
in real mode you should set up the segments, and restore them on exit.
On the other hand your PXE driver can be called in 16 bit protected mode,
could there be a bug in your driver related to protected mode? I don't know
if NTLDR uses the protected mode interface of PXE.
The PXE spec is unclear if PXE APIs can be called in VM86 mode, which would
be a problem.
|