Commit | Line | Data |
---|---|---|
276dd6ef DE |
1 | /* tc-dvp.h -- Header file for tc-dvp.c. |
2 | Copyright (C) 1997, 1998 Free Software Foundation, Inc. | |
209fb346 DE |
3 | |
4 | This file is part of GAS, the GNU Assembler. | |
5 | ||
6 | GAS is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 2, or (at your option) | |
9 | any later version. | |
10 | ||
11 | GAS is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with GAS; see the file COPYING. If not, write to | |
18 | the Free Software Foundation, 59 Temple Place - Suite 330, | |
19 | Boston, MA 02111-1307, USA. */ | |
20 | ||
276dd6ef | 21 | #define TC_DVP |
209fb346 DE |
22 | |
23 | #ifndef BFD_ASSEMBLER | |
24 | /* leading space so will compile with cc */ | |
276dd6ef | 25 | #error DVP support requires BFD_ASSEMBLER |
209fb346 DE |
26 | #endif |
27 | ||
276dd6ef | 28 | #define LISTING_HEADER "DVP GAS " |
209fb346 DE |
29 | |
30 | /* The target BFD architecture. */ | |
276dd6ef | 31 | #define TARGET_ARCH bfd_arch_mips |
209fb346 | 32 | |
276dd6ef | 33 | #define TARGET_FORMAT "elf32-littlemips" |
209fb346 DE |
34 | |
35 | #define TARGET_BYTES_BIG_ENDIAN 0 | |
36 | ||
37 | /* call md_pcrel_from_section, not md_pcrel_from */ | |
38 | #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC) | |
39 | ||
40 | /* Permit temporary numeric labels. */ | |
41 | #define LOCAL_LABELS_FB 1 | |
42 | ||
43 | #define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ | |
44 | ||
45 | /* We don't need to handle .word strangely. */ | |
46 | #define WORKING_DOT_WORD | |
47 | ||
1554baf3 DE |
48 | /* Handle mpg/direct alignment requirements with relaxation. */ |
49 | extern long dvp_relax_frag PARAMS ((fragS *, long)); | |
50 | #define md_relax_frag(fragP,stretch) dvp_relax_frag ((fragP), (stretch)) | |
209fb346 DE |
51 | |
52 | #define MD_APPLY_FIX3 | |
209fb346 | 53 | |
1554baf3 DE |
54 | /* Ensure insns at labels have their mach type properly recorded. */ |
55 | int force_mach_label PARAMS ((void)); | |
56 | #define TC_START_LABEL(ch, ptr) (ch == ':' && force_mach_label ()) | |
57 | ||
209fb346 | 58 | #define TC_HANDLES_FX_DONE |
96f5b6b2 | 59 | |
1554baf3 DE |
60 | /* Record user specified val, for cases where we can't compute the actual |
61 | value until the end of assembly. */ | |
62 | #define TC_FIX_TYPE \ | |
63 | struct { \ | |
64 | int type; /* gif_type, or vif type */ \ | |
65 | int nregs; /* for gif insns only */ \ | |
66 | short wl; short cl; /* for unpack only */ \ | |
67 | int user_value; \ | |
68 | } | |
69 | /* Code to initialize it. */ | |
70 | #define TC_INIT_FIX_DATA(fixP) \ | |
71 | do { memset (&fixP->tc_fix_data, 0, sizeof (fixP->tc_fix_data)); } while (0) | |
72 | ||
96f5b6b2 | 73 | /* Called after parsing a file. */ |
69312dac DE |
74 | extern void dvp_parse_done PARAMS ((void)); |
75 | #define md_after_pass_hook() dvp_after_pass_hook () | |
76 | ||
1554baf3 | 77 | /* Called for each label. */ |
69312dac DE |
78 | extern void dvp_frob_label PARAMS ((struct symbol *)); |
79 | #define tc_frob_label(sym) dvp_frob_label (sym) | |
96f5b6b2 | 80 | |
1554baf3 DE |
81 | /* Called just before writing the file out. */ |
82 | extern void dvp_frob_file PARAMS ((void)); | |
83 | #define tc_frob_file() dvp_frob_file () | |
84 | ||
96f5b6b2 JL |
85 | /* Default section names. */ |
86 | #define TEXT_SECTION_NAME ".vutext" | |
87 | #define DATA_SECTION_NAME ".vudata" | |
88 | #define BSS_SECTION_NAME ".vubss" | |
89 | ||
90 | #define ELF_TC_SPECIAL_SECTIONS \ | |
91 | { ".vubss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, \ | |
92 | { ".vudata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ | |
c3b51879 | 93 | { ".vutext", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR }, |