Re: Etherboot 5.5

Michael Brown <[email protected]>
Newsgroups gmane.network.etherboot.devel
Message-ID <[email protected]>
On Thu, 19 May 2005, Timothy Legge wrote:
> >   The ability to operate completely in 16-bit real mode, never
> >   switching to protected mode.  This is necessary in order to comply
> >   fully with the PXE "specification".  This is controlled by a
> >   compile-time option -DKEEP_IT_REAL; off by default.
> 
> I understand that this is one of the more difficult parts of the PXE
> spec.  Doesn't it contradict some other requirement in the spec (not
> that that s unusual?

Operating in real mode is not the really tricky part; that would be
operating in 16-bit protected mode (which we're supposed to do with the
same binary code).  There are a few interesting theoretical
impossibilities that the spec throws at us, such as requiring us to write
to specified arbitrary physical addresses when we're in 16-bit pmode and
have enforced 64kB segment limits.

> BTW, do we need an updated compiler/build tools?  I received the 
> following message from the first build I tried:
> 
> In file included from arch/i386/core/hooks.c:1:
> arch/i386/include/registers.h:19: warning: declaration does not declare 
> anything
> arch/i386/include/registers.h:87: warning: declaration does not declare 
> anything
> arch/i386/include/registers.h:88: warning: declaration does not declare 
> anything
> In file included from include/etherboot.h:157,
>                   from include/buffer.h:4,
>                   from include/dev.h:6,
>                   from include/main.h:4,
>                   from arch/i386/core/hooks.c:2:
> include/tftp.h:88: warning: "struct buffer" declared inside parameter list
> include/tftp.h:88: warning: its scope is only this definition or 
> declaration, which is probably not what you want
> arch/i386/core/hooks.c: In function `arch_main':
> arch/i386/core/hooks.c:20: error: structure has no member named `eax'
> arch/i386/core/hooks.c:23: error: structure has no member named `eax'
> make: *** [bin/hooks.o] Error 1

The "struct buffer" issue is due to a tweak I had to make today to get 
doxygen to work; I've fixed this now.  The "does not declare anything" is 
because gcc 3.4.3 apparently doesn't like having unnamed structs.  I 
though that this was supported; I'll have to check.  We don't make 
significant use of the structures in registers.h, so changing them to 
named structs will not be too hard, though it will make the code a little 
less clean.

Michael



-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.