* i386.c (md_assemble): Check cpu_flags even for nullary instructions.
authorJan Hubicka <jh@suse.cz>
Sat, 13 Jan 2001 09:05:55 +0000 (09:05 +0000)
committerJan Hubicka <jh@suse.cz>
Sat, 13 Jan 2001 09:05:55 +0000 (09:05 +0000)
* 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
gas/config/tc-i386.c
include/opcode/ChangeLog
include/opcode/i386.h
opcodes/ChangeLog
opcodes/i386-dis.c

index cddf47338c33694ad39323e2125720fda8c386eb..b1d0d338ae5cc7523d53e0217b60f019879470df 100644 (file)
@@ -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):
index 7cca4cfe0f3df8d6aab7a38e87e26aa41aac9455..da2bf4852ef54d92acc05da76d68bc8b9154960d 100644 (file)
@@ -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)
index b506b66af1df798682d9e3819759d95ecf668d89..4632f752085f3062a9ce1caf43b789b8acc77da2 100644 (file)
@@ -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
index d095e5baab3d09b775b851262fbece749fcf5014..f6f7afd90caa73869f8bbb830b80f7a01b15d810 100644 (file)
@@ -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} },
index 9612b66bcfab94ec037fc63521fe011bde62dfe9..eba00c6c85fdaf2881ed606baf659202b05c2e11 100644 (file)
@@ -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.
index ca9c39d81f82d19c1a558779a65a611dd051a331..5667d77cdaa4b1abfe653a4cac83b122acd30fdb 100644 (file)
@@ -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 },