freebsd-dev/sys/mips/include/regnum.h
Kyle Evans e21f96a811 mips: hide regnum definitions behind _KERNEL/_WANT_MIPS_REGNUM
machine/regnum.h ends up being included by sys/procfs.h and sys/ptrace.h via
machine/reg.h. Many of the regnum definitions are too short and too generic
to be exposing to any userland application including one of these two
headers. Moreover, these actively cause build failures in googletest
(template <typename T1 ...> expanding to template <typename 9 ...>).

Hide the definitions behind _KERNEL or _WANT_MIPS_REGNUM, and patch all of
the userland consumers to define as needed.

Discussed with:	imp, jhb
Reviewed by:	imp, jhb
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D21330
2019-08-22 21:43:21 +00:00

213 lines
5.4 KiB
C

/* $OpenBSD: regnum.h,v 1.3 1999/01/27 04:46:06 imp Exp $ */
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 1988 University of Utah.
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* the Systems Programming Group of the University of Utah Computer
* Science Department and Ralph Campbell.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* from: Utah Hdr: reg.h 1.1 90/07/09
* @(#)reg.h 8.2 (Berkeley) 1/11/94
* JNPR: regnum.h,v 1.6 2007/08/09 11:23:32 katta
* $FreeBSD$
*/
#ifndef _MACHINE_REGNUM_H_
#define _MACHINE_REGNUM_H_
#define NUMSAVEREGS 40
#define NUMFPREGS 34
/*
* Location of the saved registers relative to ZERO.
* This must match struct trapframe defined in frame.h exactly.
* This must also match regdef.h.
*/
#if defined(_KERNEL) || defined(_WANT_MIPS_REGNUM)
#define ZERO 0
#define AST 1
#define V0 2
#define V1 3
#define A0 4
#define A1 5
#define A2 6
#define A3 7
#if defined(__mips_n32) || defined(__mips_n64)
#define A4 8
#define A5 9
#define A6 10
#define A7 11
#define T0 12
#define T1 13
#define T2 14
#define T3 15
#else
#define T0 8
#define T1 9
#define T2 10
#define T3 11
#define T4 12
#define T5 13
#define T6 14
#define T7 15
#endif
#define S0 16
#define S1 17
#define S2 18
#define S3 19
#define S4 20
#define S5 21
#define S6 22
#define S7 23
#define T8 24
#define T9 25
#define K0 26
#define K1 27
#define GP 28
#define SP 29
#define S8 30
#define RA 31
#define SR 32
#define PS SR /* alias for SR */
#define MULLO 33
#define MULHI 34
#define BADVADDR 35
#define CAUSE 36
#define PC 37
/*
* IC is valid only on RM7K and RM9K processors. Access to this is
* controlled by IC_INT_REG which defined in kernel config
*/
#define IC 38
#define DUMMY 39 /* for 8 byte alignment */
/*
* Pseudo registers so we save a complete set of registers regardless of
* the ABI. See regdef.h for a more complete explanation.
*/
#if defined(__mips_n32) || defined(__mips_n64)
#define TA0 8
#define TA1 9
#define TA2 10
#define TA3 11
#else
#define TA0 12
#define TA1 13
#define TA2 14
#define TA3 15
#endif
/*
* Index of FP registers in 'struct frame', counting from the beginning
* of the frame (i.e., including the general registers).
*/
#define FPBASE NUMSAVEREGS
#define F0 (FPBASE+0)
#define F1 (FPBASE+1)
#define F2 (FPBASE+2)
#define F3 (FPBASE+3)
#define F4 (FPBASE+4)
#define F5 (FPBASE+5)
#define F6 (FPBASE+6)
#define F7 (FPBASE+7)
#define F8 (FPBASE+8)
#define F9 (FPBASE+9)
#define F10 (FPBASE+10)
#define F11 (FPBASE+11)
#define F12 (FPBASE+12)
#define F13 (FPBASE+13)
#define F14 (FPBASE+14)
#define F15 (FPBASE+15)
#define F16 (FPBASE+16)
#define F17 (FPBASE+17)
#define F18 (FPBASE+18)
#define F19 (FPBASE+19)
#define F20 (FPBASE+20)
#define F21 (FPBASE+21)
#define F22 (FPBASE+22)
#define F23 (FPBASE+23)
#define F24 (FPBASE+24)
#define F25 (FPBASE+25)
#define F26 (FPBASE+26)
#define F27 (FPBASE+27)
#define F28 (FPBASE+28)
#define F29 (FPBASE+29)
#define F30 (FPBASE+30)
#define F31 (FPBASE+31)
#define FSR (FPBASE+32)
#define FIR (FPBASE+33)
/*
* Index of FP registers in 'struct frame', relative to the base
* of the FP registers in frame (i.e., *not* including the general
* registers).
*/
#define F0_NUM (0)
#define F1_NUM (1)
#define F2_NUM (2)
#define F3_NUM (3)
#define F4_NUM (4)
#define F5_NUM (5)
#define F6_NUM (6)
#define F7_NUM (7)
#define F8_NUM (8)
#define F9_NUM (9)
#define F10_NUM (10)
#define F11_NUM (11)
#define F12_NUM (12)
#define F13_NUM (13)
#define F14_NUM (14)
#define F15_NUM (15)
#define F16_NUM (16)
#define F17_NUM (17)
#define F18_NUM (18)
#define F19_NUM (19)
#define F20_NUM (20)
#define F21_NUM (21)
#define F22_NUM (22)
#define F23_NUM (23)
#define F24_NUM (24)
#define F25_NUM (25)
#define F26_NUM (26)
#define F27_NUM (27)
#define F28_NUM (28)
#define F29_NUM (29)
#define F30_NUM (30)
#define F31_NUM (31)
#define FSR_NUM (32)
#define FIR_NUM (33)
#endif /* _KERNEL || _WANT_MIPS_REGNUM */
#endif /* !_MACHINE_REGNUM_H_ */