Mercurial > projects > ldc
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 }, |