diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2016-03-15 21:51:50 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2016-03-21 16:44:49 +0000 |
commit | 8699fc3e88de47be12401fd366fbe1ee0c4294c7 (patch) | |
tree | 7459f723fbf2994958b03ffb5a6f524525d84381 /bfd | |
parent | a9522a2168c8233e8f15c42a32e7376c2a40ac12 (diff) | |
download | gdb-8699fc3e88de47be12401fd366fbe1ee0c4294c7.zip gdb-8699fc3e88de47be12401fd366fbe1ee0c4294c7.tar.gz gdb-8699fc3e88de47be12401fd366fbe1ee0c4294c7.tar.bz2 |
arc: Add nps400 machine type, and assembler flag.
This commit introduces the nps400 machine type as a variant of arc.
There's a new flag in the assembler to select this machine type. All
other changes are just adding handling of the new machine type into the
relevant places.
The nps400 is an arc700 variant with some vendor specific instructions
added into the instruction set. This commit does not add any of the new
instructions, this is just laying the groundwork for future commits.
However, in preparation for these new instructions a new opcode define for
nps400 has been added to include/opcode/arc.h, this new opcode define is
used in the assembler and disassembler along with the existing define
for arc700 such that when assembling and disassembling for nps400 the
user will have access to all arc700 instructions and all the nps400
vendor extension instructions.
bfd/ChangeLog:
* archures.c (bfd_mach_arc_nps400): Define.
* bfd-in2.h: Regenerate.
* cpu-arc.c (arch_info_struct): New entry for nps400, renumber
some existing entries to make space.
* elf32-arc.c (arc_elf_object_p): Add nps400 case.
(arc_elf_final_write_processing): Likewise.
binutils/ChangeLog:
* readelf.c (decode_ARC_machine_flags): Handle nps400.
gas/ChangeLog:
* config/tc-arc.c (cpu_types): Add nps400 entry.
(check_zol): Handle nps400.
include/ChangeLog:
* elf/arc.h (E_ARC_MACH_NPS400): Define.
* opcode/arc.h (ARC_OPCODE_NPS400): Define.
opcodes/ChangeLog:
* arc-dis.c (print_insn_arc): Handle nps400.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 9 | ||||
-rw-r--r-- | bfd/archures.c | 1 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 1 | ||||
-rw-r--r-- | bfd/cpu-arc.c | 5 | ||||
-rw-r--r-- | bfd/elf32-arc.c | 6 |
5 files changed, 20 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2ee95c6..43c9c28 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,14 @@ 2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com> + * archures.c (bfd_mach_arc_nps400): Define. + * bfd-in2.h: Regenerate. + * cpu-arc.c (arch_info_struct): New entry for nps400, renumber + some existing entries to make space. + * elf32-arc.c (arc_elf_object_p): Add nps400 case. + (arc_elf_final_write_processing): Likewise. + +2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com> + * elf32-arc.c (arc_elf_print_private_bfd_data): Remove use of EF_ARC_CPU_GENERIC. (arc_elf_final_write_processing): Don't bother setting cpu field diff --git a/bfd/archures.c b/bfd/archures.c index 12e3342..7ff1e82 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -359,6 +359,7 @@ DESCRIPTION .#define bfd_mach_arc_arc601 4 .#define bfd_mach_arc_arc700 3 .#define bfd_mach_arc_arcv2 5 +.#define bfd_mach_arc_nps400 6 . bfd_arch_m32c, {* Renesas M16C/M32C. *} .#define bfd_mach_m16c 0x75 .#define bfd_mach_m32c 0x78 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 13f2d6e..f02e2aa 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2174,6 +2174,7 @@ enum bfd_architecture #define bfd_mach_arc_arc601 4 #define bfd_mach_arc_arc700 3 #define bfd_mach_arc_arcv2 5 +#define bfd_mach_arc_nps400 6 bfd_arch_m32c, /* Renesas M16C/M32C. */ #define bfd_mach_m16c 0x75 #define bfd_mach_m32c 0x78 diff --git a/bfd/cpu-arc.c b/bfd/cpu-arc.c index 07a052b..472af8d 100644 --- a/bfd/cpu-arc.c +++ b/bfd/cpu-arc.c @@ -47,8 +47,9 @@ static const bfd_arch_info_type arch_info_struct[] = ARC (bfd_mach_arc_arc601, "ARC601", FALSE, &arch_info_struct[3]), ARC (bfd_mach_arc_arc700, "ARC700", FALSE, &arch_info_struct[4]), ARC (bfd_mach_arc_arc700, "A7", FALSE, &arch_info_struct[5]), - ARC (bfd_mach_arc_arcv2, "ARCv2", FALSE, &arch_info_struct[6]), - ARC (bfd_mach_arc_arcv2, "EM", FALSE, &arch_info_struct[7]), + ARC (bfd_mach_arc_nps400, "NPS400", FALSE, &arch_info_struct[6]), + ARC (bfd_mach_arc_arcv2, "ARCv2", FALSE, &arch_info_struct[7]), + ARC (bfd_mach_arc_arcv2, "EM", FALSE, &arch_info_struct[8]), ARC (bfd_mach_arc_arcv2, "HS", FALSE, NULL), }; diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c index ec81852..488b86f 100644 --- a/bfd/elf32-arc.c +++ b/bfd/elf32-arc.c @@ -610,6 +610,9 @@ arc_elf_object_p (bfd * abfd) case E_ARC_MACH_ARC700: mach = bfd_mach_arc_arc700; break; + case E_ARC_MACH_NPS400: + mach = bfd_mach_arc_nps400; + break; case EF_ARC_CPU_ARCV2HS: case EF_ARC_CPU_ARCV2EM: mach = bfd_mach_arc_arcv2; @@ -659,6 +662,9 @@ arc_elf_final_write_processing (bfd * abfd, case bfd_mach_arc_arc700: emf = EM_ARC_COMPACT; break; + case bfd_mach_arc_nps400: + emf = EM_ARC_COMPACT; + break; case bfd_mach_arc_arcv2: emf = EM_ARC_COMPACT2; break; |