comparison gen/asm-x86-64.h @ 1573:3a08f5e2553b

Fixed iretq problem reported by wilkie of the XomB project
author Kelly Wilson <wilsonk cpsc.ucalgary.ca>
date Mon, 17 Aug 2009 13:42:19 -0600
parents b0a691de8cc7
children f4421c81398f
comparison
equal deleted inserted replaced
1572:30bdcfb8299e 1573:3a08f5e2553b
328 Op_in, 328 Op_in,
329 Op_ins, 329 Op_ins,
330 Op_insX, 330 Op_insX,
331 Op_iret, 331 Op_iret,
332 Op_iretd, 332 Op_iretd,
333 Op_iretq,
333 Op_lods, 334 Op_lods,
334 Op_lodsX, 335 Op_lodsX,
335 Op_movs, 336 Op_movs,
336 Op_movsd, 337 Op_movsd,
337 Op_movsX, 338 Op_movsX,
432 Mn_fdisi, 433 Mn_fdisi,
433 Mn_feni, 434 Mn_feni,
434 Mn_fsetpm, 435 Mn_fsetpm,
435 Mn_iretw, 436 Mn_iretw,
436 Mn_iret, 437 Mn_iret,
438 Mn_iretq,
437 Mn_lret, 439 Mn_lret,
438 Mn_cmpxchg8b, 440 Mn_cmpxchg8b,
439 N_AltMn 441 N_AltMn
440 } Alternate_Mnemonics; 442 } Alternate_Mnemonics;
441 443
444 ".byte 0xdb, 0xe1", 446 ".byte 0xdb, 0xe1",
445 ".byte 0xdb, 0xe0", 447 ".byte 0xdb, 0xe0",
446 ".byte 0xdb, 0xe4", 448 ".byte 0xdb, 0xe4",
447 "iretw", 449 "iretw",
448 "iret", 450 "iret",
451 "iretq",
449 "lret", 452 "lret",
450 "cmpxchg8b" 453 "cmpxchg8b"
451 }; 454 };
452 455
453 #define mri OprC_MRI 456 #define mri OprC_MRI
573 /* Op_in */ { D|ax,N|port,0, 1 }, 576 /* Op_in */ { D|ax,N|port,0, 1 },
574 /* Op_ins */ { mem,N|dx, 0, 1, Clb_DI }, // can't override ES segment for this one 577 /* Op_ins */ { mem,N|dx, 0, 1, Clb_DI }, // can't override ES segment for this one
575 /* Op_insX */ { 0, 0, 0, 0, Clb_DI }, // output segment overrides %% needs work 578 /* Op_insX */ { 0, 0, 0, 0, Clb_DI }, // output segment overrides %% needs work
576 /* Op_iret */ { 0,0,0, 0, 0, Out_Mnemonic, Mn_iretw }, 579 /* Op_iret */ { 0,0,0, 0, 0, Out_Mnemonic, Mn_iretw },
577 /* Op_iretd */ { 0,0,0, 0, 0, Out_Mnemonic, Mn_iret }, 580 /* Op_iretd */ { 0,0,0, 0, 0, Out_Mnemonic, Mn_iret },
581 /* Op_iretq */ { 0,0,0, 0, 0, Out_Mnemonic, Mn_iretq },
578 /* Op_lods */ { mem, 0, 0, 1, Clb_SI }, 582 /* Op_lods */ { mem, 0, 0, 1, Clb_SI },
579 /* Op_lodsX */ { 0, 0, 0, 0, Clb_SI }, 583 /* Op_lodsX */ { 0, 0, 0, 0, Clb_SI },
580 /* Op_movs */ { mem, mem, 0, 1, Clb_DI|Clb_SI }, // only src/DS can be overridden 584 /* Op_movs */ { mem, mem, 0, 1, Clb_DI|Clb_SI }, // only src/DS can be overridden
581 /* Op_movsd */ { 0, 0, 0, 0, Clb_DI|Clb_SI, Next_Form, Op_DstSrcSSE }, // %% gas doesn't accept movsd .. has to movsl 585 /* Op_movsd */ { 0, 0, 0, 0, Clb_DI|Clb_SI, Next_Form, Op_DstSrcSSE }, // %% gas doesn't accept movsd .. has to movsl
582 /* Op_movsX */ { 0, 0, 0, 0, Clb_DI|Clb_SI }, 586 /* Op_movsX */ { 0, 0, 0, 0, Clb_DI|Clb_SI },