[ipxe-devel] 486 with a Realtek 8139

Nikolai Zhubr n-a-zhubr at yandex.ru
Wed May 5 19:48:16 UTC 2021

Hi Michael,

Ok, understood. I'll probably not be able to implement it myself anyway, 
but I'll certainly appreciate if someone does.

Thank you,


05.05.2021 22:13, Michael Brown:
> I've gone to a *lot* of effort over the past 15 years to eliminate that
> kind of conditional ifdef from the codebase (see the various "#ifdef
> considered harmful" articles around the web).
> 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.
> Michael

More information about the ipxe-devel mailing list