カーネル(2.6.30 x86_64)モード(r0)で実行されているサンプルコードを使用して、iretをシミュレートしようとしています。インテルのマニュアルガイドの下で変数をプッシュしていますが、iret命令の位置で実行時の障害が発生しています。
一般保護違反:fffc [#] SMP
asm volatile(
"mov %%ss,%%ax \n\t"
"push %%rax \n\t"/*ss*/
"push %%rsp \n\t"/*rsp*/
"pushfq \n\t"/*rflags*/
"mov %%cs,%%ax \n\t"
"push %%rax \n\t"/*cs*/
"mov $._restart_code,%%rax \n\t"
"push %%rax \n\t"/*rip*/
"iret \n\t"/*here is the fault rip!!!!!!*/
"._restart_code:"
"nop" :);