[ipxe-devel] 486 with a Realtek 8139

Nikolai Zhubr n-a-zhubr at yandex.ru
Fri May 7 14:52:09 UTC 2021


Hi all,

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 
now).


Thank you,

Regards,
Nikolai


More information about the ipxe-devel mailing list