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

Reply via email to