Merge branch 'master' into merge-job
[deliverable/binutils-gdb.git] / gas / config / m68k-parse.h
index 128944cf5fd1b9399218f131de9daab110e68ff9..099e064d8184dcfbcd0487fb86cfc308e7c34698 100644 (file)
@@ -1,11 +1,11 @@
 /* m68k-parse.h -- header file for m68k assembler
-   Copyright (C) 1987, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1987-2020 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
@@ -15,8 +15,8 @@
 
    You should have received a copy of the GNU General Public License
    along with GAS; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #ifndef M68K_PARSE_H
 #define M68K_PARSE_H
@@ -38,7 +38,6 @@
 #define DATA DATA0
 #define ADDR ADDR0
 #define SP ADDR7
-#define COPNUM  COP0
 #define BAD BAD0
 #define BAC BAC0
 
@@ -71,10 +70,7 @@ enum m68k_register
   FP6,
   FP7,
 
-  /* Note that COP0==processor #1 -- COP0+7==#8, which stores as 000 */
-  /* I think. . .  */
-
-  COP0,                                /* Co-processor #1-#8 */
+  COP0,                                /* Co-processor #0-#7 */
   COP1,
   COP2,
   COP3,
@@ -87,8 +83,16 @@ enum m68k_register
   ZPC,                         /* Hack for Program space, but 0 addressing */
   SR,                          /* Status Reg */
   CCR,                         /* Condition code Reg */
-
-  /* These have to be grouped together for the movec instruction to work. */
+  ACC,                         /* Accumulator Reg0 (EMAC or ACC on MAC).  */
+  ACC1,                                /* Accumulator Reg 1 (EMAC).  */
+  ACC2,                                /* Accumulator Reg 2 (EMAC).  */
+  ACC3,                                /* Accumulator Reg 3 (EMAC).  */
+  ACCEXT01,                    /* Accumulator extension 0&1 (EMAC).  */
+  ACCEXT23,                    /* Accumulator extension 2&3 (EMAC).  */
+  MACSR,                       /* MAC Status Reg */
+  MASK,                                /* Modulus Reg */
+
+  /* These have to be grouped together for the movec instruction to work.  */
   USP,                         /*  User Stack Pointer */
   ISP,                         /*  Interrupt stack pointer */
   SFC,
@@ -96,6 +100,7 @@ enum m68k_register
   CACR,
   VBR,
   CAAR,
+  CPUCR,
   MSP,
   ITT0,
   ITT1,
@@ -105,10 +110,32 @@ enum m68k_register
   TC,
   SRP,
   URP,
-  BUSCR,                       /* 68060 added these */
+  BUSCR,                       /* 68060 added these */
   PCR,
-#define last_movec_reg PCR
-  /* end of movec ordering constraints */
+  ROMBAR,                      /* mcf5200 added these.  */
+  RAMBAR_ALT,                  /* Some CF chips have RAMBAR using
+                                  RAMBAR0's number */
+  RAMBAR0,
+  RAMBAR1,
+  MMUBAR,                      /* mcfv4e added these.  */
+  ROMBAR0,                     /* mcfv4e added these.  */
+  ROMBAR1,                     /* mcfv4e added these.  */
+  MPCR, EDRAMBAR, SECMBAR,     /* mcfv4e added these.  */
+  PCR1U0, PCR1L0, PCR1U1, PCR1L1,/* mcfv4e added these.  */
+  PCR2U0, PCR2L0, PCR2U1, PCR2L1,/* mcfv4e added these.  */
+  PCR3U0, PCR3L0, PCR3U1, PCR3L1,/* mcfv4e added these.  */
+  MBAR0, MBAR1,                        /* mcfv4e added these.  */
+  ACR0, ACR1, ACR2, ACR3,       /* mcf5200 added these.  */
+  ACR4, ACR5, ACR6, ACR7,      /* mcf54418 added these.  */
+  FLASHBAR, RAMBAR,            /* mcf528x added these.  */
+  MBAR2,                       /* mcf5249 added this.  */
+  MBAR,
+  RGPIOBAR,                    /* mcf54418 added this.  */
+  ASID,                                /* m5475.  */
+  CAC,                         /* fido added this.  */
+  MBO,
+#define last_movec_reg MBO
+  /* End of movec ordering constraints.  */
 
   FPI,
   FPS,
@@ -165,6 +192,44 @@ enum m68k_register
   ZADDR5,
   ZADDR6,
   ZADDR7,
+
+  /* Upper and lower half of data and address registers.  Order *must*
+     be DATAxL, ADDRxL, DATAxU, ADDRxU.  */
+  DATA0L,                      /* lower half of data registers */
+  DATA1L,
+  DATA2L,
+  DATA3L,
+  DATA4L,
+  DATA5L,
+  DATA6L,
+  DATA7L,
+
+  ADDR0L,                      /* lower half of address registers */
+  ADDR1L,
+  ADDR2L,
+  ADDR3L,
+  ADDR4L,
+  ADDR5L,
+  ADDR6L,
+  ADDR7L,
+
+  DATA0U,                      /* upper half of data registers */
+  DATA1U,
+  DATA2U,
+  DATA3U,
+  DATA4U,
+  DATA5U,
+  DATA6U,
+  DATA7U,
+
+  ADDR0U,                      /* upper half of address registers */
+  ADDR1U,
+  ADDR2U,
+  ADDR3U,
+  ADDR4U,
+  ADDR5U,
+  ADDR6U,
+  ADDR7U,
 };
 
 /* Size information.  */
@@ -198,6 +263,24 @@ struct m68k_indexreg
   int scale;
 };
 
+#ifdef OBJ_ELF
+/* The type of a PIC expression.  */
+
+enum pic_relocation
+{
+  pic_none,                    /* not pic */
+  pic_plt_pcrel,               /* @PLTPC */
+  pic_got_pcrel,               /* @GOTPC */
+  pic_plt_off,                 /* @PLT */
+  pic_got_off,                 /* @GOT */
+  pic_tls_gd,                  /* @TLSGD */
+  pic_tls_ldm,                 /* @TLSLDM */
+  pic_tls_ldo,                 /* @TLSLDO */
+  pic_tls_ie,                  /* @TLSIE */
+  pic_tls_le                   /* @TLSLE */
+};
+#endif
+
 /* The structure used to hold information about an expression.  */
 
 struct m68k_exp
@@ -205,24 +288,15 @@ struct m68k_exp
   /* The size to use.  */
   enum m68k_size size;
 
+#ifdef OBJ_ELF
+  /* The type of pic relocation if any.  */
+  enum pic_relocation pic_reloc;
+#endif
+
   /* The expression itself.  */
   expressionS exp;
 };
 
-/* See whether an expression is a signed eight bit value.  */
-
-#define expr8(ex)                              \
-  ((ex)->exp.X_op == O_constant                        \
-   && (ex)->exp.X_add_number >= -0x80          \
-   && (ex)->exp.X_add_number < 0x80)
-
-/* See whether an expression is a signed sixteen bit value.  */
-
-#define expr16(ex)                             \
-  ((ex)->exp.X_op == O_constant                        \
-   && (ex)->exp.X_add_number >= -0x8000                \
-   && (ex)->exp.X_add_number < 0x8000)
-
 /* The operand modes.  */
 
 enum m68k_operand_type
@@ -240,6 +314,8 @@ enum m68k_operand_type
   BASE,
   POST,
   PRE,
+  LSH,  /* MAC/EMAC scalefactor '<<'.  */
+  RSH,  /* MAC/EMAC scalefactor '>>'.  */
   REGLST
 };
 
@@ -267,13 +343,16 @@ struct m68k_op
 
   /* The outer displacement.  */
   struct m68k_exp odisp;
+
+  /* Is a trailing '&' added to an <ea>? (for MAC/EMAC mask addressing).  */
+  int trailing_ampersand;
 };
 
 #endif /* ! defined (M68K_PARSE_H) */
 
 /* The parsing function.  */
 
-extern int m68k_ip_op PARAMS ((char *, struct m68k_op *));
+extern int m68k_ip_op (char *, struct m68k_op *);
 
 /* Whether register prefixes are optional.  */
 extern int flag_reg_prefix_optional;
This page took 0.025831 seconds and 4 git commands to generate.