Commit | Line | Data |
---|---|---|
e9f53129 AM |
1 | /* spu.h -- Assembler for spu |
2 | ||
66a4ad42 | 3 | Copyright 2006, 2007 Free Software Foundation, Inc. |
e9f53129 AM |
4 | |
5 | This file is part of GAS, the GNU Assembler. | |
6 | ||
7 | GAS is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2, or (at your option) | |
10 | any later version. | |
11 | ||
12 | GAS is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with GAS; see the file COPYING. If not, write to the Free | |
19 | Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA | |
20 | 02110-1301, USA. */ | |
21 | ||
22 | #define TC_SPU | |
23 | ||
24 | #ifdef OBJ_ELF | |
25 | #define TARGET_FORMAT "elf32-spu" | |
26 | #define TARGET_ARCH bfd_arch_spu | |
27 | #define TARGET_NAME "elf32-spu" | |
28 | #endif | |
29 | ||
30 | #define TARGET_BYTES_BIG_ENDIAN 1 | |
31 | ||
32 | #ifndef TARGET_NAME | |
33 | #define TARGET_NAME "coff-spu" | |
34 | #endif | |
35 | ||
36 | #ifndef TARGET_ARCH | |
37 | #define TARGET_ARCH bfd_arch_spu | |
38 | #endif | |
39 | ||
40 | #define COFF_MAGIC SPU_MAGIC | |
41 | #define BFD_ARCH bfd_arch_spu | |
42 | ||
43 | #define NEED_FX_R_TYPE | |
44 | #define TC_KEEP_FX_OFFSET | |
45 | /* #define TC_CONS_RELOC RELOC_32 */ | |
46 | ||
47 | /* If defined, fixS will have a member named tc_fix_data of this type. */ | |
48 | #define TC_FIX_TYPE int | |
49 | #define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = 0) | |
50 | ||
51 | /* Don't reduce function symbols to section symbols. */ | |
52 | #define tc_fix_adjustable(FIXP) (!S_IS_FUNCTION ((FIXP)->fx_addsy)) | |
53 | ||
54 | /* Values passed to md_apply_fix don't include symbol values. */ | |
55 | #define MD_APPLY_SYM_VALUE(FIX) 0 | |
56 | ||
e9f53129 AM |
57 | /* The spu uses pseudo-ops with no leading period. */ |
58 | #define NO_PSEUDO_DOT 1 | |
59 | ||
60 | /* Don't warn on word overflow; it happens on %hi relocs. */ | |
61 | #undef WARN_SIGNED_OVERFLOW_WORD | |
62 | ||
63 | #ifdef OBJ_ELF | |
64 | #define DIFF_EXPR_OK | |
65 | #endif | |
66 | ||
67 | #define WORKING_DOT_WORD | |
68 | ||
69 | #define md_number_to_chars number_to_chars_bigendian | |
70 | ||
71 | #define md_convert_frag(b,s,f) {as_fatal (_("spu convert_frag\n"));} | |
72 | ||
73 | /* We don't need to do anything special for undefined symbols. */ | |
74 | #define md_undefined_symbol(s) 0 | |
75 | ||
76 | /* We have no special operand handling. */ | |
77 | #define md_operand(e) | |
78 | ||
79 | /* Fill in rs_align_code fragments. */ | |
80 | extern void spu_handle_align PARAMS ((fragS *)); | |
81 | #define HANDLE_ALIGN(frag) spu_handle_align (frag) | |
82 | ||
83 | #define MAX_MEM_FOR_RS_ALIGN_CODE (7 + 8) | |
84 | ||
85 | #ifdef SPUCOFF | |
86 | ||
87 | /* Whether a reloc should be output. */ | |
88 | #define TC_COUNT_RELOC(fixp) ((fixp)->fx_addsy != NULL || (fixp)->fx_subsy != NULL) | |
89 | ||
90 | /* Get the BFD reloc type to use for a gas fixS structure. */ | |
91 | #define TC_COFF_FIX2RTYPE(fixp) tc_coff_fix2rtype (fixp) | |
92 | ||
93 | /* No special hook needed for symbols. */ | |
94 | #define tc_coff_symbol_emit_hook(s) | |
95 | ||
96 | /* Align sections to a four byte boundary. */ | |
97 | #ifndef max | |
98 | #define max(a,b) (((a) > (b)) ? (a) : (b)) | |
99 | #endif | |
100 | #define SUB_SEGMENT_ALIGN(SEG) max (section_alignment[(int) (SEG)], 4) | |
101 | ||
102 | #endif /* SPUCOFF */ |