1*56bb7041Schristos /* This file is obj-evax.h
2*56bb7041Schristos    Copyright (C) 1996-2020 Free Software Foundation, Inc.
3*56bb7041Schristos    Contributed by Klaus K�mpf (kkaempf@progis.de) of
4*56bb7041Schristos      proGIS Software, Aachen, Germany.
5*56bb7041Schristos 
6*56bb7041Schristos    This file is part of GAS, the GNU Assembler.
7*56bb7041Schristos 
8*56bb7041Schristos    GAS is free software; you can redistribute it and/or modify
9*56bb7041Schristos    it under the terms of the GNU General Public License as published by
10*56bb7041Schristos    the Free Software Foundation; either version 3, or (at your option)
11*56bb7041Schristos    any later version.
12*56bb7041Schristos 
13*56bb7041Schristos    GAS is distributed in the hope that it will be useful,
14*56bb7041Schristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
15*56bb7041Schristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*56bb7041Schristos    GNU General Public License for more details.
17*56bb7041Schristos 
18*56bb7041Schristos    You should have received a copy of the GNU General Public License
19*56bb7041Schristos    along with GAS; see the file COPYING.  If not, write to
20*56bb7041Schristos    the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21*56bb7041Schristos    MA 02110-1301, USA.  */
22*56bb7041Schristos 
23*56bb7041Schristos /*
24*56bb7041Schristos  * This file is obj-evax.h and is intended to be a template for
25*56bb7041Schristos  * object format specific header files.
26*56bb7041Schristos  */
27*56bb7041Schristos 
28*56bb7041Schristos #include "as.h"
29*56bb7041Schristos 
30*56bb7041Schristos /* define an obj specific macro off which target cpu back ends may key.  */
31*56bb7041Schristos #define OBJ_EVAX 1
32*56bb7041Schristos 
33*56bb7041Schristos /* include whatever target cpu is appropriate.  */
34*56bb7041Schristos #include "targ-cpu.h"
35*56bb7041Schristos 
36*56bb7041Schristos #define OUTPUT_FLAVOR bfd_target_evax_flavour
37*56bb7041Schristos 
38*56bb7041Schristos struct fix;
39*56bb7041Schristos 
40*56bb7041Schristos /* Simply linked list of .linkage.  */
41*56bb7041Schristos struct alpha_linkage_fixups
42*56bb7041Schristos {
43*56bb7041Schristos   /* Next entry.  */
44*56bb7041Schristos   struct alpha_linkage_fixups *next;
45*56bb7041Schristos 
46*56bb7041Schristos   /* Corresponding fixup.  */
47*56bb7041Schristos   struct fix *fixp;
48*56bb7041Schristos 
49*56bb7041Schristos   /* Label that designates this entry.
50*56bb7041Schristos      Note that a linkage entry can only be designated by one label.
51*56bb7041Schristos      Also, s_alpha_linkage force the creation of a label.  */
52*56bb7041Schristos   symbolS *label;
53*56bb7041Schristos };
54*56bb7041Schristos 
55*56bb7041Schristos /*
56*56bb7041Schristos  * SYMBOLS
57*56bb7041Schristos  */
58*56bb7041Schristos 
59*56bb7041Schristos /*
60*56bb7041Schristos  * If your object format needs to reorder symbols, define this.  When
61*56bb7041Schristos  * defined, symbols are kept on a doubly linked list and functions are
62*56bb7041Schristos  * made available for push, insert, append, and delete.  If not defined,
63*56bb7041Schristos  * symbols are kept on a singly linked list, only the append and clear
64*56bb7041Schristos  * facilities are available, and they are macros.
65*56bb7041Schristos  */
66*56bb7041Schristos 
67*56bb7041Schristos /* #define SYMBOLS_NEED_PACKPOINTERS */
68*56bb7041Schristos 
69*56bb7041Schristos #define OBJ_EMIT_LINENO(a,b,c)	/* must be *something*.  This no-op's it out.  */
70*56bb7041Schristos 
71*56bb7041Schristos #define obj_symbol_new_hook(s)       evax_symbol_new_hook (s)
72*56bb7041Schristos #define obj_frob_symbol(s,p)         evax_frob_symbol (s, &p)
73*56bb7041Schristos #define obj_frob_file_before_adjust  evax_frob_file_before_adjust
74*56bb7041Schristos #define obj_frob_file_before_fix     evax_frob_file_before_fix
75*56bb7041Schristos 
76*56bb7041Schristos #define S_GET_OTHER(S)	0
77*56bb7041Schristos #define S_GET_TYPE(S)	0
78*56bb7041Schristos #define S_GET_DESC(S)	0
79*56bb7041Schristos 
80*56bb7041Schristos #define PDSC_S_K_KIND_FP_STACK 9
81*56bb7041Schristos #define PDSC_S_K_KIND_FP_REGISTER 10
82*56bb7041Schristos #define PDSC_S_K_KIND_NULL 8
83*56bb7041Schristos 
84*56bb7041Schristos #define PDSC_S_K_MIN_STACK_SIZE 32
85*56bb7041Schristos #define PDSC_S_K_MIN_REGISTER_SIZE 24
86*56bb7041Schristos #define PDSC_S_K_NULL_SIZE 16
87*56bb7041Schristos 
88*56bb7041Schristos #define PDSC_S_M_HANDLER_VALID 0x10		/* low byte */
89*56bb7041Schristos #define PDSC_S_M_HANDLER_DATA_VALID 0x40	/* low byte */
90*56bb7041Schristos #define PDSC_S_M_BASE_REG_IS_FP 0x80		/* low byte */
91*56bb7041Schristos #define PDSC_S_M_NATIVE 0x10		/* high byte */
92*56bb7041Schristos #define PDSC_S_M_NO_JACKET 0x20		/* high byte */
93*56bb7041Schristos 
94*56bb7041Schristos #define LKP_S_K_SIZE 16
95*56bb7041Schristos 
96*56bb7041Schristos extern segT alpha_link_section;
97*56bb7041Schristos extern struct alpha_linkage_fixups *alpha_linkage_fixup_root;
98*56bb7041Schristos 
99*56bb7041Schristos extern void evax_section (int);
100*56bb7041Schristos extern void evax_symbol_new_hook (symbolS *);
101*56bb7041Schristos extern void evax_frob_symbol (symbolS *, int *);
102*56bb7041Schristos extern void evax_frob_file_before_adjust (void);
103*56bb7041Schristos extern void evax_frob_file_before_fix (void);
104*56bb7041Schristos extern char *evax_shorten_name (char *);
105*56bb7041Schristos 
106*56bb7041Schristos /*
107*56bb7041Schristos  * Local Variables:
108*56bb7041Schristos  * comment-column: 0
109*56bb7041Schristos  * fill-column: 131
110*56bb7041Schristos  * End:
111*56bb7041Schristos  */
112