[BACK]Return to genassym.cf CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / aarch64 / aarch64

File: [cvs.NetBSD.org] / src / sys / arch / aarch64 / aarch64 / genassym.cf (download)

Revision 1.22.4.1, Mon Apr 20 11:28:50 2020 UTC (4 years ago) by bouyer
Branch: bouyer-xenpvh
Changes since 1.22: +5 -1 lines

Sync with HEAD

# $NetBSD: genassym.cf,v 1.22.4.1 2020/04/20 11:28:50 bouyer Exp $
#-
# Copyright (c) 2014 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by Matt Thomas of 3am Software Foundry.
#
# 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.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
#-

if defined(_KERNEL_OPT)
include "opt_multiprocessor.h"
include "opt_compat_netbsd.h"
include "opt_execfmt.h"
endif

include <sys/param.h>
include <sys/systm.h>
include <sys/bitops.h>
include <sys/cpu.h>
include <sys/mbuf.h>
include <sys/proc.h>
include <sys/resourcevar.h>
include <sys/device.h>
include <sys/signal.h>
include <netinet/in.h>
include <netinet/in_systm.h>
include <netinet/ip.h>
include <netinet/ip6.h>
include <netinet/ip_var.h>

include <uvm/uvm_extern.h>

include <arm/bus_defs.h>

include <aarch64/vmparam.h>
include <aarch64/frame.h>
include <aarch64/armreg.h>
include <aarch64/pte.h>

define	__HAVE_FAST_SOFTINTS	1

#ifdef __HAVE_PIC_FAST_SOFTINTS
#define	__HAVE_PIC_FAST_SOFTINTS	1
#endif

define	MAXCPUS			MAXCPUS
define	VM_MIN_KERNEL_ADDRESS	VM_MIN_KERNEL_ADDRESS
define	VM_MAX_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
define	VM_KERNEL_IO_ADDRESS	VM_KERNEL_IO_ADDRESS
define	VM_KERNEL_IO_SIZE	VM_KERNEL_IO_SIZE
define	AARCH64_KSEG_START	AARCH64_KSEG_START
define	AARCH64_KSEG_MASK	AARCH64_KSEG_MASK
define	UPAGES			UPAGES
define	USPACE			(UPAGES * PAGE_SIZE)

#define	PV_PA			offsetof(pv_addr_t, pv_pa)

define	L0_ADDR_BITS		L0_ADDR_BITS
define	L0_SHIFT		L0_SHIFT
define	L0_TABLE		L0_TABLE
define	L1_ADDR_BITS		L1_ADDR_BITS
define	L1_BLOCK		L1_BLOCK
define	L1_SHIFT		L1_SHIFT
define	L1_SIZE			L1_SIZE
define	L1_TABLE		L1_TABLE
define	L2_ADDR_BITS		L2_ADDR_BITS
define	L2_BLK_OA		L2_BLK_OA
define	L2_BLOCK		L2_BLOCK
define	L2_BLOCK_MASK		L2_BLOCK_MASK
define	L2_SHIFT		L2_SHIFT
define	L2_SIZE			L2_SIZE
define	LX_BLKPAG_UXN		LX_BLKPAG_UXN
define	LX_BLKPAG_PXN		LX_BLKPAG_PXN
define	LX_BLKPAG_AF		LX_BLKPAG_AF
define	LX_BLKPAG_AP		LX_BLKPAG_AP
define	LX_BLKPAG_AP_RO		LX_BLKPAG_AP_RO
define	LX_BLKPAG_AP_RW		LX_BLKPAG_AP_RW
define	LX_BLKPAG_SH_IS		LX_BLKPAG_SH_IS
define	LX_BLKPAG_ATTR_NORMAL_WB	LX_BLKPAG_ATTR_NORMAL_WB
define	LX_BLKPAG_ATTR_NORMAL_NC	LX_BLKPAG_ATTR_NORMAL_NC
define	LX_BLKPAG_ATTR_NORMAL_WT	LX_BLKPAG_ATTR_NORMAL_WT
define	LX_BLKPAG_ATTR_DEVICE_MEM	LX_BLKPAG_ATTR_DEVICE_MEM
define	Ln_ENTRIES		Ln_ENTRIES

define	TCR_AS64K		TCR_AS64K
define	TCR_TG1_16KB		TCR_TG1_16KB
define	TCR_TG1_4KB		TCR_TG1_4KB
define	TCR_TG1_64KB		TCR_TG1_64KB
define	TCR_TG0_16KB		TCR_TG0_16KB
define	TCR_TG0_4KB		TCR_TG0_4KB
define	TCR_TG0_64KB		TCR_TG0_64KB
define	TCR_SH1_NONE		TCR_SH1_NONE
define	TCR_SH1_OUTER		TCR_SH1_OUTER
define	TCR_SH1_INNER		TCR_SH1_INNER
define	TCR_ORGN1_NC		TCR_ORGN1_NC
define	TCR_ORGN1_WB_WA		TCR_ORGN1_WB_WA
define	TCR_ORGN1_WT		TCR_ORGN1_WT
define	TCR_ORGN1_WB		TCR_ORGN1_WB
define	TCR_IRGN1_NC		TCR_IRGN1_NC
define	TCR_IRGN1_WB_WA		TCR_IRGN1_WB_WA
define	TCR_IRGN1_WT		TCR_IRGN1_WT
define	TCR_IRGN1_WB		TCR_IRGN1_WB
define	TCR_T1SZ		TCR_T1SZ
define	TCR_SH0_NONE		TCR_SH0_NONE
define	TCR_SH0_OUTER		TCR_SH0_OUTER
define	TCR_SH0_INNER		TCR_SH0_INNER
define	TCR_ORGN0_NC		TCR_ORGN0_NC
define	TCR_ORGN0_WB_WA		TCR_ORGN0_WB_WA
define	TCR_ORGN0_WT		TCR_ORGN0_WT
define	TCR_ORGN0_WB		TCR_ORGN0_WB
define	TCR_IRGN0_NC		TCR_IRGN0_NC
define	TCR_IRGN0_WB_WA		TCR_IRGN0_WB_WA
define	TCR_IRGN0_WT		TCR_IRGN0_WT
define	TCR_IRGN0_WB		TCR_IRGN0_WB
define	TCR_T0SZ		TCR_T0SZ

define	EFAULT			EFAULT

define	PAGE_SIZE		PAGE_SIZE
define	PAGE_MASK		PAGE_MASK
define	PGSHIFT			PGSHIFT

# Important offsets into the lwp and proc structs & associated constants
define	L_PCB			offsetof(struct lwp, l_addr)
define	L_CPU			offsetof(struct lwp, l_cpu)
define	L_PROC			offsetof(struct lwp, l_proc)
define	L_PRIVATE		offsetof(struct lwp, l_private)
define	L_MD_FLAGS		offsetof(struct lwp, l_md.md_flags)
define	L_MD_UTF		offsetof(struct lwp, l_md.md_utf)
define	L_MD_CPACR		offsetof(struct lwp, l_md.md_cpacr)
define	L_MD_ONFAULT		offsetof(struct lwp, l_md.md_onfault)
define	L_MD_IA_KERN_LO		offsetof(struct lwp, l_md.md_ia_kern_lo)
define	L_MD_IA_KERN_HI		offsetof(struct lwp, l_md.md_ia_kern_hi)
define	L_MD_IA_USER_LO		offsetof(struct lwp, l_md.md_ia_user_lo)
define	L_MD_IA_USER_HI		offsetof(struct lwp, l_md.md_ia_user_hi)

define	FB_X19			FB_X19
define	FB_X20			FB_X20
define	FB_X21			FB_X21
define	FB_X22			FB_X22
define	FB_X23			FB_X23
define	FB_X24			FB_X24
define	FB_X25			FB_X25
define	FB_X26			FB_X26
define	FB_X27			FB_X27
define	FB_X28			FB_X28
define	FB_X29			FB_X29
define	FB_LR			FB_LR
define	FB_SP			FB_SP
define	FB_MAX			FB_MAX
define	FB_T_SIZE		roundup(sizeof(struct faultbuf), 16)

define	LBL_X19			LBL_X19
define	LBL_X20			LBL_X20
define	LBL_X21			LBL_X21
define	LBL_X22			LBL_X22
define	LBL_X23			LBL_X23
define	LBL_X24			LBL_X24
define	LBL_X25			LBL_X25
define	LBL_X26			LBL_X26
define	LBL_X27			LBL_X27
define	LBL_X28			LBL_X28
define	LBL_X29			LBL_X29
define	LBL_LR			LBL_LR
define	LBL_SP			LBL_SP
define	LBL_MAX			LBL_MAX

define	P_RASLIST		offsetof(struct proc, p_raslist)
define	P_MD_SYSCALL		offsetof(struct proc, p_md.md_syscall)

define	VM_MAP			offsetof(struct vmspace, vm_map)
define	VM_PMAP			offsetof(struct vmspace, vm_map.pmap)

#define	PR_BASE			offsetof(struct uprof, pr_base)
#define	PR_SIZE			offsetof(struct uprof, pr_size)
#define	PR_OFF			offsetof(struct uprof, pr_off)
#define	PR_SCALE		offsetof(struct uprof, pr_scale)

define	SIGTRAP			SIGTRAP
define	SIGEMT			SIGEMT

define	PCB_TF			offsetof(struct pcb, pcb_tf)

define	TF_X0			offsetof(struct trapframe, tf_reg[0])
define	TF_X1			offsetof(struct trapframe, tf_reg[1])
define	TF_X2			offsetof(struct trapframe, tf_reg[2])
define	TF_X3			offsetof(struct trapframe, tf_reg[3])
define	TF_X4			offsetof(struct trapframe, tf_reg[4])
define	TF_X5			offsetof(struct trapframe, tf_reg[5])
define	TF_X6			offsetof(struct trapframe, tf_reg[6])
define	TF_X7			offsetof(struct trapframe, tf_reg[7])
define	TF_X8			offsetof(struct trapframe, tf_reg[8])
define	TF_X9			offsetof(struct trapframe, tf_reg[9])
define	TF_X10			offsetof(struct trapframe, tf_reg[10])
define	TF_X11			offsetof(struct trapframe, tf_reg[11])
define	TF_X12			offsetof(struct trapframe, tf_reg[12])
define	TF_X13			offsetof(struct trapframe, tf_reg[13])
define	TF_X14			offsetof(struct trapframe, tf_reg[14])
define	TF_X15			offsetof(struct trapframe, tf_reg[15])
define	TF_X16			offsetof(struct trapframe, tf_reg[16])
define	TF_X17			offsetof(struct trapframe, tf_reg[17])
define	TF_X18			offsetof(struct trapframe, tf_reg[18])
define	TF_X19			offsetof(struct trapframe, tf_reg[19])
define	TF_X20			offsetof(struct trapframe, tf_reg[20])
define	TF_X21			offsetof(struct trapframe, tf_reg[21])
define	TF_X22			offsetof(struct trapframe, tf_reg[22])
define	TF_X23			offsetof(struct trapframe, tf_reg[23])
define	TF_X24			offsetof(struct trapframe, tf_reg[24])
define	TF_X25			offsetof(struct trapframe, tf_reg[25])
define	TF_X26			offsetof(struct trapframe, tf_reg[26])
define	TF_X27			offsetof(struct trapframe, tf_reg[27])
define	TF_X28			offsetof(struct trapframe, tf_reg[28])
define	TF_X29			offsetof(struct trapframe, tf_reg[29])
define	TF_X30			offsetof(struct trapframe, tf_reg[30])
define	TF_SP			offsetof(struct trapframe, tf_sp)
define	TF_PC			offsetof(struct trapframe, tf_pc)
define	TF_SPSR			offsetof(struct trapframe, tf_spsr)
define	TF_ESR			offsetof(struct trapframe, tf_esr)
define	TF_FAR			offsetof(struct trapframe, tf_far)
define	TF_SIZE			TF_SIZE

define	FPREG_Q0		offsetof(struct fpreg, fp_reg[0])
define	FPREG_Q1		offsetof(struct fpreg, fp_reg[1])
define	FPREG_Q2		offsetof(struct fpreg, fp_reg[2])
define	FPREG_Q3		offsetof(struct fpreg, fp_reg[3])
define	FPREG_Q4		offsetof(struct fpreg, fp_reg[4])
define	FPREG_Q5		offsetof(struct fpreg, fp_reg[5])
define	FPREG_Q6		offsetof(struct fpreg, fp_reg[6])
define	FPREG_Q7		offsetof(struct fpreg, fp_reg[7])
define	FPREG_Q8		offsetof(struct fpreg, fp_reg[8])
define	FPREG_Q9		offsetof(struct fpreg, fp_reg[9])
define	FPREG_Q10		offsetof(struct fpreg, fp_reg[10])
define	FPREG_Q11		offsetof(struct fpreg, fp_reg[11])
define	FPREG_Q12		offsetof(struct fpreg, fp_reg[12])
define	FPREG_Q13		offsetof(struct fpreg, fp_reg[13])
define	FPREG_Q14		offsetof(struct fpreg, fp_reg[14])
define	FPREG_Q15		offsetof(struct fpreg, fp_reg[15])
define	FPREG_Q16		offsetof(struct fpreg, fp_reg[16])
define	FPREG_Q17		offsetof(struct fpreg, fp_reg[17])
define	FPREG_Q18		offsetof(struct fpreg, fp_reg[18])
define	FPREG_Q19		offsetof(struct fpreg, fp_reg[19])
define	FPREG_Q20		offsetof(struct fpreg, fp_reg[20])
define	FPREG_Q21		offsetof(struct fpreg, fp_reg[21])
define	FPREG_Q22		offsetof(struct fpreg, fp_reg[22])
define	FPREG_Q23		offsetof(struct fpreg, fp_reg[23])
define	FPREG_Q24		offsetof(struct fpreg, fp_reg[24])
define	FPREG_Q25		offsetof(struct fpreg, fp_reg[25])
define	FPREG_Q26		offsetof(struct fpreg, fp_reg[26])
define	FPREG_Q27		offsetof(struct fpreg, fp_reg[27])
define	FPREG_Q28		offsetof(struct fpreg, fp_reg[28])
define	FPREG_Q29		offsetof(struct fpreg, fp_reg[29])
define	FPREG_Q30		offsetof(struct fpreg, fp_reg[30])
define	FPREG_Q31		offsetof(struct fpreg, fp_reg[31])
define	FPREG_FPCR		offsetof(struct fpreg, fpcr)
define	FPREG_FPSR		offsetof(struct fpreg, fpsr)

define	CPU_INFO_SIZE		sizeof(struct cpu_info)
define	CI_CURLWP		offsetof(struct cpu_info, ci_curlwp)
define	CI_CPL			offsetof(struct cpu_info, ci_cpl)
define	CI_CPUID		offsetof(struct cpu_info, ci_cpuid)
define	CI_MIDR			offsetof(struct cpu_info, ci_id.ac_midr)
define	CI_MPIDR		offsetof(struct cpu_info, ci_id.ac_mpidr)
define	CI_ASTPENDING		offsetof(struct cpu_info, ci_astpending)
define	CI_WANT_RESCHED		offsetof(struct cpu_info, ci_want_resched)
define	CI_INTR_DEPTH		offsetof(struct cpu_info, ci_intr_depth)
define	CI_MTX_COUNT		offsetof(struct cpu_info, ci_mtx_count)
define	CI_SOFTINTS		offsetof(struct cpu_info, ci_softints)
define	CI_IDLELWP		offsetof(struct cpu_info, ci_data.cpu_idlelwp)
define	CI_CC_NINTR		offsetof(struct cpu_info, ci_data.cpu_nintr)

define	V_RESCHED_KPREEMPT	ilog2(RESCHED_KPREEMPT)

define	SPSR_M_EL1T		SPSR_M_EL1T
define	DAIF_I			DAIF_I
define	DAIF_F			DAIF_F
define	DAIF_SETCLR_SHIFT	DAIF_SETCLR_SHIFT

define	CNTHCTL_EL1PCTEN	CNTHCTL_EL1PCTEN
define	CNTHCTL_EL1PCEN		CNTHCTL_EL1PCEN
define	CNTKCTL_EL0VCTEN	CNTKCTL_EL0VCTEN
define	SPSR_SS_SHIFT		SPSR_SS_SHIFT
define	SPSR_F			SPSR_F
define	SPSR_I			SPSR_I
define	SPSR_A			SPSR_A
define	SPSR_A64_D		SPSR_A64_D
define	SPSR_M_EL1H		SPSR_M_EL1H

define	CPACR_FPEN		CPACR_FPEN
define	CPACR_TTA		CPACR_TTA
define	CPACR_FPEN		CPACR_FPEN
define	CPACR_FPEN_NONE		CPACR_FPEN_NONE
define	CPACR_FPEN_EL1		CPACR_FPEN_EL1
define	CPACR_FPEN_NONE_2	CPACR_FPEN_NONE_2
define	CPACR_FPEN_ALL		CPACR_FPEN_ALL

define	ID_AA64PFR0_EL1_GIC		ID_AA64PFR0_EL1_GIC
define	ID_AA64PFR0_EL1_GIC_SHIFT	ID_AA64PFR0_EL1_GIC_SHIFT
define	ID_AA64PFR0_EL1_GIC_CPUIF_EN	ID_AA64PFR0_EL1_GIC_CPUIF_EN

define	MPIDR_AFF0		MPIDR_AFF0
define	MPIDR_AFF1		MPIDR_AFF1
define	MPIDR_AFF2		MPIDR_AFF2
define	MPIDR_AFF3		MPIDR_AFF3

define	MDSCR_MDE		MDSCR_MDE
define	MDSCR_KDE		MDSCR_KDE
define	MDSCR_TDCC		MDSCR_TDCC
define	MDSCR_SS		MDSCR_SS

define	MAIR_ATTR0		MAIR_ATTR0
define	MAIR_ATTR1		MAIR_ATTR1
define	MAIR_ATTR2		MAIR_ATTR2
define	MAIR_ATTR3		MAIR_ATTR3
define	MAIR_ATTR4		MAIR_ATTR4
define	MAIR_DEVICE_nGnRnE	MAIR_DEVICE_nGnRnE
define	MAIR_DEVICE_nGnRE	MAIR_DEVICE_nGnRE
define	MAIR_NORMAL_NC		MAIR_NORMAL_NC
define	MAIR_NORMAL_WT		MAIR_NORMAL_WT
define	MAIR_NORMAL_WB		MAIR_NORMAL_WB

define	SCTLR_RES1		SCTLR_RES1
define	SCTLR_M			SCTLR_M
define	SCTLR_A			SCTLR_A
define	SCTLR_C			SCTLR_C
define	SCTLR_SA		SCTLR_SA
define	SCTLR_SA0		SCTLR_SA0
define	SCTLR_CP15BEN		SCTLR_CP15BEN
define	SCTLR_nAA		SCTLR_nAA
define	SCTLR_ITD		SCTLR_ITD
define	SCTLR_SED		SCTLR_SED
define	SCTLR_UMA		SCTLR_UMA
define	SCTLR_I			SCTLR_I
define	SCTLR_DZE		SCTLR_DZE
define	SCTLR_UCT		SCTLR_UCT
define	SCTLR_nTWI		SCTLR_nTWI
define	SCTLR_nTWE		SCTLR_nTWE
define	SCTLR_WXN		SCTLR_WXN
define	SCTLR_IESB		SCTLR_IESB
define	SCTLR_SPAN		SCTLR_SPAN
define	SCTLR_EOE		SCTLR_EOE
define	SCTLR_EE		SCTLR_EE
define	SCTLR_UCI		SCTLR_UCI
define	SCTLR_nTLSMD		SCTLR_nTLSMD
define	SCTLR_LSMAOE		SCTLR_LSMAOE

define	ICC_SRE_EL2_EN		ICC_SRE_EL2_EN
define	ICC_SRE_EL2_SRE		ICC_SRE_EL2_SRE


# for bus_space_asm
define	BS_STRIDE		offsetof(struct bus_space, bs_stride)

# Constants required for in_cksum() and friends.
define	M_LEN			offsetof(struct mbuf, m_len)
define	M_DATA			offsetof(struct mbuf, m_data)
define	M_NEXT			offsetof(struct mbuf, m_next)
define	IP_SRC			offsetof(struct ip, ip_src)
define	IP_DST			offsetof(struct ip, ip_dst)