OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [gas/] [config/] [tc-maxq.h] - Diff between revs 156 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 156 Rev 816
/* tc-maxq.h -- Header file for the assembler(MAXQ)
/* tc-maxq.h -- Header file for the assembler(MAXQ)
 
 
   Copyright 2004, 2005, 2007  Free Software Foundation, Inc.
   Copyright 2004, 2005, 2007  Free Software Foundation, Inc.
 
 
   Contributed by HCL Technologies Pvt. Ltd.
   Contributed by HCL Technologies Pvt. Ltd.
 
 
   Written by Vineet Sharma(vineets@noida.hcltech.com) Inderpreet
   Written by Vineet Sharma(vineets@noida.hcltech.com) Inderpreet
   S.(inderpreetb@noida.hcltech.com)
   S.(inderpreetb@noida.hcltech.com)
 
 
   This file is part of GAS.
   This file is part of GAS.
 
 
   GAS is free software; you can redistribute it and/or modify it under the
   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
   terms of the GNU General Public License as published by the Free Software
   Foundation; either version 3, or (at your option) any later version.
   Foundation; either version 3, or (at your option) any later version.
 
 
   GAS is distributed in the hope that it will be useful, but WITHOUT ANY
   GAS is distributed in the hope that it will be useful, but WITHOUT ANY
   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
   details.
   details.
 
 
   You should have received a copy of the GNU General Public License along
   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
   with GAS; see the file COPYING.  If not, write to the Free Software
   Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
   Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 
#ifndef  _TC_MAXQ_H_
#ifndef  _TC_MAXQ_H_
#define  _TC_MAXQ_H_
#define  _TC_MAXQ_H_
 
 
#ifndef NO_RELOC
#ifndef NO_RELOC
#define NO_RELOC 0
#define NO_RELOC 0
#endif
#endif
 
 
/* `md_short_jump_size' `md_long_jump_size' `md_create_short_jump'
/* `md_short_jump_size' `md_long_jump_size' `md_create_short_jump'
   `md_create_long_jump' If `WORKING_DOT_WORD' is defined, GAS will not do
   `md_create_long_jump' If `WORKING_DOT_WORD' is defined, GAS will not do
   broken word processing (*note Broken words::.).  Otherwise, you should set
   broken word processing (*note Broken words::.).  Otherwise, you should set
   `md_short_jump_size' to the size of a short jump (a jump that is just long
   `md_short_jump_size' to the size of a short jump (a jump that is just long
   enough to jump around a long jmp) and `md_long_jump_size' to the size of a
   enough to jump around a long jmp) and `md_long_jump_size' to the size of a
   long jump (a jump that can go anywhere in the function), You should define
   long jump (a jump that can go anywhere in the function), You should define
   `md_create_short_jump' to create a short jump around a long jump, and
   `md_create_short_jump' to create a short jump around a long jump, and
   define `md_create_long_jump' to create a long jump.  */
   define `md_create_long_jump' to create a long jump.  */
#define WORKING_DOT_WORD
#define WORKING_DOT_WORD
typedef enum _RELOC_ENUM
typedef enum _RELOC_ENUM
{
{
  MAXQ_WORDDATA = 5,            /* Word+n.  */
  MAXQ_WORDDATA = 5,            /* Word+n.  */
  MAXQ_LONGDATA = 2,            /* Long+n.  */
  MAXQ_LONGDATA = 2,            /* Long+n.  */
  MAXQ_INTERSEGMENT = 4,        /* Text to any other segment.  */
  MAXQ_INTERSEGMENT = 4,        /* Text to any other segment.  */
  MAXQ_SHORTJUMP = BFD_RELOC_16_PCREL_S2,       /* PC Relative.  */
  MAXQ_SHORTJUMP = BFD_RELOC_16_PCREL_S2,       /* PC Relative.  */
  MAXQ_LONGJUMP = 6,            /* Absolute Jump.  */
  MAXQ_LONGJUMP = 6,            /* Absolute Jump.  */
  EXTERNAL_RELOC = 8,
  EXTERNAL_RELOC = 8,
  INTERSEGMENT_RELOC
  INTERSEGMENT_RELOC
}
}
RELOC_ENUM;
RELOC_ENUM;
 
 
#ifndef MAX_STACK
#ifndef MAX_STACK
#define MAX_STACK 0xf
#define MAX_STACK 0xf
#endif
#endif
 
 
#ifndef TC_MAXQ20
#ifndef TC_MAXQ20
#define TC_MAXQ20 1
#define TC_MAXQ20 1
#endif
#endif
 
 
#ifndef MAX_OPERAND_SIZE
#ifndef MAX_OPERAND_SIZE
#define MAX_OPERAND_SIZE 255
#define MAX_OPERAND_SIZE 255
#endif
#endif
 
 
#ifndef MAXQ_INSTRUCTION_SIZE
#ifndef MAXQ_INSTRUCTION_SIZE
#define MAXQ_INSTRUCTION_SIZE 2 /* 16 - BITS */
#define MAXQ_INSTRUCTION_SIZE 2 /* 16 - BITS */
#endif
#endif
 
 
#if MAXQ_INSTRUCTION_SIZE
#if MAXQ_INSTRUCTION_SIZE
#define MAXQ_OCTETS_PER_BYTE    MAXQ_INSTRUCTION_SIZE
#define MAXQ_OCTETS_PER_BYTE    MAXQ_INSTRUCTION_SIZE
#else
#else
#define MAXQ_OCTETS_PER_BYTE    OCTETS_PER_BYTE
#define MAXQ_OCTETS_PER_BYTE    OCTETS_PER_BYTE
#endif
#endif
 
 
/* if this macro is defined gas will use this instead of comment_chars.  */
/* if this macro is defined gas will use this instead of comment_chars.  */
#define tc_comments_chars maxq20_comment_chars
#define tc_comments_chars maxq20_comment_chars
 
 
#define tc_coff_symbol_emit_hook(a)     ;       /* not used */
#define tc_coff_symbol_emit_hook(a)     ;       /* not used */
 
 
#define md_section_align(SEGMENT, SIZE)     (SIZE)
#define md_section_align(SEGMENT, SIZE)     (SIZE)
 
 
/* Locally defined symbol shoudnot be adjusted to section symbol.  */
/* Locally defined symbol shoudnot be adjusted to section symbol.  */
#define tc_fix_adjustable(FIX) 0
#define tc_fix_adjustable(FIX) 0
 
 
/* This specifies that the target has been defined as little endian -
/* This specifies that the target has been defined as little endian -
   default.  */
   default.  */
#define TARGET_BYTES_BIG_ENDIAN 0
#define TARGET_BYTES_BIG_ENDIAN 0
 
 
#define MAX_MEM_NAME_SIZE 12
#define MAX_MEM_NAME_SIZE 12
#define MAX_REG_NAME_SIZE  7
#define MAX_REG_NAME_SIZE  7
#define MAX_MNEM_SIZE      8
#define MAX_MNEM_SIZE      8
 
 
#define END_OF_INSN '\0'
#define END_OF_INSN '\0'
 
 
/* This macro is the BFD archetectureto pass to 'bfd_set_arch_mach'.  */
/* This macro is the BFD archetectureto pass to 'bfd_set_arch_mach'.  */
#define TARGET_ARCH             bfd_arch_maxq
#define TARGET_ARCH             bfd_arch_maxq
 
 
/* This macro is the BFD machine number to pass to 'bfd_set_arch_mach'.
/* This macro is the BFD machine number to pass to 'bfd_set_arch_mach'.
   If not defines GAS will use 0.  */
   If not defines GAS will use 0.  */
#define TARGET_MACH             maxq20_mach ()
#define TARGET_MACH             maxq20_mach ()
extern unsigned long maxq20_mach (void);
extern unsigned long maxq20_mach (void);
 
 
#ifndef LEX_AT
#ifndef LEX_AT
/* We define this macro to generate a fixup for a data allocation pseudo-op.  */
/* We define this macro to generate a fixup for a data allocation pseudo-op.  */
#define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) maxq20_cons_fix_new (FRAG,OFF,LEN,EXP)
#define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) maxq20_cons_fix_new (FRAG,OFF,LEN,EXP)
extern void maxq20_cons_fix_new (fragS *, unsigned int, unsigned int, expressionS *);
extern void maxq20_cons_fix_new (fragS *, unsigned int, unsigned int, expressionS *);
#endif
#endif
 
 
/* Define md_number_to_chars as the appropriate standard big endian or This
/* Define md_number_to_chars as the appropriate standard big endian or This
   should just call either `number_to_chars_bigendian' or
   should just call either `number_to_chars_bigendian' or
   `number_to_chars_littleendian', whichever is appropriate.  On targets like
   `number_to_chars_littleendian', whichever is appropriate.  On targets like
   the MIPS which support options to change the endianness, which function to
   the MIPS which support options to change the endianness, which function to
   call is a runtime decision.  On other targets, `md_number_to_chars' can be
   call is a runtime decision.  On other targets, `md_number_to_chars' can be
   a simple macro.  */
   a simple macro.  */
#define md_number_to_chars maxq_number_to_chars
#define md_number_to_chars maxq_number_to_chars
extern void maxq_number_to_chars (char *, valueT, int);
extern void maxq_number_to_chars (char *, valueT, int);
 
 
/* If this macro is defined, it is a pointer to a NULL terminated list of
/* If this macro is defined, it is a pointer to a NULL terminated list of
   characters which may appear in an operand. GAS already assumes that all
   characters which may appear in an operand. GAS already assumes that all
   alphanumeric characters, and '$', '.', and '_' may appear in an
   alphanumeric characters, and '$', '.', and '_' may appear in an
   operand("symbol_char"in app.c). This macro may be defined to treat
   operand("symbol_char"in app.c). This macro may be defined to treat
   additional characters as appearing in an operand. This affects the way in
   additional characters as appearing in an operand. This affects the way in
   which GAS removes whitespaces before passing the string to md_assemble.  */
   which GAS removes whitespaces before passing the string to md_assemble.  */
#define tc_symbol_chars_extra_symbol_chars
#define tc_symbol_chars_extra_symbol_chars
 
 
/* Define away the call to md_operand in the expression parsing code. This is
/* Define away the call to md_operand in the expression parsing code. This is
   called whenever the expression parser can't parse the input and gives the
   called whenever the expression parser can't parse the input and gives the
   assembler backend a chance to deal with it instead.  */
   assembler backend a chance to deal with it instead.  */
#define md_operand(x)
#define md_operand(x)
 
 
#define MAX_OPERANDS           2        /* Max operands per instruction.  */
#define MAX_OPERANDS           2        /* Max operands per instruction.  */
#define MAX_IMMEDIATE_OPERANDS 1        /* Max immediate operands per instruction.  */
#define MAX_IMMEDIATE_OPERANDS 1        /* Max immediate operands per instruction.  */
#define MAX_MEMORY_OPERANDS    1        /* Max memory operands per instruction.  */
#define MAX_MEMORY_OPERANDS    1        /* Max memory operands per instruction.  */
 
 
/* Define the prefix we are using while trying to use an immediate value in
/* Define the prefix we are using while trying to use an immediate value in
   an instruction. e.g move A[0], #03h.  */
   an instruction. e.g move A[0], #03h.  */
#define IMMEDIATE_PREFIX '#'
#define IMMEDIATE_PREFIX '#'
 
 
#define ABSOLUTE_PREFIX '@'
#define ABSOLUTE_PREFIX '@'
 
 
/* This here defines the opcode of the nop operation on the MAXQ. We did
/* This here defines the opcode of the nop operation on the MAXQ. We did
   declare it here when we tried to fill the align bites with nop's but GAS
   declare it here when we tried to fill the align bites with nop's but GAS
   only expects nop's to be single byte instruction.  */
   only expects nop's to be single byte instruction.  */
#define NOP_OPCODE (char)0xDA3A
#define NOP_OPCODE (char)0xDA3A
 
 
#define SIZE_OF_PM sizeof(pmodule)      /* Size of the structure.  */
#define SIZE_OF_PM sizeof(pmodule)      /* Size of the structure.  */
 
 
#endif /* TC_MAXQ_H */
#endif /* TC_MAXQ_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.