Back to index

cell-binutils  2.17cvs20070401
tc-i860.h
Go to the documentation of this file.
00001 /* tc-i860.h -- Header file for the i860.
00002    Copyright 1991, 1992, 1995, 1998, 2000, 2001, 2002, 2003, 2005
00003    Free Software Foundation, Inc.
00004 
00005    Brought back from the dead and completely reworked
00006    by Jason Eckhardt <jle@cygnus.com>.
00007 
00008    This file is part of GAS, the GNU Assembler.
00009 
00010    GAS is free software; you can redistribute it and/or modify
00011    it under the terms of the GNU General Public License as published by
00012    the Free Software Foundation; either version 2, or (at your option)
00013    any later version.
00014 
00015    GAS is distributed in the hope that it will be useful,
00016    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018    GNU General Public License for more details.
00019 
00020    You should have received a copy of the GNU General Public License along
00021    with GAS; see the file COPYING.  If not, write to the Free Software
00022    Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
00023 
00024 #ifndef TC_I860
00025 #define TC_I860 1
00026 
00027 enum i860_fix_info
00028 {
00029   OP_NONE      = 0x00000,
00030   OP_IMM_U5    = 0x00001,
00031   OP_IMM_S16   = 0x00002,
00032   OP_IMM_U16   = 0x00004,
00033   OP_IMM_SPLIT16 = 0x00008,
00034   OP_IMM_BR26  = 0x00010,
00035   OP_IMM_BR16  = 0x00020,
00036   OP_ENCODE1   = 0x00040,
00037   OP_ENCODE2   = 0x00080,
00038   OP_ENCODE3   = 0x00100,
00039   OP_SEL_HA    = 0x00200,
00040   OP_SEL_H     = 0x00400,
00041   OP_SEL_L     = 0x00800,
00042   OP_SEL_GOT   = 0x01000,
00043   OP_SEL_GOTOFF       = 0x02000,
00044   OP_SEL_PLT   = 0x04000,
00045   OP_ALIGN2    = 0x08000,
00046   OP_ALIGN4    = 0x10000,
00047   OP_ALIGN8    = 0x20000,
00048   OP_ALIGN16   = 0x40000
00049 };
00050 
00051 /* Set the endianness we are using.  Default to little endian.  */
00052 #ifndef TARGET_BYTES_BIG_ENDIAN
00053 #define TARGET_BYTES_BIG_ENDIAN 0
00054 #endif
00055 
00056 /* Whether or not the target is big endian.  */
00057 extern int target_big_endian;
00058 
00059 /* BFD target architecture.  */
00060 #define TARGET_ARCH     bfd_arch_i860
00061 
00062 /* The target BFD format.  */
00063 #ifdef OBJ_ELF
00064 #define TARGET_FORMAT (target_big_endian ? "elf32-i860" : "elf32-i860-little")
00065 #else
00066 #error i860 GAS currently supports only the ELF object format
00067 #endif
00068 
00069 #define WORKING_DOT_WORD
00070 #define DIFF_EXPR_OK
00071 
00072 /* Permit temporary numeric labels.  */
00073 #define LOCAL_LABELS_FB            1
00074 #define LISTING_HEADER             "GAS for i860"
00075 
00076 #define md_convert_frag(b,s,f)  as_fatal (_("i860_convert_frag\n"));
00077 
00078 /* Values passed to md_apply_fix don't include the symbol value.  */
00079 #define MD_APPLY_SYM_VALUE(FIX) 0
00080 
00081 /* No shared lib support, so we don't need to ensure externally
00082    visible symbols can be overridden.  */
00083 #define EXTERN_FORCE_RELOC 0
00084 
00085 /* Bits for post-processing of a user defined label to check if
00086    it has a double colon (Intel syntax only).  */
00087 extern void i860_check_label (symbolS *labelsym);
00088 #define tc_check_label(ls)  i860_check_label (ls)
00089 
00090 /* Bits for filling in rs_align_code fragments with NOPs.  */
00091 extern void i860_handle_align (struct frag *);
00092 #define HANDLE_ALIGN(fragp) i860_handle_align (fragp)
00093 
00094 #define MAX_MEM_FOR_RS_ALIGN_CODE  (3 + 4 + 4)
00095 
00096 #endif /* TC_I860 */