[ipxe-devel] 486 with a Realtek 8139
n-a-zhubr at yandex.ru
Fri May 7 14:52:09 UTC 2021
After some more attempts with etherboot 5.4.4, it seems very likely some
necessary flushing/resetting is missing in prot_to_real function. The
prot_to_real still exists in iPXE, so I've tried to compare them. Look
similar, although not identical. From what I vaguely remember, after a
drop to real mode, some shadow registers might still hold unwanted
obsolete values so explicite reloading might be necessary.
Here in prot_to_real, cs:ip and pipeline apparently get reloaded by lret
or ljmp correctly, but other registers I'm not sure, and these parts
differ between iPXE and Etherboot.
Maybe someone familiar with this code could give some hints, or better
yet point to some good reference document describing considerations when
switching modes on 386+ (I think I saw one years ago, but can't find it
More information about the ipxe-devel