]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/binutils/gas/config/tc-alpha.h
This commit was generated by cvs2svn to compensate for changes in r52746,
[FreeBSD/FreeBSD.git] / contrib / binutils / gas / config / tc-alpha.h
1 /* This file is tc-alpha.h
2    Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
3    Written by Ken Raeburn <raeburn@cygnus.com>.
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, 59 Temple Place - Suite 330, Boston, MA
20    02111-1307, USA.  */
21
22 #define TC_ALPHA
23
24 #define TARGET_BYTES_BIG_ENDIAN 0
25
26 #define TARGET_ARCH                     bfd_arch_alpha
27
28 #define TARGET_FORMAT (OUTPUT_FLAVOR == bfd_target_ecoff_flavour        \
29                        ? "ecoff-littlealpha"                            \
30                        : OUTPUT_FLAVOR == bfd_target_elf_flavour        \
31                        ? "elf64-alpha"                                  \
32                        : OUTPUT_FLAVOR == bfd_target_evax_flavour       \
33                        ? "evax-alpha"                                   \
34                        : "unknown-format")
35
36 #define NEED_LITERAL_POOL
37 #define TC_HANDLES_FX_DONE
38 #define REPEAT_CONS_EXPRESSIONS
39
40 extern int alpha_force_relocation PARAMS ((struct fix *));
41 extern int alpha_fix_adjustable PARAMS ((struct fix *));
42
43 extern unsigned long alpha_gprmask, alpha_fprmask;
44 extern valueT alpha_gp_value;
45
46 #define TC_FORCE_RELOCATION(FIXP)       alpha_force_relocation (FIXP)
47 #define tc_fix_adjustable(FIXP)         alpha_fix_adjustable (FIXP)
48 #define RELOC_REQUIRES_SYMBOL
49
50 #define md_convert_frag(b,s,f)          as_fatal ("alpha convert_frag\n")
51 #define md_create_long_jump(p,f,t,fr,s) as_fatal("alpha_create_long_jump")
52 #define md_create_short_jump(p,f,t,fr,s) as_fatal("alpha_create_short_jump")
53 #define md_estimate_size_before_relax(f,s) \
54                         (as_fatal("estimate_size_before_relax called"),1)
55 #define md_operand(x)
56
57 #ifdef OBJ_EVAX
58
59 /* This field keeps the symbols position in the link section.  */
60 #define OBJ_SYMFIELD_TYPE valueT
61
62 #define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) \
63       fix_new_exp (FRAG, OFF, (int)LEN, EXP, 0, \
64         LEN == 2 ? BFD_RELOC_16 \
65         : LEN == 4 ? BFD_RELOC_32 \
66         : LEN == 8 ? BFD_RELOC_64 \
67         : BFD_RELOC_ALPHA_LINKAGE);
68 #endif
69
70 #define md_number_to_chars              number_to_chars_littleendian
71
72 extern int tc_get_register PARAMS ((int frame));
73 extern void alpha_frob_ecoff_data PARAMS ((void));
74
75 #define tc_frob_label(sym) alpha_define_label (sym)
76 extern void alpha_define_label PARAMS ((struct symbol *));
77
78 #define md_cons_align(nbytes) alpha_cons_align (nbytes)
79 extern void alpha_cons_align PARAMS ((int));
80
81 #ifdef OBJ_ECOFF
82 #define tc_frob_file_before_adjust() alpha_frob_file_before_adjust ()
83 extern void alpha_frob_file_before_adjust PARAMS ((void));
84 #endif
85
86 #define DIFF_EXPR_OK   /* foo-. gets turned into PC relative relocs */
87
88 #ifdef OBJ_ELF
89 #define ELF_TC_SPECIAL_SECTIONS \
90   { ".sdata",   SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL  }, \
91   { ".sbss",    SHT_NOBITS,     SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL  },
92 #endif