diff options
Diffstat (limited to 'gas/config/m68k-parse.h')
-rw-r--r-- | gas/config/m68k-parse.h | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/gas/config/m68k-parse.h b/gas/config/m68k-parse.h deleted file mode 100644 index cdb5f60eb53..00000000000 --- a/gas/config/m68k-parse.h +++ /dev/null @@ -1,325 +0,0 @@ -/* m68k-parse.h -- header file for m68k assembler - Copyright (C) 1987, 91, 92, 93, 94, 95, 96, 1999 - 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) - any later version. - - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - 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. */ - -#ifndef M68K_PARSE_H -#define M68K_PARSE_H - -/* This header file defines things which are shared between the - operand parser in m68k.y and the m68k assembler proper in - tc-m68k.c. */ - -/* The various m68k registers. */ - -/* DATA and ADDR have to be contiguous, so that reg-DATA gives - 0-7==data reg, 8-15==addr reg for operands that take both types. - - We don't use forms like "ADDR0 = ADDR" here because this file is - likely to be used on an Apollo, and the broken Apollo compiler - gives an `undefined variable' error if we do that, according to - troy@cbme.unsw.edu.au. */ - -#define DATA DATA0 -#define ADDR ADDR0 -#define SP ADDR7 -#define BAD BAD0 -#define BAC BAC0 - -enum m68k_register -{ - DATA0 = 1, /* 1- 8 == data registers 0-7 */ - DATA1, - DATA2, - DATA3, - DATA4, - DATA5, - DATA6, - DATA7, - - ADDR0, - ADDR1, - ADDR2, - ADDR3, - ADDR4, - ADDR5, - ADDR6, - ADDR7, - - FP0, /* Eight FP registers */ - FP1, - FP2, - FP3, - FP4, - FP5, - FP6, - FP7, - - COP0, /* Co-processor #0-#7 */ - COP1, - COP2, - COP3, - COP4, - COP5, - COP6, - COP7, - - PC, /* Program counter */ - ZPC, /* Hack for Program space, but 0 addressing */ - SR, /* Status Reg */ - CCR, /* Condition code Reg */ - ACC, /* Accumulator Reg */ - 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, - DFC, - CACR, - VBR, - CAAR, - MSP, - ITT0, - ITT1, - DTT0, - DTT1, - MMUSR, - TC, - SRP, - URP, - BUSCR, /* 68060 added these */ - PCR, - ROMBAR, /* mcf5200 added these */ - RAMBAR0, - RAMBAR1, - MBAR, -#define last_movec_reg MBAR - /* end of movec ordering constraints */ - - FPI, - FPS, - FPC, - - DRP, /* 68851 or 68030 MMU regs */ - CRP, - CAL, - VAL, - SCC, - AC, - BAD0, - BAD1, - BAD2, - BAD3, - BAD4, - BAD5, - BAD6, - BAD7, - BAC0, - BAC1, - BAC2, - BAC3, - BAC4, - BAC5, - BAC6, - BAC7, - PSR, /* aka MMUSR on 68030 (but not MMUSR on 68040) - and ACUSR on 68ec030 */ - PCSR, - - IC, /* instruction cache token */ - DC, /* data cache token */ - NC, /* no cache token */ - BC, /* both caches token */ - - TT0, /* 68030 access control unit regs */ - TT1, - - ZDATA0, /* suppressed data registers. */ - ZDATA1, - ZDATA2, - ZDATA3, - ZDATA4, - ZDATA5, - ZDATA6, - ZDATA7, - - ZADDR0, /* suppressed address registers. */ - ZADDR1, - ZADDR2, - ZADDR3, - ZADDR4, - 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. */ - -enum m68k_size -{ - /* Unspecified. */ - SIZE_UNSPEC, - - /* Byte. */ - SIZE_BYTE, - - /* Word (2 bytes). */ - SIZE_WORD, - - /* Longword (4 bytes). */ - SIZE_LONG -}; - -/* The structure used to hold information about an index register. */ - -struct m68k_indexreg -{ - /* The index register itself. */ - enum m68k_register reg; - - /* The size to use. */ - enum m68k_size size; - - /* The value to scale by. */ - 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 */ -}; -#endif - -/* The structure used to hold information about an expression. */ - -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; -}; - -/* The operand modes. */ - -enum m68k_operand_type -{ - IMMED = 1, - ABSL, - DREG, - AREG, - FPREG, - CONTROL, - AINDR, - AINC, - ADEC, - DISP, - BASE, - POST, - PRE, - REGLST -}; - -/* The structure used to hold a parsed operand. */ - -struct m68k_op -{ - /* The type of operand. */ - enum m68k_operand_type mode; - - /* The main register. */ - enum m68k_register reg; - - /* The register mask for mode REGLST. */ - unsigned long mask; - - /* An error message. */ - const char *error; - - /* The index register. */ - struct m68k_indexreg index; - - /* The displacement. */ - struct m68k_exp disp; - - /* The outer displacement. */ - struct m68k_exp odisp; -}; - -#endif /* ! defined (M68K_PARSE_H) */ - -/* The parsing function. */ - -extern int m68k_ip_op PARAMS ((char *, struct m68k_op *)); - -/* Whether register prefixes are optional. */ -extern int flag_reg_prefix_optional; |