xref: /dragonfly/sys/cpu/x86_64/include/reg.h (revision c66c7e2f)
1b2b3ffcdSSimon Schubert /*-
2b2b3ffcdSSimon Schubert  * Copyright (c) 2003 Peter Wemm.
3b2b3ffcdSSimon Schubert  * Copyright (c) 1990 The Regents of the University of California.
4b2b3ffcdSSimon Schubert  * All rights reserved.
5b2b3ffcdSSimon Schubert  *
6b2b3ffcdSSimon Schubert  * This code is derived from software contributed to Berkeley by
7b2b3ffcdSSimon Schubert  * William Jolitz.
8b2b3ffcdSSimon Schubert  *
9b2b3ffcdSSimon Schubert  * Redistribution and use in source and binary forms, with or without
10b2b3ffcdSSimon Schubert  * modification, are permitted provided that the following conditions
11b2b3ffcdSSimon Schubert  * are met:
12b2b3ffcdSSimon Schubert  * 1. Redistributions of source code must retain the above copyright
13b2b3ffcdSSimon Schubert  *    notice, this list of conditions and the following disclaimer.
14b2b3ffcdSSimon Schubert  * 2. Redistributions in binary form must reproduce the above copyright
15b2b3ffcdSSimon Schubert  *    notice, this list of conditions and the following disclaimer in the
16b2b3ffcdSSimon Schubert  *    documentation and/or other materials provided with the distribution.
17*c66c7e2fSzrj  * 3. Neither the name of the University nor the names of its contributors
18b2b3ffcdSSimon Schubert  *    may be used to endorse or promote products derived from this software
19b2b3ffcdSSimon Schubert  *    without specific prior written permission.
20b2b3ffcdSSimon Schubert  *
21b2b3ffcdSSimon Schubert  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22b2b3ffcdSSimon Schubert  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23b2b3ffcdSSimon Schubert  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24b2b3ffcdSSimon Schubert  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25b2b3ffcdSSimon Schubert  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26b2b3ffcdSSimon Schubert  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27b2b3ffcdSSimon Schubert  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28b2b3ffcdSSimon Schubert  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29b2b3ffcdSSimon Schubert  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30b2b3ffcdSSimon Schubert  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31b2b3ffcdSSimon Schubert  * SUCH DAMAGE.
32b2b3ffcdSSimon Schubert  *
33b2b3ffcdSSimon Schubert  *	from: @(#)reg.h	5.5 (Berkeley) 1/18/91
34b2b3ffcdSSimon Schubert  * $FreeBSD: src/sys/amd64/include/reg.h,v 1.35 2004/04/05 23:55:14 imp Exp $
35b2b3ffcdSSimon Schubert  */
36b2b3ffcdSSimon Schubert 
37b2b3ffcdSSimon Schubert #ifndef _CPU_REG_H_
38b2b3ffcdSSimon Schubert #define	_CPU_REG_H_
39b2b3ffcdSSimon Schubert 
40b2b3ffcdSSimon Schubert /*
41b2b3ffcdSSimon Schubert  * Register set accessible via /proc/$pid/regs and PT_{SET,GET}REGS.
42b2b3ffcdSSimon Schubert  */
43b2b3ffcdSSimon Schubert struct reg {
44b2b3ffcdSSimon Schubert 	register_t	r_rdi;
45b2b3ffcdSSimon Schubert 	register_t	r_rsi;
46b2b3ffcdSSimon Schubert 	register_t	r_rdx;
47b2b3ffcdSSimon Schubert 	register_t	r_rcx;
48b2b3ffcdSSimon Schubert 	register_t	r_r8;
49b2b3ffcdSSimon Schubert 	register_t	r_r9;
50b2b3ffcdSSimon Schubert 	register_t	r_rax;
51b2b3ffcdSSimon Schubert 	register_t	r_rbx;
52b2b3ffcdSSimon Schubert 	register_t	r_rbp;
53b2b3ffcdSSimon Schubert 	register_t	r_r10;
54b2b3ffcdSSimon Schubert 	register_t	r_r11;
55b2b3ffcdSSimon Schubert 	register_t	r_r12;
56b2b3ffcdSSimon Schubert 	register_t	r_r13;
57b2b3ffcdSSimon Schubert 	register_t	r_r14;
58b2b3ffcdSSimon Schubert 	register_t	r_r15;
59b2b3ffcdSSimon Schubert 	register_t	r_xflags;
60b2b3ffcdSSimon Schubert 	register_t	r_trapno;
61b2b3ffcdSSimon Schubert 	register_t	r_addr;
62b2b3ffcdSSimon Schubert 	register_t	r_flags;
63b2b3ffcdSSimon Schubert 	register_t	r_err;
64b2b3ffcdSSimon Schubert 	register_t	r_rip;
65b2b3ffcdSSimon Schubert 	register_t	r_cs;
66b2b3ffcdSSimon Schubert 	register_t	r_rflags;
67b2b3ffcdSSimon Schubert 	register_t	r_rsp;
68b2b3ffcdSSimon Schubert 	register_t	r_ss;
69b2b3ffcdSSimon Schubert };
70b2b3ffcdSSimon Schubert 
71b2b3ffcdSSimon Schubert /*
72b2b3ffcdSSimon Schubert  * Register set accessible via /proc/$pid/fpregs.
73b2b3ffcdSSimon Schubert  */
74b2b3ffcdSSimon Schubert struct fpreg {
75b2b3ffcdSSimon Schubert 	/*
76b2b3ffcdSSimon Schubert 	 * XXX should get struct from fpu.h.  Here we give a slightly
77b2b3ffcdSSimon Schubert 	 * simplified struct.  This may be too much detail.  Perhaps
78b2b3ffcdSSimon Schubert 	 * an array of unsigned longs is best.
79b2b3ffcdSSimon Schubert 	 */
80b2b3ffcdSSimon Schubert 	unsigned long	fpr_env[4];
81b2b3ffcdSSimon Schubert 	unsigned char	fpr_acc[8][16];
82b2b3ffcdSSimon Schubert 	unsigned char	fpr_xacc[16][16];
83b2b3ffcdSSimon Schubert 	unsigned long	fpr_spare[12];
84b2b3ffcdSSimon Schubert };
85b2b3ffcdSSimon Schubert 
86b2b3ffcdSSimon Schubert /*
87b2b3ffcdSSimon Schubert  * Register set accessible via /proc/$pid/dbregs.
88b2b3ffcdSSimon Schubert  */
89b2b3ffcdSSimon Schubert struct dbreg {
90b2b3ffcdSSimon Schubert 	unsigned long  dr[16];	/* debug registers */
91b2b3ffcdSSimon Schubert 				/* Index 0-3: debug address registers */
92b2b3ffcdSSimon Schubert 				/* Index 4-5: reserved */
93b2b3ffcdSSimon Schubert 				/* Index 6: debug status */
94b2b3ffcdSSimon Schubert 				/* Index 7: debug control */
95b2b3ffcdSSimon Schubert 				/* Index 8-15: reserved */
96b2b3ffcdSSimon Schubert };
97b2b3ffcdSSimon Schubert 
98b2b3ffcdSSimon Schubert #define DBREG_DR7_EXEC      0x00      /* break on execute       */
99b2b3ffcdSSimon Schubert #define DBREG_DR7_WRONLY    0x01      /* break on write         */
100b2b3ffcdSSimon Schubert #define DBREG_DR7_RDWR      0x03      /* break on read or write */
101b2b3ffcdSSimon Schubert #define DBREG_DRX(d,x) ((d)->dr[(x)]) /* reference dr0 - dr15 by
102b2b3ffcdSSimon Schubert                                          register number */
103b2b3ffcdSSimon Schubert #endif /* !_CPU_REG_H_ */
104