|
|
1.1 root 1: /* hppa-aux.h -- Assembler for the PA - PA-RISC specific support routines
2: Copyright (C) 1989 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 1, 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
18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19:
20: /*
21: HP PA-RISC support was contributed by the Center for Software Science
22: at the University of Utah.
23: */
24:
25: /* HP-PA support for Mach-O ... USV */
26:
27: #ifndef HPPA_AUX_DEFINED
28: #define HPPA_AUX_DEFINED
29:
30: typedef enum FPOF { SGL, DBL, ILLEGAL_FMT, QUAD } FP_Operand_Format;
31:
32: int pa_parse_number();
33:
34: int pa_parse_fp_cmp_cond();
35:
36: FP_Operand_Format pa_parse_fp_format();
37:
38: int pa_parse_nullif();
39:
40: int pa_parse_nonneg_cmpsub_cmpltr();
41:
42: int pa_parse_neg_cmpsub_cmpltr();
43:
44: int pa_parse_nonneg_add_cmpltr();
45:
46: int pa_parse_neg_add_cmpltr();
47:
48: /* A structure used during assembly of individual instructions */
49:
50: struct pa_it {
51: char *error;
52: unsigned long opcode;
53: #ifdef undef
54: symbol_dictS *nlistp; /*** used to be: struct nlist *nlistp; */
55: #else
56: struct nlist *nlistp;
57: #endif
58: expressionS exp;
59: int pcrel;
60: int pcrel_reloc;
61: FP_Operand_Format fpof1; /* Floating Point Operand Format, operand 1 */
62: FP_Operand_Format fpof2; /* Floating Point Operand Format, operand 2 */
63: /* (used only for class 1 instructions -- */
64: /* the conversion instructions) */
65: long field_selector;
66: unsigned int reloc;
67: /* enum reloc_type_hppa reloc; */
68: int code;
69: long arg_reloc;
70: };
71:
72: extern struct pa_it the_insn;
73:
74: /*
75: PA-89 floating point registers are arranged like this:
76:
77:
78: +--------------+--------------+
79: | 0 or 16L | 16 or 16R |
80: +--------------+--------------+
81: | 1 or 17L | 17 or 17R |
82: +--------------+--------------+
83: | | |
84:
85: . . .
86: . . .
87: . . .
88:
89: | | |
90: +--------------+--------------+
91: | 14 or 30L | 30 or 30R |
92: +--------------+--------------+
93: | 15 or 31L | 31 or 31R |
94: +--------------+--------------+
95:
96:
97: The following is a version of pa_parse_number that
98: handles the L/R notation and returns the correct
99: value to put into the instruction register field.
100: The correct value to put into the instruction is
101: encoded in the structure 'pa_89_fp_reg_struct'.
102:
103: */
104:
105: struct pa_89_fp_reg_struct {
106: char number_part;
107: char L_R_select;
108: };
109:
110: int need_89_opcode();
111: int pa_89_parse_number();
112:
113: extern int getAbsoluteExpression(
114: char *str);
115: extern int evaluateAbsolute(
116: expressionS exp,
117: int field_selector);
118: extern int getExpression(
119: char *str);
120:
121: #endif /* HPPA_AUX_DEFINED */
122:
123: /* end hppa-aux.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.