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,

Regards,
Nikolai


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

_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to