1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 /*
28  * Copyright 2007 Jason King.  All rights reserved.
29  * Use is subject to license terms.
30  */
31 
32 
33 #ifndef _DIS_SPARC_H
34 #define	_DIS_SPARC_H
35 
36 #ifdef	__cplusplus
37 extern "C" {
38 #endif
39 
40 #include <sys/types.h>
41 
42 #define	DIS_DEBUG_NONE		0x00L
43 #define	DIS_DEBUG_COMPAT	0x01L
44 #define	DIS_DEBUG_SYN_ALL	0x02L
45 #define	DIS_DEBUG_PRTBIN	0x04L
46 #define	DIS_DEBUG_PRTFMT	0x08L
47 
48 #define	DIS_DEBUG_ALL DIS_DEBUG_SYN_ALL|DIS_DEBUG_PRTBIN|DIS_DEBUG_PRTFMT
49 
50 typedef struct dis_handle_sparc {
51 	char		*dhx_buf;
52 	size_t		dhx_buflen;
53 	int		dhx_debug;
54 } dis_handle_sparc_t;
55 
56 /* different types of things we can have in inst_t */
57 #define	INST_NONE	0x00
58 #define	INST_DEF	0x01
59 #define	INST_TBL	0x02
60 
61 struct inst;
62 struct overlay;
63 
64 typedef struct inst inst_t;
65 typedef struct overlay overlay_t;
66 
67 typedef int (*format_fcn)(dis_handle_t *, uint32_t, const inst_t *, int);
68 
69 typedef struct table {
70 	const struct inst	*tbl_inp;
71 	const struct overlay	*tbl_ovp;
72 	format_fcn		tbl_fmt;
73 	uint32_t		tbl_field;
74 	uint32_t		tbl_len;
75 } table_t;
76 
77 struct inst {
78 	int in_type;
79 	int in_arch;
80 	union {
81 		struct {
82 			const char	*in_name;
83 			uint32_t	in_flags;
84 		} in_def;
85 		const table_t *in_tbl;
86 	} in_data;
87 };
88 
89 struct overlay {
90 	int	ov_idx;
91 	inst_t	ov_inst;
92 };
93 
94 extern const table_t initial_table;
95 
96 void prt_binary(uint32_t, int);
97 #ifdef	__cplusplus
98 }
99 #endif
100 
101 #endif	/* _DIS_SPARC_H */
102