[ipxe-devel] 486 with a Realtek 8139

Michael Brown mcb30 at ipxe.org
Wed May 12 10:12:36 UTC 2021


On 05/05/2021 20:13, Michael Brown wrote:
> For unlzma.S, just changing to ".arch i486" is fine, since there are no 
> 586-class instructions in that file.
> 
> For undinet.c, the "rdtsc" instructions are used only for profiling. 
> It's probably not worth the marginally increased accuracy from having 
> the rdtsc within the real-mode code: those TSC reads could be moved 
> outside the REAL_CODE() block and implemented using the standard 
> profile_xxx() functions instead of hardcoded "rdtsc" instructions.  (An 
> alternative approach would be to conditionalise the presence of the 
> "rdtsc" instructions, but it would need to be an exceptionally neat 
> solution to justify such a special case.)
> 
> For rtc_entropy.c, the use of the TSC is intrinsic to the way that the 
> code operates.  There is already an entropy_enable() call that is 
> allowed to return an error to indicate that the entropy source is 
> unusable: this could be extended to include a low-overhead check for the 
> existence of the TSC.
> 
> With those changes, there would be no need for any compile-time option 
> or accompanying documentation: the code would Just Work on a 486.

All three of the above are now implemented:

   https://github.com/ipxe/ipxe/commit/13c1abe10
   https://github.com/ipxe/ipxe/commit/05fcf1a2f
   https://github.com/ipxe/ipxe/commit/a6a8bb1a9

With the current master branch, I am able to boot successfully using 
iPXE on a (bochs-emulated) 486.

Michael



More information about the ipxe-devel mailing list