OSDN Git Service

* i386.c (md_assemble): Check cpu_flags even for nullary instructions.
authorhubicka <hubicka>
Sat, 13 Jan 2001 09:05:54 +0000 (09:05 +0000)
committerhubicka <hubicka>
Sat, 13 Jan 2001 09:05:54 +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 cddf473..b1d0d33 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 7cca4cf..da2bf48 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 b506b66..4632f75 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 d095e5b..f6f7afd 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 9612b66..eba00c6 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 ca9c39d..5667d77 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 },