Back to index

cell-binutils  2.17cvs20070401
tc-score.h
Go to the documentation of this file.
00001 /* tc-score.h -- Score specific file for assembler
00002    Copyright 2006 Free Software Foundation, Inc.
00003    Contributed by: 
00004    Mei Ligang (ligang@sunnorth.com.cn)
00005    Pei-Lin Tsai (pltsai@sunplus.com)
00006  
00007    This file is part of GAS, the GNU Assembler.
00008 
00009    GAS is free software; you can redistribute it and/or modify
00010    it under the terms of the GNU General Public License as published by
00011    the Free Software Foundation; either version 2, or (at your option)
00012    any later version.
00013 
00014    GAS is distributed in the hope that it will be useful,
00015    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017    GNU General Public License for more details.
00018 
00019    You should have received a copy of the GNU General Public License
00020    along with GAS; see the file COPYING.  If not, write to the Free
00021    Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
00022    MA 02110-1301, USA.  */
00023 
00024 #ifndef TC_SCORE
00025 #define TC_SCORE
00026 
00027 #define TARGET_ARCH              bfd_arch_score
00028 #define WORKING_DOT_WORD
00029 #define DIFF_EXPR_OK
00030 #define RELOC_EXPANSION_POSSIBLE
00031 #define MAX_RELOC_EXPANSION         2
00032 #define MAX_MEM_FOR_RS_ALIGN_CODE  (3 + 4)
00033 
00034 #define md_undefined_symbol(name)  NULL
00035 
00036 #define TARGET_FORMAT  (target_big_endian ? "elf32-bigscore" : "elf32-littlescore")
00037 
00038 #define md_relax_frag(segment, fragp, stretch)  score_relax_frag (segment, fragp, stretch)
00039 extern int score_relax_frag (asection *, struct frag *, long);
00040 
00041 #define md_frag_check(fragp)  score_frag_check (fragp)
00042 extern void score_frag_check (fragS *);
00043 
00044 #define TC_VALIDATE_FIX(FIXP, SEGTYPE, SKIP)  score_validate_fix (FIXP)
00045 extern void score_validate_fix (struct fix *);
00046 
00047 #define TC_FORCE_RELOCATION(FIXP)  score_force_relocation (FIXP)
00048 extern int score_force_relocation (struct fix *);
00049 
00050 #define tc_fix_adjustable(fixp)  score_fix_adjustable (fixp)
00051 extern bfd_boolean score_fix_adjustable (struct fix *);
00052 
00053 #define elf_tc_final_processing  score_elf_final_processing
00054 extern void score_elf_final_processing (void);
00055 
00056 struct score_tc_frag_data
00057 {
00058   unsigned int is_insn;
00059   struct fix *fixp;
00060 };
00061 
00062 #define TC_FRAG_TYPE struct score_tc_frag_data
00063 
00064 #define TC_FRAG_INIT(FRAGP) \
00065   do \
00066     { \
00067       (FRAGP)->tc_frag_data.is_insn = (((FRAGP)->fr_type == rs_machine_dependent) ? 1 : 0); \
00068     } \
00069   while (0)
00070 
00071 #ifdef OBJ_ELF
00072 #define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
00073 #else
00074 #define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
00075 #endif
00076 
00077 enum score_pic_level
00078 {
00079   NO_PIC,
00080   PIC
00081 };
00082 
00083 #endif /*TC_SCORE */