Commit | Line | Data |
---|---|---|
708587a4 | 1 | /* tc-maxq.h -- Header file for the assembler(MAXQ) |
7499d566 | 2 | |
7be1c489 | 3 | Copyright 2004, 2005 Free Software Foundation, Inc. |
7499d566 NC |
4 | |
5 | Contributed by HCL Technologies Pvt. Ltd. | |
6 | ||
7 | Written by Vineet Sharma(vineets@noida.hcltech.com) Inderpreet | |
8 | S.(inderpreetb@noida.hcltech.com) | |
9 | ||
10 | This file is part of GAS. | |
11 | ||
12 | GAS is free software; you can redistribute it and/or modify it under the | |
13 | terms of the GNU General Public License as published by the Free Software | |
14 | Foundation; either version 2, or (at your option) any later version. | |
15 | ||
16 | GAS is distributed in the hope that it will be useful, but WITHOUT ANY | |
17 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
18 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | |
19 | details. | |
20 | ||
21 | You should have received a copy of the GNU General Public License along | |
22 | with GAS; see the file COPYING. If not, write to the Free Software | |
4b4da160 | 23 | Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ |
7499d566 NC |
24 | |
25 | #ifndef _TC_MAXQ_H_ | |
26 | #define _TC_MAXQ_H_ | |
27 | ||
28 | #ifndef NO_RELOC | |
29 | #define NO_RELOC 0 | |
30 | #endif | |
31 | ||
32 | /* `md_short_jump_size' `md_long_jump_size' `md_create_short_jump' | |
33 | `md_create_long_jump' If `WORKING_DOT_WORD' is defined, GAS will not do | |
34 | broken word processing (*note Broken words::.). Otherwise, you should set | |
35 | `md_short_jump_size' to the size of a short jump (a jump that is just long | |
36 | enough to jump around a long jmp) and `md_long_jump_size' to the size of a | |
37 | long jump (a jump that can go anywhere in the function), You should define | |
38 | `md_create_short_jump' to create a short jump around a long jump, and | |
39 | define `md_create_long_jump' to create a long jump. */ | |
40 | #define WORKING_DOT_WORD | |
41 | typedef enum _RELOC_ENUM | |
42 | { | |
43 | MAXQ_WORDDATA = 5, /* Word+n. */ | |
44 | MAXQ_LONGDATA = 2, /* Long+n. */ | |
45 | MAXQ_INTERSEGMENT = 4, /* Text to any other segment. */ | |
46 | MAXQ_SHORTJUMP = BFD_RELOC_16_PCREL_S2, /* PC Relative. */ | |
47 | MAXQ_LONGJUMP = 6, /* Absolute Jump. */ | |
48 | EXTERNAL_RELOC = 8, | |
49 | INTERSEGMENT_RELOC | |
50 | } | |
51 | RELOC_ENUM; | |
52 | ||
7499d566 NC |
53 | #ifndef MAX_STACK |
54 | #define MAX_STACK 0xf | |
55 | #endif | |
56 | ||
57 | #ifndef TC_MAXQ20 | |
58 | #define TC_MAXQ20 1 | |
59 | #endif | |
60 | ||
61 | #ifndef MAX_OPERAND_SIZE | |
62 | #define MAX_OPERAND_SIZE 255 | |
63 | #endif | |
64 | ||
65 | #ifndef MAXQ_INSTRUCTION_SIZE | |
66 | #define MAXQ_INSTRUCTION_SIZE 2 /* 16 - BITS */ | |
67 | #endif | |
68 | ||
69 | #if MAXQ_INSTRUCTION_SIZE | |
70 | #define MAXQ_OCTETS_PER_BYTE MAXQ_INSTRUCTION_SIZE | |
71 | #else | |
72 | #define MAXQ_OCTETS_PER_BYTE OCTETS_PER_BYTE | |
73 | #endif | |
74 | ||
75 | /* if this macro is defined gas will use this instead of comment_chars. */ | |
76 | #define tc_comments_chars maxq20_comment_chars | |
77 | ||
78 | #define tc_coff_symbol_emit_hook(a) ; /* not used */ | |
79 | ||
80 | #define md_section_align(SEGMENT, SIZE) (SIZE) | |
81 | ||
82 | /* Locally defined symbol shoudnot be adjusted to section symbol. */ | |
83 | #define tc_fix_adjustable(FIX) 0 | |
84 | ||
7499d566 NC |
85 | /* This specifies that the target has been defined as little endian - |
86 | default. */ | |
87 | #define TARGET_BYTES_BIG_ENDIAN 0 | |
88 | ||
89 | #define MAX_MEM_NAME_SIZE 12 | |
90 | #define MAX_REG_NAME_SIZE 7 | |
91 | #define MAX_MNEM_SIZE 8 | |
92 | ||
93 | #define END_OF_INSN '\0' | |
94 | ||
95 | /* This macro is the BFD archetectureto pass to 'bfd_set_arch_mach'. */ | |
96 | #define TARGET_ARCH bfd_arch_maxq | |
97 | ||
98 | /* This macro is the BFD machine number to pass to 'bfd_set_arch_mach'. | |
99 | If not defines GAS will use 0. */ | |
100 | #define TARGET_MACH maxq20_mach () | |
101 | extern unsigned long maxq20_mach (void); | |
102 | ||
7499d566 NC |
103 | #ifndef LEX_AT |
104 | /* We define this macro to generate a fixup for a data allocation pseudo-op. */ | |
105 | #define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) maxq20_cons_fix_new (FRAG,OFF,LEN,EXP) | |
106 | extern void maxq20_cons_fix_new (fragS *, unsigned int, unsigned int, expressionS *); | |
107 | #endif | |
108 | ||
109 | /* Define md_number_to_chars as the appropriate standard big endian or This | |
110 | should just call either `number_to_chars_bigendian' or | |
111 | `number_to_chars_littleendian', whichever is appropriate. On targets like | |
112 | the MIPS which support options to change the endianness, which function to | |
113 | call is a runtime decision. On other targets, `md_number_to_chars' can be | |
114 | a simple macro. */ | |
115 | #define md_number_to_chars maxq_number_to_chars | |
116 | extern void maxq_number_to_chars (char *, valueT, int); | |
117 | ||
118 | /* If this macro is defined, it is a pointer to a NULL terminated list of | |
708587a4 KH |
119 | characters which may appear in an operand. GAS already assumes that all |
120 | alphanumeric characters, and '$', '.', and '_' may appear in an | |
7499d566 | 121 | operand("symbol_char"in app.c). This macro may be defined to treat |
708587a4 | 122 | additional characters as appearing in an operand. This affects the way in |
7499d566 NC |
123 | which GAS removes whitespaces before passing the string to md_assemble. */ |
124 | #define tc_symbol_chars_extra_symbol_chars | |
125 | ||
126 | /* Define away the call to md_operand in the expression parsing code. This is | |
127 | called whenever the expression parser can't parse the input and gives the | |
128 | assembler backend a chance to deal with it instead. */ | |
129 | #define md_operand(x) | |
130 | ||
131 | #define MAX_OPERANDS 2 /* Max operands per instruction. */ | |
132 | #define MAX_IMMEDIATE_OPERANDS 1 /* Max immediate operands per instruction. */ | |
133 | #define MAX_MEMORY_OPERANDS 1 /* Max memory operands per instruction. */ | |
134 | ||
135 | /* Define the prefix we are using while trying to use an immediate value in | |
136 | an instruction. e.g move A[0], #03h. */ | |
137 | #define IMMEDIATE_PREFIX '#' | |
138 | ||
139 | #define ABSOLUTE_PREFIX '@' | |
140 | ||
141 | /* This here defines the opcode of the nop operation on the MAXQ. We did | |
142 | declare it here when we tried to fill the align bites with nop's but GAS | |
143 | only expects nop's to be single byte instruction. */ | |
144 | #define NOP_OPCODE (char)0xDA3A | |
145 | ||
146 | #define SIZE_OF_PM sizeof(pmodule) /* Size of the structure. */ | |
147 | ||
148 | #endif /* TC_MAXQ_H */ |