]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
opcodes: use CGEN_INSN_LGUINT for base instructions
authorJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 10 May 2023 15:54:50 +0000 (17:54 +0200)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 10 May 2023 18:52:22 +0000 (20:52 +0200)
This patch changes the opcodes CGEN support code in order to support
base instructions with opcodes past the least significative 32 bits.

Note that the masks have been adapted in a previous patch.

include/ChangeLog:

2023-05-10  Jose E. Marchesi  <jose.marchesi@oracle.com>

* opcode/cgen.h (CGEN_IVALUE): Make room for 64-bit base values.

opcodes/ChangeLog:

2023-05-10  Jose E. Marchesi  <jose.marchesi@oracle.com>

* cgen-dis.in (print_insn): Use CGEN_INSN_LGUINT for instruction
base values.
* cgen-dis.c (cgen_dis_lookup_insn): Likewise.
* cgen-opc.c (cgen_macro_insn_count): Likewise.
* epiphany-dis.c: Regenerate.
* fr30-dis.c: Likewise.
* frv-dis.c: Likewise.
* ip2k-dis.c: Likewise.
* iq2000-dis.c: Likewise.
* lm32-dis.c: Likewise.
* m32c-dis.c: Likewise.
* m32r-dis.c: Likewise.
* mep-dis.c: Likewise.
* mt-dis.c: Likewise.
* or1k-dis.c: Likewise.
* xstormy16-dis.c: Likewise.

19 files changed:
include/ChangeLog
include/opcode/cgen.h
opcodes/ChangeLog
opcodes/bpf-dis.c
opcodes/cgen-dis.c
opcodes/cgen-dis.in
opcodes/cgen-opc.c
opcodes/epiphany-dis.c
opcodes/fr30-dis.c
opcodes/frv-dis.c
opcodes/ip2k-dis.c
opcodes/iq2000-dis.c
opcodes/lm32-dis.c
opcodes/m32c-dis.c
opcodes/m32r-dis.c
opcodes/mep-dis.c
opcodes/mt-dis.c
opcodes/or1k-dis.c
opcodes/xstormy16-dis.c

index b157251bea8970312658c5a7e45fe860116fc1af..d38f507f4e331a741360ffed78fbdd47afd611f8 100644 (file)
@@ -1,3 +1,7 @@
+2023-05-10  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+       * opcode/cgen.h (CGEN_IVALUE): Make room for 64-bit base values.
+
 2023-03-23  Frederic Cambus  <fred@statdns.com>
 
        * elf/common.h (PT_OPENBSD_MUTABLE): Define.
index 6c0732b4b259c4da1aa932d0a10e8691f9c93bce..9d638f091f5f45d039cdefdf8e91645c3dbcf69b 100644 (file)
@@ -928,7 +928,7 @@ typedef struct
 typedef struct
 {
   /* The opcode portion of the base insn.  */
-  CGEN_INSN_INT base_value;
+  CGEN_INSN_LGUINT base_value;
 
 #ifdef CGEN_MAX_EXTRA_OPCODE_OPERANDS
   /* Extra opcode values beyond base_value.  */
@@ -1186,7 +1186,7 @@ extern CGEN_INSN_LIST * cgen_asm_lookup_insn
    instruction (the actually hashing done is up to the target).  */
 
 extern CGEN_INSN_LIST * cgen_dis_lookup_insn
-  (CGEN_CPU_DESC, const char *, CGEN_INSN_INT);
+  (CGEN_CPU_DESC, const char *, CGEN_INSN_LGUINT);
 /* FIXME: delete these two */
 #define CGEN_DIS_LOOKUP_INSN(cd, buf, value) cgen_dis_lookup_insn ((cd), (buf), (value))
 #define CGEN_DIS_NEXT_INSN(insn) ((insn)->next)
@@ -1449,7 +1449,7 @@ extern int CGEN_SYM (get_mach) (const char *);
 /* Operand index computation.  */
 extern const CGEN_INSN * cgen_lookup_insn
   (CGEN_CPU_DESC, const CGEN_INSN * insn_,
-   CGEN_INSN_INT int_value_, unsigned char *bytes_value_,
+   CGEN_INSN_LGUINT int_value_, unsigned char *bytes_value_,
    int length_, CGEN_FIELDS *fields_, int alias_p_);
 extern void cgen_get_insn_operands
   (CGEN_CPU_DESC, const CGEN_INSN * insn_,
@@ -1461,10 +1461,10 @@ extern const CGEN_INSN * cgen_lookup_get_insn_operands
 
 /* Cover fns to bfd_get/set.  */
 
-extern CGEN_INSN_INT cgen_get_insn_value
+extern CGEN_INSN_LGUINT cgen_get_insn_value
   (CGEN_CPU_DESC, unsigned char *, int, int);
 extern void cgen_put_insn_value
-  (CGEN_CPU_DESC, unsigned char *, int, CGEN_INSN_INT, int);
+  (CGEN_CPU_DESC, unsigned char *, int, CGEN_INSN_LGUINT, int);
 
 extern CGEN_INSN_INT cgen_get_base_insn_value
   (CGEN_CPU_DESC, unsigned char *, int);
index 890931e6b8ad7e1360e4a9ff813073f00b09eaa7..d954bb938aaa2c3e6dd8ba9ca01285b93e064eb2 100644 (file)
@@ -1,3 +1,22 @@
+2023-05-10  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+       * cgen-dis.in (print_insn): Use CGEN_INSN_LGUINT for instruction
+       base values.
+       * cgen-dis.c (cgen_dis_lookup_insn): Likewise.
+       * cgen-opc.c (cgen_macro_insn_count): Likewise.
+       * epiphany-dis.c: Regenerate.
+       * fr30-dis.c: Likewise.
+       * frv-dis.c: Likewise.
+       * ip2k-dis.c: Likewise.
+       * iq2000-dis.c: Likewise.
+       * lm32-dis.c: Likewise.
+       * m32c-dis.c: Likewise.
+       * m32r-dis.c: Likewise.
+       * mep-dis.c: Likewise.
+       * mt-dis.c: Likewise.
+       * or1k-dis.c: Likewise.
+       * xstormy16-dis.c: Likewise.
+
 2023-04-21  Tom Tromey  <tromey@adacore.com>
 
        * i386-dis.c (OP_J): Check result of get16.
index 0a345179569c72df8e724c4ee5e5f016a851a4b5..a1f2c71fa5df6496f095db1556e57bfd5d510db7 100644 (file)
@@ -367,7 +367,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 90746a845edb4597e46f9e8c628c8bd968864a98..917ce0a8eccf8baef172eacf17e0de8c946b07e3 100644 (file)
@@ -232,7 +232,7 @@ build_dis_hash_table (CGEN_CPU_DESC cd)
 /* Return the first entry in the hash list for INSN.  */
 
 CGEN_INSN_LIST *
-cgen_dis_lookup_insn (CGEN_CPU_DESC cd, const char * buf, CGEN_INSN_INT value)
+cgen_dis_lookup_insn (CGEN_CPU_DESC cd, const char * buf, CGEN_INSN_LGUINT value)
 {
   unsigned int hash;
 
index c144c7eb4508d3319ba3c507db4172227d8bb4e3..16f888fa9c6e634fef20a9a90b3c1adbbcc40469 100644 (file)
@@ -202,7 +202,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 7141ffb6a3fea43744d646b779c13dd3dada7e28..86d897580fa4f68cb4a1ee1e04c145473b408923 100644 (file)
@@ -355,13 +355,13 @@ cgen_macro_insn_count (CGEN_CPU_DESC cd)
 
 /* Cover function to read and properly byteswap an insn value.  */
 
-CGEN_INSN_INT
+CGEN_INSN_LGUINT
 cgen_get_insn_value (CGEN_CPU_DESC cd, unsigned char *buf, int length,
                      int endian)
 {
   int big_p = (endian == CGEN_ENDIAN_BIG);
   int insn_chunk_bitsize = cd->insn_chunk_bitsize;
-  CGEN_INSN_INT value = 0;
+  CGEN_INSN_LGUINT value = 0;
 
   if (insn_chunk_bitsize != 0 && insn_chunk_bitsize < length)
     {
@@ -397,7 +397,7 @@ void
 cgen_put_insn_value (CGEN_CPU_DESC cd,
                     unsigned char *buf,
                     int length,
-                    CGEN_INSN_INT value,
+                    CGEN_INSN_LGUINT value,
                      int endian)
 {
   int big_p = (endian == CGEN_ENDIAN_BIG);
@@ -446,7 +446,7 @@ cgen_put_insn_value (CGEN_CPU_DESC cd,
 const CGEN_INSN *
 cgen_lookup_insn (CGEN_CPU_DESC cd,
                  const CGEN_INSN *insn,
-                 CGEN_INSN_INT insn_int_value,
+                 CGEN_INSN_LGUINT insn_int_value,
                  /* ??? CGEN_INSN_BYTES would be a nice type name to use here.  */
                  unsigned char *insn_bytes_value,
                  int length,
index 72ea8bcc6453420e9cf6c0165989e6e2d75ff44e..a77b1c24765ccc3edfaf6597713a1cd1ad21d536 100644 (file)
@@ -443,7 +443,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index f0918b8a49c184b606eb4194168627c19937110e..f200290fc3f7678893c05425f21d0032ddd8b0f6 100644 (file)
@@ -464,7 +464,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 4740ac4509a3b73e668025682f8a0151191e30f3..d3901c923bebaef5716e9f48a822a0b9634ffd03 100644 (file)
@@ -561,7 +561,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 87ff75b47c2adf8e28d8229df53b06d462c276e8..598b04fc1294c1af7a60979964e630c295922726 100644 (file)
@@ -453,7 +453,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 07fd2fc655749088f022da8636d390590dc92127..3fc988d078c51f2b82fe848ec7df5010e222c559 100644 (file)
@@ -354,7 +354,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index b013eaec8a3ce729dca6ca8773c8a42cbeb3c256..268d0f19da8c75a5f0efe88344c050097d3c7e1f 100644 (file)
@@ -312,7 +312,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 950198a15c318149545f0603bfb41d247f1ca0ab..c783510cf4d8ca047617fe75aff7f1d6654b42d2 100644 (file)
@@ -1056,7 +1056,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 8cfd9fdd499ea28a312ca0101d7d7cc1f8dc1d7f..4bba1c1503c4495ba201170db827438374759a00 100644 (file)
@@ -444,7 +444,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 91ea29b7c39e1dc7d69c332c652cbd1592531ea0..0da8a9aa11742990d16deb852720679569c8fde5 100644 (file)
@@ -1366,7 +1366,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index a212198987162025a53e87eb48d9a75271032da0..8efaac835a0cd4257349bb23279b2ba0421180a7 100644 (file)
@@ -452,7 +452,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index e70c6519973c160cdd711bea655103c91d063c68..e6170d608c7e16afcc16b9eefca9a5984ccdcf11 100644 (file)
@@ -339,7 +339,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;
index 0de29d6024862de40283d9f56709e1acdc1f552a..a8da1e6285b8050ffc53f9832a2bec46f22f5ef6 100644 (file)
@@ -333,7 +333,7 @@ print_insn (CGEN_CPU_DESC cd,
            bfd_byte *buf,
            unsigned int buflen)
 {
-  CGEN_INSN_INT insn_value;
+  CGEN_INSN_LGUINT insn_value;
   const CGEN_INSN_LIST *insn_list;
   CGEN_EXTRACT_INFO ex_info;
   int basesize;