genassym.cf revision 1.95
11.95Sskrll#	$NetBSD: genassym.cf,v 1.95 2020/08/28 13:36:52 skrll Exp $
21.1Schris
31.1Schris# Copyright (c) 1982, 1990 The Regents of the University of California.
41.1Schris# All rights reserved.
51.1Schris#
61.1Schris# This code is derived from software contributed to Berkeley by
71.1Schris# William Jolitz.
81.1Schris#
91.1Schris# Redistribution and use in source and binary forms, with or without
101.1Schris# modification, are permitted provided that the following conditions
111.1Schris# are met:
121.1Schris# 1. Redistributions of source code must retain the above copyright
131.1Schris#    notice, this list of conditions and the following disclaimer.
141.1Schris# 2. Redistributions in binary form must reproduce the above copyright
151.1Schris#    notice, this list of conditions and the following disclaimer in the
161.1Schris#    documentation and/or other materials provided with the distribution.
171.41Stsutsui# 3. Neither the name of the University nor the names of its contributors
181.1Schris#    may be used to endorse or promote products derived from this software
191.1Schris#    without specific prior written permission.
201.1Schris#
211.1Schris# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
221.1Schris# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
231.1Schris# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
241.1Schris# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
251.1Schris# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
261.1Schris# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
271.1Schris# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
281.1Schris# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
291.1Schris# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
301.1Schris# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
311.1Schris# SUCH DAMAGE.
321.1Schris
331.82Sskrllif defined(_KERNEL_OPT)
341.93Sskrllinclude "opt_arm_start.h"
351.82Sskrllinclude "opt_execfmt.h"
361.91Sskrllinclude "opt_multiprocessor.h"
371.82Sskrllendif
381.82Sskrll
391.1Schrisinclude <sys/param.h>
401.90Sskrll
411.90Sskrllinclude <sys/device.h>
421.25Sscwinclude <sys/mbuf.h>
431.1Schrisinclude <sys/proc.h>
441.1Schrisinclude <sys/resourcevar.h>
451.1Schrisinclude <sys/signal.h>
461.90Sskrllinclude <sys/systm.h>
471.90Sskrll
481.25Sscwinclude <netinet/in.h>
491.25Sscwinclude <netinet/in_systm.h>
501.25Sscwinclude <netinet/ip.h>
511.25Sscwinclude <netinet/ip6.h>
521.25Sscwinclude <netinet/ip_var.h>
531.1Schris
541.1Schrisinclude <uvm/uvm_extern.h>
551.8Sthorpej
561.8Sthorpejinclude <arm/fiq.h>
571.90Sskrllinclude <arm/locore.h>
581.58Smattinclude <arm/vfpreg.h>
591.68Smattinclude <arm/undefined.h>
601.1Schris
611.95Sskrllinclude <arm/arm32/machdep.h>
621.45Smattinclude <arm/arm32/pte.h>
631.90Sskrll
641.1Schrisinclude <machine/pmap.h>
651.49Smattinclude <machine/pcb.h>
661.1Schrisinclude <machine/vmparam.h>
671.6Sthorpej
681.6Sthorpejdefine	__PROG32		1
691.10Sthorpejifdef __ARM_FIQ_INDIRECT
701.10Sthorpejdefine	__ARM_FIQ_INDIRECT	1
711.10Sthorpejendif
721.1Schris
731.92Sskrllifdef __HAVE_FAST_SOFTINTS
741.92Sskrlldefine	__HAVE_FAST_SOFTINTS	1
751.72Smattendif
761.72Smatt
771.93Sskrllifdef __HAVE_GENERIC_START
781.93Sskrlldefine	__HAVE_GENERIC_START	1
791.93Sskrllendif
801.93Sskrll
811.59Smattifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS
821.59Smattdefine	__HAVE_MM_MD_DIRECT_MAPPED_PHYS	1
831.59Smattendif
841.59Smatt
851.92Sskrllifdef __HAVE_PIC_FAST_SOFTINTS
861.92Sskrlldefine	__HAVE_PIC_FAST_SOFTINTS	1
871.37Smattendif
881.37Smatt
891.92Sskrllifdef __HAVE_PREEMPTION
901.92Sskrlldefine	__HAVE_PREEMPTION	1
911.52Smattendif
921.52Smatt
931.68Smattifdef ARM_MMU_EXTENDED
941.68Smattdefine  ARM_MMU_EXTENDED	1
951.68Smattendif
961.68Smatt
971.69Smattifdef VERBOSE_INIT_ARM
981.69Smattdefine	VERBOSE_INIT_ARM	1
991.69Smattendif
1001.69Smatt
1011.31Smattdefine	KERNEL_BASE		KERNEL_BASE
1021.1Schrisdefine	VM_MIN_ADDRESS		VM_MIN_ADDRESS
1031.1Schrisdefine	VM_MAXUSER_ADDRESS	VM_MAXUSER_ADDRESS
1041.22Sscw
1051.22Sscwdefine	PMAP_DOMAIN_KERNEL	PMAP_DOMAIN_KERNEL
1061.45Smattdefine	DOMAIN_CLIENT		DOMAIN_CLIENT
1071.80Sskrlldefine	DOMAIN_DEFAULT		DOMAIN_DEFAULT
1081.68Smatt
1091.45Smattdefine	L1_S_PROTO_generic	L1_S_PROTO_generic
1101.45Smattdefine	L1_S_PROTO_armv7	L1_S_PROTO_armv7
1111.80Sskrll
1121.45Smattdefine	L1_S_PROTO_xscale	L1_S_PROTO_xscale
1131.45Smattif ARM_NMMUS == 1
1141.45Smattdefine	L1_S_PROTO		L1_S_PROTO
1151.45Smattendif
1161.45Smattdefine	L1_S_FRAME		L1_S_FRAME
1171.45Smattdefine	L1_S_SHIFT		L1_S_SHIFT
1181.45Smattdefine	L1_S_SIZE		L1_S_SIZE
1191.68Smattdefine	L1_S_CACHEABLE		L1_S_C|L1_S_B|L1_S_V6_S
1201.89Sskrlldefine	L1_S_NOCACHE		L1_S_XS_TEX(1)
1211.45Smattdefine	L1_S_B			L1_S_B
1221.45Smattdefine	L1_S_C			L1_S_C
1231.62Smattdefine	L1_S_V6_S		L1_S_V6_S
1241.68Smattdefine	L1_S_V6_XN		L1_S_V6_XN
1251.53Smattdefine	L1_S_AP_KR		L1_S_AP(AP_KR)
1261.45Smattdefine	L1_S_AP_KRW		L1_S_AP(AP_KRW)
1271.45Smattdefine	L1_S_APv7_KRW		L1_S_AP(AP7_KRW)
1281.68Smattdefine	L1_S_DOM_MASK		L1_S_DOM_MASK
1291.45Smattdefine	L1_TABLE_SIZE		L1_TABLE_SIZE
1301.45Smattdefine	L1_TYPE_S		L1_TYPE_S
1311.45Smattdefine	L1_S_DOM_KERNEL		L1_S_DOM(PMAP_DOMAIN_KERNEL)
1321.63Smattdefine	L2_S_SIZE		L2_S_SIZE
1331.23Sthorpej
1341.61Skiyoharadefine	L1_C_PROTO_generic	L1_C_PROTO_generic
1351.61Skiyohara
1361.61Skiyoharadefine	L2_S_PROTO_generic	L2_S_PROTO_generic
1371.61Skiyoharadefine	L2_S_SHIFT		L2_S_SHIFT
1381.61Skiyoharadefine	L2_S_SIZE		L2_S_SIZE
1391.61Skiyoharadefine	L2_C			L2_C
1401.61Skiyoharadefine	L2_AP_KRW		L2_AP(AP_KRW)
1411.61Skiyohara
1421.68Smattdefine	TTBCR_S_N_1		__SHIFTIN(1, TTBCR_S_N)
1431.68Smatt
1441.73Sskrlldefine	TTBR_UPATTR		TTBR_UPATTR
1451.73Sskrlldefine	TTBR_MPATTR		TTBR_MPATTR
1461.73Sskrll
1471.23Sthorpejifdef PMAP_INCLUDE_PTE_SYNC
1481.23Sthorpejdefine	PMAP_INCLUDE_PTE_SYNC	1
1491.22Sscwendif
1501.1Schris
1511.54Smattdefine	PAGE_MASK		PAGE_MASK
1521.21Sthorpejdefine	PAGE_SIZE		PAGE_SIZE
1531.1Schrisdefine	UPAGES			UPAGES
1541.1Schrisdefine	PGSHIFT			PGSHIFT
1551.1Schris
1561.78Sryodefine	MAXCPUS			MAXCPUS
1571.78Sryo
1581.80Sskrll#define	PSR_HYP32_MODE		PSR_HYP32_MODE
1591.80Sskrll#define	PSR_SVC32_MODE		PSR_SVC32_MODE
1601.80Sskrll#define	PSR_MODE		PSR_MODE
1611.80Sskrll#define	CPU_CONTROL_DC_ENABLE	CPU_CONTROL_DC_ENABLE
1621.80Sskrll#define	TTBCR_S_PD0		TTBCR_S_PD0
1631.80Sskrll
1641.95Sskrlldefine	INIT_ARM_STACK_SHIFT	INIT_ARM_STACK_SHIFT
1651.95Sskrlldefine	INIT_ARM_STACK_SIZE	INIT_ARM_STACK_SIZE
1661.95Sskrlldefine	INIT_ARM_TOTAL_STACK	INIT_ARM_TOTAL_STACK
1671.95Sskrll
1681.20Sthorpej# Important offsets into the lwp and proc structs & associated constants
1691.42Srminddefine	L_PCB			offsetof(struct lwp, l_addr)
1701.20Sthorpejdefine	L_CPU			offsetof(struct lwp, l_cpu)
1711.20Sthorpejdefine	L_PROC			offsetof(struct lwp, l_proc)
1721.46Smattdefine	L_PRIVATE		offsetof(struct lwp, l_private)
1731.70Smattdefine	L_FLAG			offsetof(struct lwp, l_flag)
1741.94Sskrlldefine	L_MD_ASTPENDING		offsetof(struct lwp, l_md.md_astpending)
1751.49Smattdefine	L_MD_FLAGS		offsetof(struct lwp, l_md.md_flags)
1761.49Smattdefine	L_MD_TF			offsetof(struct lwp, l_md.md_tf)
1771.49Smattdefine	MDLWP_NOALIGNFLT	MDLWP_NOALIGNFLT
1781.49Smatt
1791.70Smattdefine	LW_SYSTEM		LW_SYSTEM
1801.70Smatt
1811.27Sdsldefine	P_RASLIST		offsetof(struct proc, p_raslist)
1821.1Schris
1831.77Sskrlldefine	PCB_R8			offsetof(struct pcb, pcb_r8)
1841.77Sskrlldefine	PCB_R9			offsetof(struct pcb, pcb_r9)
1851.77Sskrlldefine	PCB_R10			offsetof(struct pcb, pcb_r10)
1861.77Sskrlldefine	PCB_R11			offsetof(struct pcb, pcb_r11)
1871.77Sskrlldefine	PCB_R12			offsetof(struct pcb, pcb_r12)
1881.77Sskrlldefine	PCB_KSP			offsetof(struct pcb, pcb_sp)
1891.77Sskrlldefine	PCB_LR			offsetof(struct pcb, pcb_lr)
1901.77Sskrlldefine	PCB_PC			offsetof(struct pcb, pcb_pc)
1911.77Sskrlldefine	PCB_USER_PID_RW		offsetof(struct pcb, pcb_user_pid_rw)
1921.1Schrisdefine	PCB_ONFAULT		offsetof(struct pcb, pcb_onfault)
1931.60Smattdefine	PCB_VFP_FPEXC		offsetof(struct pcb, pcb_vfp.vfp_fpexc)
1941.1Schris
1951.44Srminddefine	PCB_SIZE		sizeof(struct pcb)
1961.1Schris
1971.1Schrisdefine	VM_MAP			offsetof(struct vmspace, vm_map)
1981.1Schrisdefine	VM_PMAP			offsetof(struct vmspace, vm_map.pmap)
1991.1Schris
2001.1Schrisdefine	PR_BASE			offsetof(struct uprof, pr_base)
2011.1Schrisdefine	PR_SIZE			offsetof(struct uprof, pr_size)
2021.1Schrisdefine	PR_OFF			offsetof(struct uprof, pr_off)
2031.1Schrisdefine	PR_SCALE		offsetof(struct uprof, pr_scale)
2041.1Schris
2051.1Schrisdefine	SIGTRAP			SIGTRAP
2061.1Schrisdefine	SIGEMT			SIGEMT
2071.1Schris
2081.64Smattdefine	TF_SPSR			offsetof(struct trapframe, tf_spsr)
2091.50Smattdefine	TF_FILL			offsetof(struct trapframe, tf_fill)
2101.1Schrisdefine	TF_R0			offsetof(struct trapframe, tf_r0)
2111.55Smattdefine	TF_R4			offsetof(struct trapframe, tf_r4)
2121.55Smattdefine	TF_R6			offsetof(struct trapframe, tf_r6)
2131.64Smattdefine	TF_R8			offsetof(struct trapframe, tf_r8)
2141.1Schrisdefine	TF_R10			offsetof(struct trapframe, tf_r10)
2151.64Smattdefine	TF_R12			offsetof(struct trapframe, tf_r12)
2161.56Smattdefine	TF_USR_SP		offsetof(struct trapframe, tf_usr_sp)
2171.64Smattdefine	TF_USR_LR		offsetof(struct trapframe, tf_usr_lr)
2181.56Smattdefine	TF_SVC_SP		offsetof(struct trapframe, tf_svc_sp)
2191.64Smattdefine	TF_SVC_LR		offsetof(struct trapframe, tf_svc_lr)
2201.1Schrisdefine	TF_PC			offsetof(struct trapframe, tf_pc)
2211.1Schris
2221.1Schrisdefine	PROCSIZE		sizeof(struct proc)
2231.1Schrisdefine	TRAPFRAMESIZE		sizeof(struct trapframe)
2241.1Schris
2251.9Sthorpejdefine	CF_IDCACHE_WBINV_ALL	offsetof(struct cpu_functions, cf_idcache_wbinv_all)
2261.22Sscwdefine	CF_DCACHE_WB_RANGE	offsetof(struct cpu_functions, cf_dcache_wb_range)
2271.22Sscwdefine	CF_TLB_FLUSHID_SE	offsetof(struct cpu_functions, cf_tlb_flushID_SE)
2281.1Schrisdefine	CF_CONTEXT_SWITCH	offsetof(struct cpu_functions, cf_context_switch)
2291.1Schrisdefine	CF_SLEEP		offsetof(struct cpu_functions, cf_sleep)
2301.26Sscwdefine	CF_CONTROL		offsetof(struct cpu_functions, cf_control)
2311.1Schris
2321.87Sskrlldefine	CPU_INFO_SIZE		sizeof(struct cpu_info)
2331.50Smattdefine	CI_ARM_CPUID		offsetof(struct cpu_info, ci_arm_cpuid)
2341.86Sskrlldefine	CI_CPL			offsetof(struct cpu_info, ci_cpl)
2351.20Sthorpejdefine	CI_CURLWP		offsetof(struct cpu_info, ci_curlwp)
2361.39Smattdefine	CI_INTR_DEPTH		offsetof(struct cpu_info, ci_intr_depth)
2371.87Sskrlldefine	CI_MIDR			offsetof(struct cpu_info, ci_midr)
2381.87Sskrlldefine	CI_MPIDR		offsetof(struct cpu_info, ci_mpidr)
2391.39Smattdefine	CI_MTX_COUNT		offsetof(struct cpu_info, ci_mtx_count)
2401.86Sskrlldefine	CI_LASTLWP		offsetof(struct cpu_info, ci_lastlwp)
2411.51Smattdefine	CI_UNDEFSAVE		offsetof(struct cpu_info, ci_undefsave[0])
2421.86Sskrlldefine	CI_IDLELWP		offsetof(struct cpu_info, ci_data.cpu_idlelwp)
2431.86Sskrlldefine	CI_CC_NINTR		offsetof(struct cpu_info, ci_data.cpu_nintr)
2441.29Smanuif defined(EXEC_AOUT)
2451.26Sscwdefine	CI_CTRL			offsetof(struct cpu_info, ci_ctrl)
2461.16Sbjh21endif
2471.40Smattifdef __HAVE_FAST_SOFTINTS
2481.40Smattdefine	CI_SOFTINTS		offsetof(struct cpu_info, ci_softints)
2491.40Smattendif
2501.60Smattifdef FPU_VFP
2511.60Smattdefine	CI_VFP_ID		offsetof(struct cpu_info, ci_vfp_id)
2521.60Smattendif
2531.43Smatt
2541.58Smattdefine	VFP_FPEXC_EN		VFP_FPEXC_EN
2551.25Sscw
2561.68Smattdefine	NSACR_VFPCP		NSACR_CPn(VFP_COPROC)|NSACR_CPn(VFP_COPROC2)
2571.68Smatt
2581.25Sscw# Constants required for in_cksum() and friends.
2591.76Sskrlldefine	M_LEN			offsetof(struct mbuf, m_len)
2601.76Sskrlldefine	M_DATA			offsetof(struct mbuf, m_data)
2611.76Sskrlldefine	M_NEXT			offsetof(struct mbuf, m_next)
2621.76Sskrlldefine	IP_SRC			offsetof(struct ip, ip_src)
2631.76Sskrlldefine	IP_DST			offsetof(struct ip, ip_dst)
2641.75Sskrll
2651.75Sskrll# Cache information
2661.79Sskrlldefine	DCACHE_LINE_SIZE	offsetof(struct arm_cache_info, dcache_line_size)
2671.75Sskrlldefine	DCACHE_SIZE		offsetof(struct arm_cache_info, dcache_size)
268