From e2914f484eed1dc5a9abd52301dae35f7500ff48 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sat, 13 Jan 2001 09:05:55 +0000 Subject: [PATCH] * i386.c (md_assemble): Check cpu_flags even for nullary instructions. * i386.h (i386_optab): Fix pusha and ret templates. * i386-dis.c (dis386_att, disx86_64_att): Fix ret, lret and iret templates. --- gas/ChangeLog | 6 ++++++ gas/config/tc-i386.c | 9 +++++++-- include/opcode/ChangeLog | 4 ++++ include/opcode/i386.h | 8 +++++--- opcodes/ChangeLog | 5 +++++ opcodes/i386-dis.c | 16 ++++++++-------- 6 files changed, 35 insertions(+), 13 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index cddf47338c3..b1d0d338ae5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Sat Jan 13 01:47:35 MET 2001 Jan Hubicka + + * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary + instructions. + 2001-01-12 Frank Ch. Eigler * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn. @@ -84,6 +89,7 @@ Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. (S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. +>>>>>>> 1.724 2001-01-08 Bo Thorsen * config/tc-i386.c (i386_immediate, i386_displacement): diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 7cca4cfe0f3..da2bf4852ef 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1707,9 +1707,14 @@ md_assemble (line) || t->extension_opcode == 7))) /* 0xd9,7 "f{n}stcw" */ continue; + /* Do not verify operands when there are none. */ else if (!t->operands) - /* 0 operands always matches. */ - break; + { + if (t->cpu_flags & ~cpu_arch_flags) + continue; + /* We've found a match; break out of loop. */ + break; + } overlap0 = i.types[0] & t->operand_types[0]; switch (t->operands) diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index b506b66af1d..4632f752085 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,7 @@ +Sat Jan 13 09:56:32 MET 2001 Jan Hubicka + + * i386.h (i386_optab): Fix pusha and ret templates. + 2001-01-11 Peter Targett * arc.h (ARC_MACH_5, ARC_MACH_6, ARC_MACH_7, ARC_MACH_8): New diff --git a/include/opcode/i386.h b/include/opcode/i386.h index d095e5baab3..f6f7afd90ca 100644 --- a/include/opcode/i386.h +++ b/include/opcode/i386.h @@ -154,7 +154,7 @@ static const template i386_optab[] = { {"push", 1, 0x06, X, Cpu64, q_Suf|Seg2ShortForm|DefaultSize|NoRex64, { SReg2, 0, 0 } }, {"push", 1, 0x0fa0, X, Cpu386|Cpu64, q_Suf|Seg3ShortForm|DefaultSize|NoRex64, { SReg3, 0, 0 } }, -{"pusha", 0, 0x60, X, Cpu186|Cpu64, wl_Suf|DefaultSize, { 0, 0, 0 } }, +{"pusha", 0, 0x60, X, Cpu186|CpuNo64, wl_Suf|DefaultSize, { 0, 0, 0 } }, /* Pop instructions. */ {"pop", 1, 0x58, X, CpuNo64, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } }, @@ -389,8 +389,10 @@ static const template i386_optab[] = { {"ljmp", 1, 0xff, 5, CpuNo64, wl_Suf|Modrm, { WordMem|JumpAbsolute, 0, 0} }, {"ljmp", 1, 0xff, 5, Cpu64, q_Suf|Modrm|NoRex64, { WordMem|JumpAbsolute, 0, 0} }, -{"ret", 0, 0xc3, X, 0, wlq_Suf|DefaultSize, { 0, 0, 0} }, -{"ret", 1, 0xc2, X, 0, wlq_Suf|DefaultSize, { Imm16, 0, 0} }, +{"ret", 0, 0xc3, X, CpuNo64,wlq_Suf|DefaultSize, { 0, 0, 0} }, +{"ret", 1, 0xc2, X, CpuNo64,wlq_Suf|DefaultSize, { Imm16, 0, 0} }, +{"ret", 0, 0xc3, X, Cpu64, q_Suf|DefaultSize|NoRex64,{ 0, 0, 0} }, +{"ret", 1, 0xc2, X, Cpu64, q_Suf|DefaultSize|NoRex64,{ Imm16, 0, 0} }, {"lret", 0, 0xcb, X, 0, wlq_Suf|DefaultSize, { 0, 0, 0} }, {"lret", 1, 0xca, X, 0, wlq_Suf|DefaultSize, { Imm16, 0, 0} }, {"enter", 2, 0xc8, X, Cpu186, wlq_Suf|DefaultSize, { Imm16, Imm8, 0} }, diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 9612b66bcfa..eba00c6c85f 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +Sat Jan 13 01:48:24 MET 2001 Jan Hubicka + + * i386-dis.c (dis386_att, disx86_64_att): Fix ret, lret and iret + templates. + 2001-01-11 Peter Targett * configure.in: Add arc-ext.lo for bfd_arc_arch selection. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index ca9c39d81f8..5667d77cdaa 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -661,8 +661,8 @@ static const struct dis386 dis386_att[] = { /* c0 */ { GRP2b }, { GRP2S }, - { "retP", Iw, XX, XX }, - { "retP", XX, XX, XX }, + { "retI", Iw, XX, XX }, + { "retI", XX, XX, XX }, { "lesS", Gv, Mp, XX }, { "ldsS", Gv, Mp, XX }, { "movA", Eb, Ib, XX }, @@ -670,12 +670,12 @@ static const struct dis386 dis386_att[] = { /* c8 */ { "enterI", Iw, Ib, XX }, { "leaveI", XX, XX, XX }, - { "lretI", Iw, XX, XX }, - { "lretI", XX, XX, XX }, + { "lretP", Iw, XX, XX }, + { "lretP", XX, XX, XX }, { "int3", XX, XX, XX }, { "int", Ib, XX, XX }, { "into", XX, XX, XX}, - { "iretI", XX, XX, XX }, + { "iretP", XX, XX, XX }, /* d0 */ { GRP2b_one }, { GRP2S_one }, @@ -1256,12 +1256,12 @@ static const struct dis386 disx86_64_att[] = { /* c8 */ { "enterI", Iw, Ib, XX }, { "leaveI", XX, XX, XX }, - { "lretI", Iw, XX, XX }, - { "lretI", XX, XX, XX }, + { "lretP", Iw, XX, XX }, + { "lretP", XX, XX, XX }, { "int3", XX, XX, XX }, { "int", Ib, XX, XX }, { "(bad)", XX, XX, XX }, /* reserved. */ - { "iretI", XX, XX, XX }, + { "iretP", XX, XX, XX }, /* d0 */ { GRP2b_one }, { GRP2S_one }, -- 2.30.2