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
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to