Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

#	$NetBSD: genassym.cf,v 1.29 2021/02/24 16:42:38 thorpej Exp $

#
# Copyright (C) 1995, 1996 Wolfgang Solfrank.
# Copyright (C) 1995, 1996 TooLs GmbH.
# All rights reserved.
#
# 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. All advertising materials mentioning features or use of this software
#    must display the following acknowledgement:
#	This product includes software developed by TooLs GmbH.
# 4. The name of TooLs GmbH may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``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 TOOLS GMBH 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.
#

#ifdef _KERNEL_OPT
include "opt_ppcarch.h"
#endif

include <sys/param.h>
include <sys/time.h>
include <sys/mutex.h>
include <sys/rwlock.h>
include <sys/proc.h>
include <sys/bitops.h>

include <uvm/uvm_extern.h>

include <machine/pcb.h>
include <machine/pmap.h>

include <powerpc/cpu.h>
include <powerpc/oea/bat.h>
include <powerpc/oea/cpufeat.h>

define	FRAME_DAR	offsetof(struct ktrapframe, ktf_tf.tf_dar)
define	FRAME_DSISR	offsetof(struct ktrapframe, ktf_tf.tf_dsisr)
define	FRAME_VRSAVE	offsetof(struct ktrapframe, ktf_tf.tf_vrsave)
define	FRAME_MQ	offsetof(struct ktrapframe, ktf_tf.tf_mq)

ifdef PPC_OEA64
define	PM_STEG		offsetof(struct pmap, pm_steg_table)
else
define	USER_SR		USER_SR
define	KERNEL_SR	KERNEL_SR
define	PM_SR		offsetof(struct pmap, pm_sr[0])
define	PM_USRSR	offsetof(struct pmap, pm_sr[USER_SR])
define	PM_KERNELSR	offsetof(struct pmap, pm_sr[KERNEL_SR])
endif

define	CI_BATTABLE	offsetof(struct cpu_info, ci_battable)
define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVETEMP])
define	CI_DDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEDDB])
define	CI_DISISAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEMMU])

define	CPUSAVE_R28	CPUSAVE_R28*sizeof(register_t)
define	CPUSAVE_R29	CPUSAVE_R29*sizeof(register_t)
define	CPUSAVE_R30	CPUSAVE_R30*sizeof(register_t)
define	CPUSAVE_R31	CPUSAVE_R31*sizeof(register_t)
define	CPUSAVE_DAR	CPUSAVE_DAR*sizeof(register_t)
define	CPUSAVE_DSISR	CPUSAVE_DSISR*sizeof(register_t)
define	CPUSAVE_SRR0	CPUSAVE_SRR0*sizeof(register_t)
define	CPUSAVE_SRR1	CPUSAVE_SRR1*sizeof(register_t)

define	OEACPU_64	OEACPU_64
define	OEACPU_64_BRIDGE	OEACPU_64_BRIDGE
define	OEACPU_NOBAT	OEACPU_NOBAT
define	OEACPU_HIGHBAT	OEACPU_HIGHBAT
define	OEACPU_601	OEACPU_601
define	OEACPU_HIGHSPRG	OEACPU_HIGHSPRG
define	OEACPU_ALTIVEC	OEACPU_ALTIVEC

define	BAT_ADDR_SHIFT	ilog2(BAT_IDX2VA(1))

define	PTE_REF		PTE_REF
define	PTE_CHG		PTE_CHG
define	PTE_HID		PTE_HID
define	PTE_G		PTE_G

define	FPREG_F0	offsetof(struct fpreg, fpreg[0])
define	FPREG_F1	offsetof(struct fpreg, fpreg[1])
define	FPREG_F2	offsetof(struct fpreg, fpreg[2])
define	FPREG_F3	offsetof(struct fpreg, fpreg[3])
define	FPREG_F4	offsetof(struct fpreg, fpreg[4])
define	FPREG_F5	offsetof(struct fpreg, fpreg[5])
define	FPREG_F6	offsetof(struct fpreg, fpreg[6])
define	FPREG_F7	offsetof(struct fpreg, fpreg[7])
define	FPREG_F8	offsetof(struct fpreg, fpreg[8])
define	FPREG_F9	offsetof(struct fpreg, fpreg[9])
define	FPREG_F10	offsetof(struct fpreg, fpreg[10])
define	FPREG_F11	offsetof(struct fpreg, fpreg[11])
define	FPREG_F12	offsetof(struct fpreg, fpreg[12])
define	FPREG_F13	offsetof(struct fpreg, fpreg[13])
define	FPREG_F14	offsetof(struct fpreg, fpreg[14])
define	FPREG_F15	offsetof(struct fpreg, fpreg[15])
define	FPREG_F16	offsetof(struct fpreg, fpreg[16])
define	FPREG_F17	offsetof(struct fpreg, fpreg[17])
define	FPREG_F18	offsetof(struct fpreg, fpreg[18])
define	FPREG_F19	offsetof(struct fpreg, fpreg[19])
define	FPREG_F20	offsetof(struct fpreg, fpreg[20])
define	FPREG_F21	offsetof(struct fpreg, fpreg[21])
define	FPREG_F22	offsetof(struct fpreg, fpreg[22])
define	FPREG_F23	offsetof(struct fpreg, fpreg[23])
define	FPREG_F24	offsetof(struct fpreg, fpreg[24])
define	FPREG_F25	offsetof(struct fpreg, fpreg[25])
define	FPREG_F26	offsetof(struct fpreg, fpreg[26])
define	FPREG_F27	offsetof(struct fpreg, fpreg[27])
define	FPREG_F28	offsetof(struct fpreg, fpreg[28])
define	FPREG_F29	offsetof(struct fpreg, fpreg[29])
define	FPREG_F30	offsetof(struct fpreg, fpreg[30])
define	FPREG_F31	offsetof(struct fpreg, fpreg[31])
define	FPREG_FPSCR	offsetof(struct fpreg, fpscr)

define	VREG_V0		offsetof(struct vreg, vreg[0][0])
define	VREG_V1		offsetof(struct vreg, vreg[1][0])
define	VREG_V2		offsetof(struct vreg, vreg[2][0])
define	VREG_V3		offsetof(struct vreg, vreg[3][0])
define	VREG_V4		offsetof(struct vreg, vreg[4][0])
define	VREG_V5		offsetof(struct vreg, vreg[5][0])
define	VREG_V6		offsetof(struct vreg, vreg[6][0])
define	VREG_V7		offsetof(struct vreg, vreg[7][0])
define	VREG_V8		offsetof(struct vreg, vreg[8][0])
define	VREG_V9		offsetof(struct vreg, vreg[9][0])
define	VREG_V10	offsetof(struct vreg, vreg[10][0])
define	VREG_V11	offsetof(struct vreg, vreg[11][0])
define	VREG_V12	offsetof(struct vreg, vreg[12][0])
define	VREG_V13	offsetof(struct vreg, vreg[13][0])
define	VREG_V14	offsetof(struct vreg, vreg[14][0])
define	VREG_V15	offsetof(struct vreg, vreg[15][0])
define	VREG_V16	offsetof(struct vreg, vreg[16][0])
define	VREG_V17	offsetof(struct vreg, vreg[17][0])
define	VREG_V18	offsetof(struct vreg, vreg[18][0])
define	VREG_V19	offsetof(struct vreg, vreg[19][0])
define	VREG_V20	offsetof(struct vreg, vreg[20][0])
define	VREG_V21	offsetof(struct vreg, vreg[21][0])
define	VREG_V22	offsetof(struct vreg, vreg[22][0])
define	VREG_V23	offsetof(struct vreg, vreg[23][0])
define	VREG_V24	offsetof(struct vreg, vreg[24][0])
define	VREG_V25	offsetof(struct vreg, vreg[25][0])
define	VREG_V26	offsetof(struct vreg, vreg[26][0])
define	VREG_V27	offsetof(struct vreg, vreg[27][0])
define	VREG_V28	offsetof(struct vreg, vreg[28][0])
define	VREG_V29	offsetof(struct vreg, vreg[29][0])
define	VREG_V30	offsetof(struct vreg, vreg[30][0])
define	VREG_V31	offsetof(struct vreg, vreg[31][0])
define	VREG_VRSAVE	offsetof(struct vreg, vrsave)
define	VREG_VSCR	offsetof(struct vreg, vscr)