1/* $OpenBSD: reg.h,v 1.9 2024/03/29 21:14:31 miod Exp $ */
2/* $NetBSD: reg.h,v 1.8 2001/06/19 12:59:16 wiz Exp $ */
3
4/*
5 * Copyright (c) 1992, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * This software was developed by the Computer Systems Engineering group
9 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
10 * contributed to Berkeley.
11 *
12 * All advertising materials mentioning features or use of this software
13 * must display the following acknowledgement:
14 * This product includes software developed by the University of
15 * California, Lawrence Berkeley Laboratory.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 * 1. Redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution.
25 * 3. Neither the name of the University nor the names of its contributors
26 * may be used to endorse or promote products derived from this software
27 * without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 *
41 * @(#)reg.h 8.1 (Berkeley) 6/11/93
42 */
43
44#ifndef _MACHINE_REG_H_
45#define _MACHINE_REG_H_
46
47/*
48 * The v9 register window. Each stack pointer (%o6 aka %sp) in each window
49 * must ALWAYS point to some place at which it is safe to scribble on
50 * 64 bytes. (If not, your process gets mangled.) Furthermore, each
51 * stack pointer should be aligned on a 16-byte boundary (plus the BIAS)
52 * for v9 stacks (the kernel as currently coded allows arbitrary alignment,
53 * but with a hefty performance penalty).
54 */
55struct rwindow {
56 int64_t rw_local[8]; /* %l0..%l7 */
57 int64_t rw_in[8]; /* %i0..%i7 */
58};
59
60struct reg {
61 int64_t r_tstate; /* tstate register */
62 int64_t r_pc; /* return pc */
63 int64_t r_npc; /* return npc */
64 int r_y; /* %y register -- 32-bits */
65 int64_t r_global[8]; /* %g* registers in trap's caller */
66 int64_t r_out[8]; /* %o* registers in trap's caller */
67 int64_t r_local[8]; /* %l* registers in trap's caller */
68 int64_t r_in[8]; /* %i* registers in trap's caller */
69};
70
71/*
72 * FP coprocessor registers.
73 */
74
75struct fpstate {
76 u_int fs_regs[64]; /* our view is 64 32-bit registers */
77 int64_t fs_fsr; /* %fsr */
78 int fs_gsr; /* graphics state reg */
79};
80
81/*
82 * The actual FP registers are made accessible (c.f. ptrace(2)) through
83 * a `struct fpreg'; <arch/sparc64/sparc64/process_machdep.c> relies on the
84 * fact that `fpreg' is a prefix of `fpstate'.
85 */
86struct fpreg {
87 u_int fr_regs[64]; /* our view is 64 32-bit registers */
88 int64_t fr_fsr; /* %fsr */
89 int fr_gsr; /* graphics state reg */
90};
91
92#endif /* _MACHINE_REG_H_ */