aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-05-27 06:55:42 -0700
committerH.J. Lu <hjl.tools@gmail.com>2016-05-27 06:55:53 -0700
commite89c5eaa7208f06e927a79facff0316f4e550f6f (patch)
tree88846361ac9d76f53790b695c27b6f5d5fe894bc
parent1690f1db1ac7a4e91d81ae968b8158af2b7ff91f (diff)
downloadgdb-e89c5eaa7208f06e927a79facff0316f4e550f6f.zip
gdb-e89c5eaa7208f06e927a79facff0316f4e550f6f.tar.gz
gdb-e89c5eaa7208f06e927a79facff0316f4e550f6f.tar.bz2
Correct CpuMax in i386-opc.h
CpuMax should be CpuIntel64, not CpuNo64. i386-gen.c is updated to verify that CpuMax is correct. X86 assembler is updated to properly set cpuamd64 and cpuintel64. gas/ PR gas/20154 * config/tc-i386.c (intel64): New. (cpu_flags_match): Set cpuamd64 and cpuintel64. (md_parse_option): Set intel64 instead of cpuamd64 and cpuintel64. opcodes/ PR gas/20154 * i386-gen.c (main): Fail if CpuMax is incorrect. * i386-opc.h (CpuMax): Set to CpuIntel64. * i386-tbl.h: Regenerated.
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-i386.c19
-rw-r--r--opcodes/ChangeLog7
-rw-r--r--opcodes/i386-gen.c11
-rw-r--r--opcodes/i386-opc.h2
-rw-r--r--opcodes/i386-tbl.h4
6 files changed, 39 insertions, 12 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0411e67..042b698 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,13 @@
2016-05-27 H.J. Lu <hongjiu.lu@intel.com>
+ PR gas/20154
+ * config/tc-i386.c (intel64): New.
+ (cpu_flags_match): Set cpuamd64 and cpuintel64.
+ (md_parse_option): Set intel64 instead of cpuamd64 and
+ cpuintel64.
+
+2016-05-27 H.J. Lu <hongjiu.lu@intel.com>
+
* config/tc-i386.c (cpu_flags_match): Don't clear cpu64 nor
cpuno64.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index fb3f369..f8a3bf0 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -535,6 +535,10 @@ static int shared = 0;
0 if att syntax. */
static int intel_syntax = 0;
+/* 1 for Intel64 ISA,
+ 0 if AMD64 ISA. */
+static int intel64;
+
/* 1 for intel mnemonic,
0 if att mnemonic. */
static int intel_mnemonic = !SYSV386_COMPAT;
@@ -1537,6 +1541,11 @@ cpu_flags_match (const insn_template *t)
/* This instruction is available only on some archs. */
i386_cpu_flags cpu = cpu_arch_flags;
+ /* Set cpuamd64 and cpuintel64 here since they may be changed by
+ set_cpu_arch. */
+ cpu_arch_flags.bitfield.cpuamd64 = !intel64;
+ cpu_arch_flags.bitfield.cpuintel64 = intel64;
+
cpu = cpu_flags_and (x, cpu);
if (!cpu_flags_all_zero (&cpu))
{
@@ -10107,17 +10116,11 @@ md_parse_option (int c, const char *arg)
break;
case OPTION_MAMD64:
- cpu_arch_flags.bitfield.cpuamd64 = 1;
- cpu_arch_flags.bitfield.cpuintel64 = 0;
- cpu_arch_isa_flags.bitfield.cpuamd64 = 1;
- cpu_arch_isa_flags.bitfield.cpuintel64 = 0;
+ intel64 = 0;
break;
case OPTION_MINTEL64:
- cpu_arch_flags.bitfield.cpuamd64 = 0;
- cpu_arch_flags.bitfield.cpuintel64 = 1;
- cpu_arch_isa_flags.bitfield.cpuamd64 = 0;
- cpu_arch_isa_flags.bitfield.cpuintel64 = 1;
+ intel64 = 1;
break;
default:
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 82e3143..eacd10b 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,10 @@
+2016-05-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/20154
+ * i386-gen.c (main): Fail if CpuMax is incorrect.
+ * i386-opc.h (CpuMax): Set to CpuIntel64.
+ * i386-tbl.h: Regenerated.
+
2016-05-27 Nick Clifton <nickc@redhat.com>
PR target/20150
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
index b19bbe1..0afdc90 100644
--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -1379,7 +1379,16 @@ main (int argc, char **argv)
srcdir, xstrerror (errno));
/* Check the unused bitfield in i386_cpu_flags. */
-#ifndef CpuUnused
+#ifdef CpuUnused
+ if (cpu_flags[ARRAY_SIZE (cpu_flags) - 2].position != CpuMax)
+ fail (_("CpuMax != %d!\n"),
+ cpu_flags[ARRAY_SIZE (cpu_flags) - 2].position);
+
+#else
+ if (cpu_flags[ARRAY_SIZE (cpu_flags) - 1].position != CpuMax)
+ fail (_("CpuMax != %d!\n"),
+ cpu_flags[ARRAY_SIZE (cpu_flags) - 1].position);
+
c = CpuNumOfBits - CpuMax - 1;
if (c)
fail (_("%d unused bits in i386_cpu_flags.\n"), c);
diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h
index a93c1f3..0782b1a 100644
--- a/opcodes/i386-opc.h
+++ b/opcodes/i386-opc.h
@@ -211,7 +211,7 @@ enum
/* Intel64 support required */
CpuIntel64,
/* The last bitfield in i386_cpu_flags. */
- CpuMax = CpuNo64
+ CpuMax = CpuIntel64
};
#define CpuNumOfUints \
diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
index 70e10fb..5c5a991 100644
--- a/opcodes/i386-tbl.h
+++ b/opcodes/i386-tbl.h
@@ -3200,7 +3200,7 @@ const insn_template i386_optab[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 } },
+ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 } },
{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3323,7 +3323,7 @@ const insn_template i386_optab[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 } },
+ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 } },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,