12a6b7db3Sskrll /* This file is obj-evax.h
2*f22f0ef4Schristos    Copyright (C) 1996-2022 Free Software Foundation, Inc.
32a6b7db3Sskrll    Contributed by Klaus K�mpf (kkaempf@progis.de) of
42a6b7db3Sskrll      proGIS Software, Aachen, Germany.
52a6b7db3Sskrll 
62a6b7db3Sskrll    This file is part of GAS, the GNU Assembler.
72a6b7db3Sskrll 
82a6b7db3Sskrll    GAS is free software; you can redistribute it and/or modify
92a6b7db3Sskrll    it under the terms of the GNU General Public License as published by
102a6b7db3Sskrll    the Free Software Foundation; either version 3, or (at your option)
112a6b7db3Sskrll    any later version.
122a6b7db3Sskrll 
132a6b7db3Sskrll    GAS is distributed in the hope that it will be useful,
142a6b7db3Sskrll    but WITHOUT ANY WARRANTY; without even the implied warranty of
152a6b7db3Sskrll    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
162a6b7db3Sskrll    GNU General Public License for more details.
172a6b7db3Sskrll 
182a6b7db3Sskrll    You should have received a copy of the GNU General Public License
192a6b7db3Sskrll    along with GAS; see the file COPYING.  If not, write to
202a6b7db3Sskrll    the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
212a6b7db3Sskrll    MA 02110-1301, USA.  */
222a6b7db3Sskrll 
232a6b7db3Sskrll /*
242a6b7db3Sskrll  * This file is obj-evax.h and is intended to be a template for
252a6b7db3Sskrll  * object format specific header files.
262a6b7db3Sskrll  */
272a6b7db3Sskrll 
28b578a859Schristos #include "as.h"
29b578a859Schristos 
302a6b7db3Sskrll /* define an obj specific macro off which target cpu back ends may key.  */
312a6b7db3Sskrll #define OBJ_EVAX 1
322a6b7db3Sskrll 
332a6b7db3Sskrll /* include whatever target cpu is appropriate.  */
342a6b7db3Sskrll #include "targ-cpu.h"
352a6b7db3Sskrll 
362a6b7db3Sskrll #define OUTPUT_FLAVOR bfd_target_evax_flavour
372a6b7db3Sskrll 
38b578a859Schristos struct fix;
39b578a859Schristos 
4005caefcfSchristos /* Simply linked list of .linkage.  */
41b578a859Schristos struct alpha_linkage_fixups
42b578a859Schristos {
4305caefcfSchristos   /* Next entry.  */
44b578a859Schristos   struct alpha_linkage_fixups *next;
4505caefcfSchristos 
4605caefcfSchristos   /* Corresponding fixup.  */
47b578a859Schristos   struct fix *fixp;
4805caefcfSchristos 
4905caefcfSchristos   /* Label that designates this entry.
5005caefcfSchristos      Note that a linkage entry can only be designated by one label.
5105caefcfSchristos      Also, s_alpha_linkage force the creation of a label.  */
52b578a859Schristos   symbolS *label;
53b578a859Schristos };
54b578a859Schristos 
552a6b7db3Sskrll /*
562a6b7db3Sskrll  * SYMBOLS
572a6b7db3Sskrll  */
582a6b7db3Sskrll 
592a6b7db3Sskrll /*
602a6b7db3Sskrll  * If your object format needs to reorder symbols, define this.  When
612a6b7db3Sskrll  * defined, symbols are kept on a doubly linked list and functions are
622a6b7db3Sskrll  * made available for push, insert, append, and delete.  If not defined,
632a6b7db3Sskrll  * symbols are kept on a singly linked list, only the append and clear
642a6b7db3Sskrll  * facilities are available, and they are macros.
652a6b7db3Sskrll  */
662a6b7db3Sskrll 
672a6b7db3Sskrll /* #define SYMBOLS_NEED_PACKPOINTERS */
682a6b7db3Sskrll 
692a6b7db3Sskrll #define OBJ_EMIT_LINENO(a,b,c)	/* must be *something*.  This no-op's it out.  */
702a6b7db3Sskrll 
71b578a859Schristos #define obj_symbol_new_hook(s)       evax_symbol_new_hook (s)
72b578a859Schristos #define obj_frob_symbol(s,p)         evax_frob_symbol (s, &p)
73b578a859Schristos #define obj_frob_file_before_adjust  evax_frob_file_before_adjust
74b578a859Schristos #define obj_frob_file_before_fix     evax_frob_file_before_fix
75b578a859Schristos 
762a6b7db3Sskrll #define S_GET_OTHER(S)	0
772a6b7db3Sskrll #define S_GET_TYPE(S)	0
782a6b7db3Sskrll #define S_GET_DESC(S)	0
792a6b7db3Sskrll 
802a6b7db3Sskrll #define PDSC_S_K_KIND_FP_STACK 9
812a6b7db3Sskrll #define PDSC_S_K_KIND_FP_REGISTER 10
822a6b7db3Sskrll #define PDSC_S_K_KIND_NULL 8
832a6b7db3Sskrll 
842a6b7db3Sskrll #define PDSC_S_K_MIN_STACK_SIZE 32
852a6b7db3Sskrll #define PDSC_S_K_MIN_REGISTER_SIZE 24
862a6b7db3Sskrll #define PDSC_S_K_NULL_SIZE 16
872a6b7db3Sskrll 
88b578a859Schristos #define PDSC_S_M_HANDLER_VALID 0x10		/* low byte */
89b578a859Schristos #define PDSC_S_M_HANDLER_DATA_VALID 0x40	/* low byte */
902a6b7db3Sskrll #define PDSC_S_M_BASE_REG_IS_FP 0x80		/* low byte */
912a6b7db3Sskrll #define PDSC_S_M_NATIVE 0x10		/* high byte */
922a6b7db3Sskrll #define PDSC_S_M_NO_JACKET 0x20		/* high byte */
932a6b7db3Sskrll 
942a6b7db3Sskrll #define LKP_S_K_SIZE 16
952a6b7db3Sskrll 
96b578a859Schristos extern segT alpha_link_section;
97b578a859Schristos extern struct alpha_linkage_fixups *alpha_linkage_fixup_root;
98b578a859Schristos 
99b578a859Schristos extern void evax_section (int);
100b578a859Schristos extern void evax_symbol_new_hook (symbolS *);
101b578a859Schristos extern void evax_frob_symbol (symbolS *, int *);
102b578a859Schristos extern void evax_frob_file_before_adjust (void);
103b578a859Schristos extern void evax_frob_file_before_fix (void);
104b578a859Schristos extern char *evax_shorten_name (char *);
1052a6b7db3Sskrll 
1062a6b7db3Sskrll /*
1072a6b7db3Sskrll  * Local Variables:
1082a6b7db3Sskrll  * comment-column: 0
1092a6b7db3Sskrll  * fill-column: 131
1102a6b7db3Sskrll  * End:
1112a6b7db3Sskrll  */
112