diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-05-27 06:55:42 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-05-27 06:55:53 -0700 |
commit | e89c5eaa7208f06e927a79facff0316f4e550f6f (patch) | |
tree | 88846361ac9d76f53790b695c27b6f5d5fe894bc /gas | |
parent | 1690f1db1ac7a4e91d81ae968b8158af2b7ff91f (diff) | |
download | gdb-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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 19 |
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: |