xref: /onnv-gate/usr/src/lib/libc/amd64/unwind/reg_num.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24*0Sstevel@tonic-gate  * Use is subject to license terms.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate /*
28*0Sstevel@tonic-gate  * DWARF register numbers for AMD64
29*0Sstevel@tonic-gate  */
30*0Sstevel@tonic-gate 
31*0Sstevel@tonic-gate #ifndef _REG_NUM_H
32*0Sstevel@tonic-gate #define	_REG_NUM_H
33*0Sstevel@tonic-gate 
34*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
35*0Sstevel@tonic-gate 
36*0Sstevel@tonic-gate /*
37*0Sstevel@tonic-gate  * Dwarf register numbers for AMD64
38*0Sstevel@tonic-gate  * Only those with trailing comments are actually tracked
39*0Sstevel@tonic-gate  */
40*0Sstevel@tonic-gate #define	GPR_RAX	0
41*0Sstevel@tonic-gate #define	GPR_RDX	1
42*0Sstevel@tonic-gate #define	GPR_RCX	2
43*0Sstevel@tonic-gate #define	GPR_RBX	3	/* callee saves */
44*0Sstevel@tonic-gate #define	GPR_RSI	4
45*0Sstevel@tonic-gate #define	GPR_RDI	5
46*0Sstevel@tonic-gate #define	FP_RBP	6	/* callee saves (optional frame pointer) */
47*0Sstevel@tonic-gate #define	SP_RSP	7	/* stack pointer */
48*0Sstevel@tonic-gate #define	EIR_R8	8
49*0Sstevel@tonic-gate #define	EIR_R9	9
50*0Sstevel@tonic-gate #define	EIR_R10	10
51*0Sstevel@tonic-gate #define	EIR_R11	11
52*0Sstevel@tonic-gate #define	EIR_R12	12	/* callee saves */
53*0Sstevel@tonic-gate #define	EIR_R13	13	/* callee saves */
54*0Sstevel@tonic-gate #define	EIR_R14	14	/* callee saves */
55*0Sstevel@tonic-gate #define	EIR_R15	15	/* callee saves */
56*0Sstevel@tonic-gate #define	RET_ADD	16	/* virtual register - really caller's PC */
57*0Sstevel@tonic-gate #define	CF_ADDR	17	/* virtual register - tracks frame location */
58*0Sstevel@tonic-gate 
59*0Sstevel@tonic-gate #if 0
60*0Sstevel@tonic-gate #define	SSE_XMM0	17
61*0Sstevel@tonic-gate #define	SSE_XMM1	18
62*0Sstevel@tonic-gate #define	SSE_XMM2	19
63*0Sstevel@tonic-gate #define	SSE_XMM3	20
64*0Sstevel@tonic-gate #define	SSE_XMM4	21
65*0Sstevel@tonic-gate #define	SSE_XMM5	22
66*0Sstevel@tonic-gate #define	SSE_XMM6	23
67*0Sstevel@tonic-gate #define	SSE_XMM7	24
68*0Sstevel@tonic-gate #define	SSE_XMM8	25
69*0Sstevel@tonic-gate #define	SSE_XMM9	26
70*0Sstevel@tonic-gate #define	SSE_XMM10	27
71*0Sstevel@tonic-gate #define	SSE_XMM11	28
72*0Sstevel@tonic-gate #define	SSE_XMM12	29
73*0Sstevel@tonic-gate #define	SSE_XMM13	30
74*0Sstevel@tonic-gate #define	SSE_XMM14	31
75*0Sstevel@tonic-gate #define	SSE_XMM15	32
76*0Sstevel@tonic-gate #define	FP_ST0		33
77*0Sstevel@tonic-gate #define	FP_ST1		34
78*0Sstevel@tonic-gate #define	FP_ST2		35
79*0Sstevel@tonic-gate #define	FP_ST3		36
80*0Sstevel@tonic-gate #define	FP_ST4		37
81*0Sstevel@tonic-gate #define	FP_ST5		38
82*0Sstevel@tonic-gate #define	FP_ST6		39
83*0Sstevel@tonic-gate #define	FP_ST7		40
84*0Sstevel@tonic-gate #define	MMX_MMN0	41
85*0Sstevel@tonic-gate #define	MMX_MMN1	42
86*0Sstevel@tonic-gate #define	MMX_MMN2	43
87*0Sstevel@tonic-gate #define	MMX_MMN3	44
88*0Sstevel@tonic-gate #define	MMX_MMN4	45
89*0Sstevel@tonic-gate #define	MMX_MMN5	46
90*0Sstevel@tonic-gate #define	MMX_MMN6	47
91*0Sstevel@tonic-gate #define	MMX_MMN7	48
92*0Sstevel@tonic-gate #endif
93*0Sstevel@tonic-gate #define	BAD_REG		49
94*0Sstevel@tonic-gate 
95*0Sstevel@tonic-gate /*
96*0Sstevel@tonic-gate  * register arrays used in support routines contain 16 8-byte slots
97*0Sstevel@tonic-gate  * indexed from GPR_RAX to EIR_R15
98*0Sstevel@tonic-gate  *
99*0Sstevel@tonic-gate  *	%rax	0	0	<undefined>
100*0Sstevel@tonic-gate  *	%rdx	1	8	handler parameter
101*0Sstevel@tonic-gate  *	%rcx	2	16	handler parameter
102*0Sstevel@tonic-gate  *	%rbx	3	24	preserved
103*0Sstevel@tonic-gate  *	%rsi	4	32	handler parameter
104*0Sstevel@tonic-gate  *	%rdi	5	40	handler parameter
105*0Sstevel@tonic-gate  *	%rbp	6	48	frame pointer
106*0Sstevel@tonic-gate  *	%rsp	7	56	stack pointer
107*0Sstevel@tonic-gate  *	%r8	8	64	<undefined>
108*0Sstevel@tonic-gate  *	%r9	9	72	<undefined>
109*0Sstevel@tonic-gate  *	%r10	10	80	<undefined>
110*0Sstevel@tonic-gate  *	%r11	11	88	<undefined>
111*0Sstevel@tonic-gate  *	%r12	12	96	preserved
112*0Sstevel@tonic-gate  *	%r13	13	104	preserved
113*0Sstevel@tonic-gate  *	%r14	14	112	preserved
114*0Sstevel@tonic-gate  *	%r15	15	120	preserved
115*0Sstevel@tonic-gate  *
116*0Sstevel@tonic-gate  * register state arrays used to hold propagation information
117*0Sstevel@tonic-gate  * have two additional elements (indices RET_ADD and CF_ADDR)
118*0Sstevel@tonic-gate  */
119*0Sstevel@tonic-gate 
120*0Sstevel@tonic-gate #endif	/* _REG_NUM_H */
121