aboutsummaryrefslogtreecommitdiff
path: root/gas
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 /gas
parent1690f1db1ac7a4e91d81ae968b8158af2b7ff91f (diff)
downloadfsf-binutils-gdb-e89c5eaa7208f06e927a79facff0316f4e550f6f.zip
fsf-binutils-gdb-e89c5eaa7208f06e927a79facff0316f4e550f6f.tar.gz
fsf-binutils-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.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-i386.c19
2 files changed, 19 insertions, 8 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: