This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] arc: Add nps400 machine type, and assembler flag.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8699fc3e88de47be12401fd366fbe1ee0c4294c7

commit 8699fc3e88de47be12401fd366fbe1ee0c4294c7
Author: Andrew Burgess <andrew.burgess@embecosm.com>
Date:   Tue Mar 15 21:51:50 2016 +0000

    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.

Diff:
---
 bfd/ChangeLog        | 9 +++++++++
 bfd/archures.c       | 1 +
 bfd/bfd-in2.h        | 1 +
 bfd/cpu-arc.c        | 5 +++--
 bfd/elf32-arc.c      | 6 ++++++
 binutils/ChangeLog   | 4 ++++
 binutils/readelf.c   | 3 +++
 gas/ChangeLog        | 5 +++++
 gas/config/tc-arc.c  | 3 +++
 include/ChangeLog    | 5 +++++
 include/elf/arc.h    | 1 +
 include/opcode/arc.h | 1 +
 opcodes/ChangeLog    | 4 ++++
 opcodes/arc-dis.c    | 4 ++++
 14 files changed, 50 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;
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index c71ba3f..805c6d8 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,9 @@
 2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
+	* readelf.c (decode_ARC_machine_flags): Handle nps400.
+
+2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
 	* readelf.c (get_machine_flags): Move arc processing into...
 	(decode_ARC_machine_flags): ... new function.  Remove use of
 	EF_ARC_CPU_GENERIC, change default case from "generic arc" to
diff --git a/binutils/readelf.c b/binutils/readelf.c
index fe23d45..5755b6b 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -2306,6 +2306,9 @@ decode_ARC_machine_flags (unsigned e_flags, unsigned e_machine, char buf[])
     case E_ARC_MACH_ARC700:
       strcat (buf, ", ARC700");
       break;
+    case E_ARC_MACH_NPS400:
+      strcat (buf, ", NPS400");
+      break;
 
       /* The only times we should end up here are (a) A corrupt ELF, (b) A
          new ELF with new architecture being read by an old version of
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c6aa311..3450988 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
 2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
+	* config/tc-arc.c (cpu_types): Add nps400 entry.
+	(check_zol): Handle nps400.
+
+2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
 	* config/tc-arc.c (arc_select_cpu): Remove use of
 	EF_ARC_CPU_GENERIC.
 
diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c
index 65eb0e9..2bf7f13 100644
--- a/gas/config/tc-arc.c
+++ b/gas/config/tc-arc.c
@@ -342,6 +342,8 @@ static const struct cpu_type
     E_ARC_MACH_ARC600,  0x00},
   { "arc700", ARC_OPCODE_ARC700,  bfd_mach_arc_arc700,
     E_ARC_MACH_ARC700,  0x00},
+  { "nps400", ARC_OPCODE_ARC700 | ARC_OPCODE_NPS400, bfd_mach_arc_nps400,
+    E_ARC_MACH_NPS400,  0x00},
   { "arcem",  ARC_OPCODE_ARCv2EM, bfd_mach_arc_arcv2,
     EF_ARC_CPU_ARCV2EM, ARC_CD},
   { "archs",  ARC_OPCODE_ARCv2HS, bfd_mach_arc_arcv2,
@@ -3655,6 +3657,7 @@ check_zol (symbolS *s)
 end of the ZOL label @%s"), S_GET_NAME (s));
 
       /* Fall through.  */
+    case bfd_mach_arc_nps400:
     case bfd_mach_arc_arc700:
       if (arc_last_insns[0].has_delay_slot)
 	as_bad (_("An illegal use of delay slot detected at the end of the ZOL label @%s"),
diff --git a/include/ChangeLog b/include/ChangeLog
index c8d14d6..3ac5b72 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,5 +1,10 @@
 2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
+	* elf/arc.h (E_ARC_MACH_NPS400): Define.
+	* opcode/arc.h (ARC_OPCODE_NPS400): Define.
+
+2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
 	* elf/arc.h (EF_ARC_CPU_GENERIC): Delete.  Update related comment.
 
 2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
diff --git a/include/elf/arc.h b/include/elf/arc.h
index 47381f3..2aed25d 100644
--- a/include/elf/arc.h
+++ b/include/elf/arc.h
@@ -48,6 +48,7 @@ END_RELOC_NUMBERS (R_ARC_max)
 #define E_ARC_MACH_ARC600	0x00000002
 #define E_ARC_MACH_ARC601	0x00000004
 #define E_ARC_MACH_ARC700	0x00000003
+#define E_ARC_MACH_NPS400	0x00000007
 #define EF_ARC_CPU_ARCV2EM      0x00000005
 #define EF_ARC_CPU_ARCV2HS      0x00000006
 
diff --git a/include/opcode/arc.h b/include/opcode/arc.h
index d33b878..85ea735 100644
--- a/include/opcode/arc.h
+++ b/include/opcode/arc.h
@@ -132,6 +132,7 @@ extern const unsigned arc_num_opcodes;
 #define ARC_OPCODE_ARC700   0x0002  /* ARC 700 specific insns.  */
 #define ARC_OPCODE_ARCv2EM  0x0004  /* ARCv2 EM specific insns.  */
 #define ARC_OPCODE_ARCv2HS  0x0008  /* ARCv2 HS specific insns.  */
+#define ARC_OPCODE_NPS400   0x0010  /* NPS400 specific insns.  */
 
 /* CPU extensions.  */
 #define ARC_EA       0x0001
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index d7180b3..f001f03 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,9 @@
 2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
+	* arc-dis.c (print_insn_arc): Handle nps400.
+
+2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
 	* arc-opc.c (BASE): Delete.
 
 2016-03-18  Nick Clifton  <nickc@redhat.com>
diff --git a/opcodes/arc-dis.c b/opcodes/arc-dis.c
index 7320c9f..aeb3ba6 100644
--- a/opcodes/arc-dis.c
+++ b/opcodes/arc-dis.c
@@ -132,6 +132,10 @@ print_insn_arc (bfd_vma memaddr,
 
   switch (info->mach)
     {
+    case bfd_mach_arc_nps400:
+      isa_mask = ARC_OPCODE_ARC700 | ARC_OPCODE_NPS400;
+      break;
+
     case bfd_mach_arc_arc700:
       isa_mask = ARC_OPCODE_ARC700;
       break;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]