source: trunk/binutils/gas/config/tc-m68hc11.h@ 2562

Last change on this file since 2562 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 4.5 KB
Line 
1/* tc-m68hc11.h -- Header file for tc-m68hc11.c.
2 Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
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 the Free
18 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#define TC_M68HC11
22#define TC_M68HC12
23
24#ifdef ANSI_PROTOTYPES
25struct fix;
26#endif
27
28/* Define TC_M68K so that we can use the MRI mode. */
29#define TC_M68K
30
31#define TARGET_BYTES_BIG_ENDIAN 1
32
33/* Motorola assembler specs does not require '.' before pseudo-ops. */
34#define NO_PSEUDO_DOT 1
35
36#if 0
37/* Treat the single quote as a string delimiter.
38 ??? This does not work at all. */
39#define SINGLE_QUOTE_STRINGS 1
40#endif
41
42#ifndef BFD_ASSEMBLER
43#error M68HC11 support requires BFD_ASSEMBLER
44#endif
45
46/* The target BFD architecture. */
47#define TARGET_ARCH (m68hc11_arch ())
48extern enum bfd_architecture m68hc11_arch PARAMS ((void));
49
50#define TARGET_MACH (m68hc11_mach ())
51extern int m68hc11_mach PARAMS ((void));
52
53#define TARGET_FORMAT (m68hc11_arch_format ())
54extern const char *m68hc11_arch_format PARAMS ((void));
55
56/* Specific sections:
57 - The .page0 is a data section that is mapped in [0x0000..0x00FF].
58 Page0 accesses are faster on the M68HC11. Soft registers used by GCC-m6811
59 are located in .page0.
60 - The .vectors is the data section that represents the interrupt
61 vectors. */
62#define ELF_TC_SPECIAL_SECTIONS \
63 { ".eeprom", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \
64 { ".softregs",SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, \
65 { ".page0", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \
66 { ".vectors", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE },
67
68#define LISTING_WORD_SIZE 1 /* A word is 1 bytes */
69#define LISTING_LHS_WIDTH 4 /* One word on the first line */
70#define LISTING_LHS_WIDTH_SECOND 4 /* One word on the second line */
71#define LISTING_LHS_CONT_LINES 4 /* And 4 lines max */
72#define LISTING_HEADER m68hc11_listing_header ()
73extern const char *m68hc11_listing_header PARAMS ((void));
74
75/* Permit temporary numeric labels. */
76#define LOCAL_LABELS_FB 1
77
78#define tc_init_after_args m68hc11_init_after_args
79extern void m68hc11_init_after_args PARAMS ((void));
80
81#define md_parse_long_option m68hc11_parse_long_option
82extern int m68hc11_parse_long_option PARAMS ((char *));
83
84#define DWARF2_LINE_MIN_INSN_LENGTH 1
85
86/* We don't need to handle .word strangely. */
87#define WORKING_DOT_WORD
88
89#define md_number_to_chars number_to_chars_bigendian
90
91/* Relax table to translate short relative branches (-128..127) into
92 absolute branches. */
93#define TC_GENERIC_RELAX_TABLE md_relax_table
94extern struct relax_type md_relax_table[];
95
96/* GAS only handles relaxations for pc-relative data targeting addresses
97 in the same segment, so we have to handle the rest on our own. */
98#define md_relax_frag(SEG, FRAGP, STRETCH) \
99 ((FRAGP)->fr_symbol != NULL \
100 && S_GET_SEGMENT ((FRAGP)->fr_symbol) == (SEG) \
101 ? relax_frag (SEG, FRAGP, STRETCH) \
102 : m68hc11_relax_frag (SEG, FRAGP, STRETCH))
103extern long m68hc11_relax_frag PARAMS ((segT, fragS*, long));
104
105#define TC_HANDLES_FX_DONE
106
107#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */
108
109/* Values passed to md_apply_fix3 don't include the symbol value. */
110#define MD_APPLY_SYM_VALUE(FIX) 0
111
112/* No shared lib support, so we don't need to ensure externally
113 visible symbols can be overridden. */
114#define EXTERN_FORCE_RELOC 0
115
116#define TC_FORCE_RELOCATION(fix) tc_m68hc11_force_relocation (fix)
117extern int tc_m68hc11_force_relocation PARAMS ((struct fix *));
118
119#define tc_fix_adjustable(X) tc_m68hc11_fix_adjustable(X)
120extern int tc_m68hc11_fix_adjustable PARAMS ((struct fix *));
121
122#define md_operand(x)
123#define tc_frob_label(sym) do {\
124 S_SET_VALUE (sym, (valueT) frag_now_fix ()); \
125} while (0)
126
127#define elf_tc_final_processing m68hc11_elf_final_processing
128extern void m68hc11_elf_final_processing PARAMS ((void));
129
130#define tc_print_statistics(FILE) m68hc11_print_statistics (FILE)
131extern void m68hc11_print_statistics PARAMS ((FILE *));
Note: See TracBrowser for help on using the repository browser.