| 1 | /* tc-maxq.h -- Header file for the assembler(MAXQ) |
| 2 | |
| 3 | Copyright 2004, 2005 Free Software Foundation, Inc. |
| 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 |
| 23 | Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ |
| 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 | |
| 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 | |
| 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 | |
| 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 |
| 119 | characters which may appear in an operand. GAS already assumes that all |
| 120 | alphanumeric characters, and '$', '.', and '_' may appear in an |
| 121 | operand("symbol_char"in app.c). This macro may be defined to treat |
| 122 | additional characters as appearing in an operand. This affects the way in |
| 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 */ |