Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
scsi
aic7xxx
aicasm
aicasm_symbol.h
Go to the documentation of this file.
1
/*
2
* Aic7xxx SCSI host adapter firmware assembler symbol table definitions
3
*
4
* Copyright (c) 1997 Justin T. Gibbs.
5
* Copyright (c) 2002 Adaptec Inc.
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions, and the following disclaimer,
13
* without modification.
14
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
15
* substantially similar to the "NO WARRANTY" disclaimer below
16
* ("Disclaimer") and any redistribution must be conditioned upon
17
* including a substantially similar Disclaimer requirement for further
18
* binary redistribution.
19
* 3. Neither the names of the above-listed copyright holders nor the names
20
* of any contributors may be used to endorse or promote products derived
21
* from this software without specific prior written permission.
22
*
23
* Alternatively, this software may be distributed under the terms of the
24
* GNU General Public License ("GPL") version 2 as published by the Free
25
* Software Foundation.
26
*
27
* NO WARRANTY
28
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
31
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
37
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38
* POSSIBILITY OF SUCH DAMAGES.
39
*
40
* $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm_symbol.h#17 $
41
*
42
* $FreeBSD$
43
*/
44
45
#ifdef __linux__
46
#include "../queue.h"
47
#else
48
#include <sys/queue.h>
49
#endif
50
51
typedef
enum
{
52
UNINITIALIZED
,
53
REGISTER
,
54
ALIAS
,
55
SCBLOC
,
56
SRAMLOC
,
57
ENUM_ENTRY
,
58
FIELD
,
59
MASK
,
60
ENUM
,
61
CONST
,
62
DOWNLOAD_CONST
,
63
LABEL
,
64
CONDITIONAL
,
65
MACRO
66
}
symtype
;
67
68
typedef
enum
{
69
RO
= 0x01,
70
WO
= 0x02,
71
RW
= 0x03
72
}
amode_t
;
73
74
typedef
SLIST_HEAD
(symlist,
symbol_node
) symlist_t;
75
76
struct
reg_info
{
77
u_int
address
;
78
int
size
;
79
amode_t
mode
;
80
symlist_t
fields
;
81
uint8_t
valid_bitmask
;
82
uint8_t
modes
;
83
int
typecheck_masks
;
84
};
85
86
struct
field_info
{
87
symlist_t
symrefs
;
88
uint8_t
value
;
89
uint8_t
mask
;
90
};
91
92
struct
const_info
{
93
u_int
value
;
94
int
define
;
95
};
96
97
struct
alias_info
{
98
struct
symbol
*
parent
;
99
};
100
101
struct
label_info
{
102
int
address
;
103
int
exported
;
104
};
105
106
struct
cond_info
{
107
int
func_num
;
108
};
109
110
struct
macro_arg
{
111
STAILQ_ENTRY
(
macro_arg
) links;
112
regex_t
arg_regex
;
113
char
*
replacement_text
;
114
};
115
STAILQ_HEAD
(macro_arg_list,
macro_arg
) args;
116
117
struct
macro_info
{
118
struct
macro_arg_list args;
119
int
narg
;
120
const
char
*
body
;
121
};
122
123
typedef
struct
expression_info
{
124
symlist_t
referenced_syms
;
125
int
value
;
126
}
expression_t
;
127
128
typedef
struct
symbol
{
129
char
*
name
;
130
symtype
type
;
131
int
count
;
132
union
{
133
struct
reg_info
*
rinfo
;
134
struct
field_info
*
finfo
;
135
struct
const_info
*
cinfo
;
136
struct
alias_info
*
ainfo
;
137
struct
label_info
*
linfo
;
138
struct
cond_info
*
condinfo
;
139
struct
macro_info
*
macroinfo
;
140
}
info
;
141
int
dont_generate_debug_code
;
142
}
symbol_t
;
143
144
typedef
struct
symbol_ref
{
145
symbol_t
*
symbol
;
146
int
offset
;
147
}
symbol_ref_t
;
148
149
typedef
struct
symbol_node
{
150
SLIST_ENTRY
(
symbol_node
) links;
151
symbol_t
*
symbol
;
152
}
symbol_node_t
;
153
154
typedef
struct
critical_section
{
155
TAILQ_ENTRY
(
critical_section
) links;
156
int
begin_addr
;
157
int
end_addr
;
158
}
critical_section_t
;
159
160
typedef
enum
{
161
SCOPE_ROOT
,
162
SCOPE_IF
,
163
SCOPE_ELSE_IF
,
164
SCOPE_ELSE
165
}
scope_type
;
166
167
typedef
struct
patch_info
{
168
int
skip_patch
;
169
int
skip_instr
;
170
}
patch_info_t
;
171
172
typedef
struct
scope
{
173
SLIST_ENTRY
(
scope
) scope_stack_links;
174
TAILQ_ENTRY
(
scope
) scope_links;
175
TAILQ_HEAD
(,
scope
) inner_scope;
176
scope_type
type
;
177
int
inner_scope_patches
;
178
int
begin_addr
;
179
int
end_addr
;
180
patch_info_t
patches
[2];
181
int
func_num
;
182
}
scope_t
;
183
184
TAILQ_HEAD
(cs_tailq,
critical_section
);
185
SLIST_HEAD
(scope_list,
scope
);
186
TAILQ_HEAD
(scope_tailq,
scope
);
187
188
void
symbol_delete
(
symbol_t
*
symbol
);
189
190
void
symtable_open
(
void
);
191
192
void
symtable_close
(
void
);
193
194
symbol_t
*
195
symtable_get
(
char
*
name
);
196
197
symbol_node_t
*
198
symlist_search
(symlist_t *symlist,
char
*symname);
199
200
void
201
symlist_add
(symlist_t *symlist,
symbol_t
*
symbol
,
int
how);
202
#define SYMLIST_INSERT_HEAD 0x00
203
#define SYMLIST_SORT 0x01
204
205
void
symlist_free
(symlist_t *symlist);
206
207
void
symlist_merge
(symlist_t *symlist_dest, symlist_t *symlist_src1,
208
symlist_t *symlist_src2);
209
void
symtable_dump
(FILE *ofile, FILE *dfile);
Generated on Thu Jan 10 2013 14:19:09 for Linux Kernel by
1.8.2