aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-i386.c9
-rw-r--r--include/opcode/ChangeLog4
-rw-r--r--include/opcode/i386.h8
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/i386-dis.c16
6 files changed, 35 insertions, 13 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index cddf473..b1d0d33 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jan 13 01:47:35 MET 2001 Jan Hubicka <jh@suse.cz>
+
+ * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary
+ instructions.
+
2001-01-12 Frank Ch. Eigler <fche@redhat.com>
* 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 <bo@suse.de>
* config/tc-i386.c (i386_immediate, i386_displacement):
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 7cca4cf..da2bf48 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 b506b66..4632f75 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3 +1,7 @@
+Sat Jan 13 09:56:32 MET 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): Fix pusha and ret templates.
+
2001-01-11 Peter Targett <peter.targett@arccores.com>
* 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 d095e5b..f6f7afd 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 9612b66..eba00c6 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jan 13 01:48:24 MET 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386-dis.c (dis386_att, disx86_64_att): Fix ret, lret and iret
+ templates.
+
2001-01-11 Peter Targett <peter.targett@arccores.com>
* configure.in: Add arc-ext.lo for bfd_arc_arch selection.
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index ca9c39d..5667d77 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 },