まず、リアルモードでも仮想86モードでも、
アドレスサイズプリフィックスを使うこと自体ではGPフォルトは発生しない
例えば、lea eax, eax+eax*4 という、5倍する時に使うコードは
仮想86モードでも普通に使える

何度も書いているが、
リアルモードと仮想86モードではセグメントのリミットが64Kに設定されているために
その範囲外にアクセスするとGPフォルトになるというだけなので
一旦セグメントリミットを4Gにしてからリアルモードに戻れば、例外を起こさずに全アドレスにアクセスできる

farジャンプは、パイプラインに残っている命令キューをフラッシュするためのものなので、セグメントリミットとはあまり関係ない

例えば自前で仮想86モードを利用した仮想EMSドライバを書く場合
最初にプロテクトモードに移行してリミットを変え、すぐにリアルモードに戻る
そしてリアルモードのコードで全領域をいろいろセットアップし、それから仮想86モードになってDOSに制御を移すという手法が使えた

仮想86モードでの割り込みハンドラも、仮想86モードでのスタック上にある戻り番地の部分に
割り込みベクタテーブルからの番地を置いて(テーブルにそして保存されているSPも変えて)iretするだけだから
別に難しくない
仮想86中でのiretも何か対処する必要があった気もするけど
いずれにせよGPフォルトのハンドラ内でどんな命令が例外を起こしたか調べる必要があるので、
その内部でiretだったらどうするというテーブルジャンプ対応程度で足りたはず