136849Sdfr/*- 236849Sdfr * Copyright (c) 1982, 1990 The Regents of the University of California. 336849Sdfr * All rights reserved. 436849Sdfr * 536849Sdfr * This code is derived from software contributed to Berkeley by 636849Sdfr * William Jolitz. 736849Sdfr * 836849Sdfr * Redistribution and use in source and binary forms, with or without 936849Sdfr * modification, are permitted provided that the following conditions 1036849Sdfr * are met: 1136849Sdfr * 1. Redistributions of source code must retain the above copyright 1236849Sdfr * notice, this list of conditions and the following disclaimer. 1336849Sdfr * 2. Redistributions in binary form must reproduce the above copyright 1436849Sdfr * notice, this list of conditions and the following disclaimer in the 1536849Sdfr * documentation and/or other materials provided with the distribution. 1636849Sdfr * 4. Neither the name of the University nor the names of its contributors 1736849Sdfr * may be used to endorse or promote products derived from this software 1836849Sdfr * without specific prior written permission. 1936849Sdfr * 2036849Sdfr * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2136849Sdfr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2236849Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2336849Sdfr * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2436849Sdfr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2536849Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2636849Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2736849Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2836849Sdfr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2936849Sdfr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3036849Sdfr * SUCH DAMAGE. 3136849Sdfr * 3236849Sdfr * from: @(#)genassym.c 5.11 (Berkeley) 5/10/91 3350477Speter * $FreeBSD: releng/10.3/sys/powerpc/powerpc/genassym.c 266003 2014-05-14 04:14:58Z ian $ 3436849Sdfr */ 3536849Sdfr 3636849Sdfr#include <sys/param.h> 3755571Smarcel#include <sys/assym.h> 3836849Sdfr#include <sys/errno.h> 3965557Sjasone#include <sys/ktr.h> 40103598Sgrehan#include <sys/proc.h> 41103598Sgrehan#include <sys/queue.h> 42103598Sgrehan#include <sys/signal.h> 43103598Sgrehan#include <sys/smp.h> 44103598Sgrehan#include <sys/systm.h> 45103598Sgrehan#include <sys/ucontext.h> 46103598Sgrehan#include <sys/ucontext.h> 4736849Sdfr#include <sys/vmmeter.h> 48103598Sgrehan 4936849Sdfr#include <vm/vm.h> 5036849Sdfr#include <vm/vm_param.h> 5136849Sdfr#include <vm/pmap.h> 5236849Sdfr#include <vm/vm_map.h> 53103598Sgrehan 5478342Sbenno#include <machine/pcb.h> 5578342Sbenno#include <machine/pmap.h> 56209975Snwhitehorn#include <machine/psl.h> 57103598Sgrehan#include <machine/sigframe.h> 5836849Sdfr 5987702SjhbASSYM(PC_CURTHREAD, offsetof(struct pcpu, pc_curthread)); 6087702SjhbASSYM(PC_CURPCB, offsetof(struct pcpu, pc_curpcb)); 6195719SbennoASSYM(PC_CURPMAP, offsetof(struct pcpu, pc_curpmap)); 62125439SgrehanASSYM(PC_TEMPSAVE, offsetof(struct pcpu, pc_tempsave)); 63125439SgrehanASSYM(PC_DISISAVE, offsetof(struct pcpu, pc_disisave)); 64132071SgrehanASSYM(PC_DBSAVE, offsetof(struct pcpu, pc_dbsave)); 65262675SjhibbitsASSYM(PC_RESTORE, offsetof(struct pcpu, pc_restore)); 6665557Sjasone 67236141Sraj#if defined(BOOKE) 68176742SrajASSYM(PC_BOOKE_CRITSAVE, offsetof(struct pcpu, pc_booke_critsave)); 69176742SrajASSYM(PC_BOOKE_MCHKSAVE, offsetof(struct pcpu, pc_booke_mchksave)); 70176742SrajASSYM(PC_BOOKE_TLBSAVE, offsetof(struct pcpu, pc_booke_tlbsave)); 71176742SrajASSYM(PC_BOOKE_TLB_LEVEL, offsetof(struct pcpu, pc_booke_tlb_level)); 72192532SrajASSYM(PC_BOOKE_TLB_LOCK, offsetof(struct pcpu, pc_booke_tlb_lock)); 73176742Sraj#endif 74125439Sgrehan 75209975SnwhitehornASSYM(CPUSAVE_R27, CPUSAVE_R27*sizeof(register_t)); 76209975SnwhitehornASSYM(CPUSAVE_R28, CPUSAVE_R28*sizeof(register_t)); 77209975SnwhitehornASSYM(CPUSAVE_R29, CPUSAVE_R29*sizeof(register_t)); 78209975SnwhitehornASSYM(CPUSAVE_R30, CPUSAVE_R30*sizeof(register_t)); 79209975SnwhitehornASSYM(CPUSAVE_R31, CPUSAVE_R31*sizeof(register_t)); 80209975SnwhitehornASSYM(CPUSAVE_SRR0, CPUSAVE_SRR0*sizeof(register_t)); 81209975SnwhitehornASSYM(CPUSAVE_SRR1, CPUSAVE_SRR1*sizeof(register_t)); 82209975SnwhitehornASSYM(CPUSAVE_AIM_DAR, CPUSAVE_AIM_DAR*sizeof(register_t)); 83209975SnwhitehornASSYM(CPUSAVE_AIM_DSISR, CPUSAVE_AIM_DSISR*sizeof(register_t)); 84209975SnwhitehornASSYM(CPUSAVE_BOOKE_DEAR, CPUSAVE_BOOKE_DEAR*sizeof(register_t)); 85209975SnwhitehornASSYM(CPUSAVE_BOOKE_ESR, CPUSAVE_BOOKE_ESR*sizeof(register_t)); 86176742Sraj 87209975SnwhitehornASSYM(TLBSAVE_BOOKE_LR, TLBSAVE_BOOKE_LR*sizeof(register_t)); 88209975SnwhitehornASSYM(TLBSAVE_BOOKE_CR, TLBSAVE_BOOKE_CR*sizeof(register_t)); 89209975SnwhitehornASSYM(TLBSAVE_BOOKE_SRR0, TLBSAVE_BOOKE_SRR0*sizeof(register_t)); 90209975SnwhitehornASSYM(TLBSAVE_BOOKE_SRR1, TLBSAVE_BOOKE_SRR1*sizeof(register_t)); 91209975SnwhitehornASSYM(TLBSAVE_BOOKE_R20, TLBSAVE_BOOKE_R20*sizeof(register_t)); 92209975SnwhitehornASSYM(TLBSAVE_BOOKE_R21, TLBSAVE_BOOKE_R21*sizeof(register_t)); 93209975SnwhitehornASSYM(TLBSAVE_BOOKE_R22, TLBSAVE_BOOKE_R22*sizeof(register_t)); 94209975SnwhitehornASSYM(TLBSAVE_BOOKE_R23, TLBSAVE_BOOKE_R23*sizeof(register_t)); 95209975SnwhitehornASSYM(TLBSAVE_BOOKE_R24, TLBSAVE_BOOKE_R24*sizeof(register_t)); 96209975SnwhitehornASSYM(TLBSAVE_BOOKE_R25, TLBSAVE_BOOKE_R25*sizeof(register_t)); 97209975SnwhitehornASSYM(TLBSAVE_BOOKE_R26, TLBSAVE_BOOKE_R26*sizeof(register_t)); 98209975SnwhitehornASSYM(TLBSAVE_BOOKE_R27, TLBSAVE_BOOKE_R27*sizeof(register_t)); 99209975SnwhitehornASSYM(TLBSAVE_BOOKE_R28, TLBSAVE_BOOKE_R28*sizeof(register_t)); 100209975SnwhitehornASSYM(TLBSAVE_BOOKE_R29, TLBSAVE_BOOKE_R29*sizeof(register_t)); 101209975SnwhitehornASSYM(TLBSAVE_BOOKE_R30, TLBSAVE_BOOKE_R30*sizeof(register_t)); 102209975SnwhitehornASSYM(TLBSAVE_BOOKE_R31, TLBSAVE_BOOKE_R31*sizeof(register_t)); 103176742Sraj 10465557SjasoneASSYM(MTX_LOCK, offsetof(struct mtx, mtx_lock)); 10565557Sjasone 106176742Sraj#if defined(AIM) 107209975SnwhitehornASSYM(USER_ADDR, USER_ADDR); 108209975Snwhitehorn#ifdef __powerpc64__ 109209975SnwhitehornASSYM(PC_KERNSLB, offsetof(struct pcpu, pc_slb)); 110209975SnwhitehornASSYM(PC_USERSLB, offsetof(struct pcpu, pc_userslb)); 111230123SnwhitehornASSYM(PC_SLBSAVE, offsetof(struct pcpu, pc_slbsave)); 112230123SnwhitehornASSYM(PC_SLBSTACK, offsetof(struct pcpu, pc_slbstack)); 113214574SnwhitehornASSYM(USER_SLB_SLOT, USER_SLB_SLOT); 114214574SnwhitehornASSYM(USER_SLB_SLBE, USER_SLB_SLBE); 115230123SnwhitehornASSYM(SEGMENT_MASK, SEGMENT_MASK); 116209975Snwhitehorn#else 11795719SbennoASSYM(PM_SR, offsetof(struct pmap, pm_sr)); 118214574SnwhitehornASSYM(USER_SR, USER_SR); 119209975Snwhitehorn#endif 120236141Sraj#elif defined(BOOKE) 121176742SrajASSYM(PM_PDIR, offsetof(struct pmap, pm_pdir)); 122187149SrajASSYM(PTE_RPN, offsetof(struct pte, rpn)); 123187149SrajASSYM(PTE_FLAGS, offsetof(struct pte, flags)); 124236141Sraj#if defined(BOOKE_E500) 125176742SrajASSYM(TLB0_ENTRY_SIZE, sizeof(struct tlb_entry)); 126176742Sraj#endif 127236141Sraj#endif 128176742Sraj 129209975Snwhitehorn#ifdef __powerpc64__ 130209975SnwhitehornASSYM(FSP, 48); 131209975Snwhitehorn#else 132132520SgrehanASSYM(FSP, 8); 133209975Snwhitehorn#endif 13478342SbennoASSYM(FRAMELEN, FRAMELEN); 13578342SbennoASSYM(FRAME_0, offsetof(struct trapframe, fixreg[0])); 13678342SbennoASSYM(FRAME_1, offsetof(struct trapframe, fixreg[1])); 13778342SbennoASSYM(FRAME_2, offsetof(struct trapframe, fixreg[2])); 13878342SbennoASSYM(FRAME_3, offsetof(struct trapframe, fixreg[3])); 139125439SgrehanASSYM(FRAME_4, offsetof(struct trapframe, fixreg[4])); 140125439SgrehanASSYM(FRAME_5, offsetof(struct trapframe, fixreg[5])); 141125439SgrehanASSYM(FRAME_6, offsetof(struct trapframe, fixreg[6])); 142125439SgrehanASSYM(FRAME_7, offsetof(struct trapframe, fixreg[7])); 143125439SgrehanASSYM(FRAME_8, offsetof(struct trapframe, fixreg[8])); 144125439SgrehanASSYM(FRAME_9, offsetof(struct trapframe, fixreg[9])); 145125439SgrehanASSYM(FRAME_10, offsetof(struct trapframe, fixreg[10])); 146125439SgrehanASSYM(FRAME_11, offsetof(struct trapframe, fixreg[11])); 147125439SgrehanASSYM(FRAME_12, offsetof(struct trapframe, fixreg[12])); 148125439SgrehanASSYM(FRAME_13, offsetof(struct trapframe, fixreg[13])); 149125439SgrehanASSYM(FRAME_14, offsetof(struct trapframe, fixreg[14])); 150125439SgrehanASSYM(FRAME_15, offsetof(struct trapframe, fixreg[15])); 151125439SgrehanASSYM(FRAME_16, offsetof(struct trapframe, fixreg[16])); 152125439SgrehanASSYM(FRAME_17, offsetof(struct trapframe, fixreg[17])); 153125439SgrehanASSYM(FRAME_18, offsetof(struct trapframe, fixreg[18])); 154125439SgrehanASSYM(FRAME_19, offsetof(struct trapframe, fixreg[19])); 155125439SgrehanASSYM(FRAME_20, offsetof(struct trapframe, fixreg[20])); 156125439SgrehanASSYM(FRAME_21, offsetof(struct trapframe, fixreg[21])); 157125439SgrehanASSYM(FRAME_22, offsetof(struct trapframe, fixreg[22])); 158125439SgrehanASSYM(FRAME_23, offsetof(struct trapframe, fixreg[23])); 159125439SgrehanASSYM(FRAME_24, offsetof(struct trapframe, fixreg[24])); 160125439SgrehanASSYM(FRAME_25, offsetof(struct trapframe, fixreg[25])); 161125439SgrehanASSYM(FRAME_26, offsetof(struct trapframe, fixreg[26])); 162125439SgrehanASSYM(FRAME_27, offsetof(struct trapframe, fixreg[27])); 163125439SgrehanASSYM(FRAME_28, offsetof(struct trapframe, fixreg[28])); 164125439SgrehanASSYM(FRAME_29, offsetof(struct trapframe, fixreg[29])); 165125439SgrehanASSYM(FRAME_30, offsetof(struct trapframe, fixreg[30])); 166125439SgrehanASSYM(FRAME_31, offsetof(struct trapframe, fixreg[31])); 16778342SbennoASSYM(FRAME_LR, offsetof(struct trapframe, lr)); 16878342SbennoASSYM(FRAME_CR, offsetof(struct trapframe, cr)); 16978342SbennoASSYM(FRAME_CTR, offsetof(struct trapframe, ctr)); 17078342SbennoASSYM(FRAME_XER, offsetof(struct trapframe, xer)); 17178342SbennoASSYM(FRAME_SRR0, offsetof(struct trapframe, srr0)); 17278342SbennoASSYM(FRAME_SRR1, offsetof(struct trapframe, srr1)); 17378342SbennoASSYM(FRAME_EXC, offsetof(struct trapframe, exc)); 174176742SrajASSYM(FRAME_AIM_DAR, offsetof(struct trapframe, cpu.aim.dar)); 175176742SrajASSYM(FRAME_AIM_DSISR, offsetof(struct trapframe, cpu.aim.dsisr)); 176176742SrajASSYM(FRAME_BOOKE_DEAR, offsetof(struct trapframe, cpu.booke.dear)); 177176742SrajASSYM(FRAME_BOOKE_ESR, offsetof(struct trapframe, cpu.booke.esr)); 178189100SrajASSYM(FRAME_BOOKE_DBCR0, offsetof(struct trapframe, cpu.booke.dbcr0)); 17936972Sdfr 18091467SbennoASSYM(CF_FUNC, offsetof(struct callframe, cf_func)); 18191467SbennoASSYM(CF_ARG0, offsetof(struct callframe, cf_arg0)); 18291467SbennoASSYM(CF_ARG1, offsetof(struct callframe, cf_arg1)); 183132520SgrehanASSYM(CF_SIZE, sizeof(struct callframe)); 18491467Sbenno 18584945SmpASSYM(PCB_CONTEXT, offsetof(struct pcb, pcb_context)); 18684945SmpASSYM(PCB_CR, offsetof(struct pcb, pcb_cr)); 18778342SbennoASSYM(PCB_SP, offsetof(struct pcb, pcb_sp)); 188209975SnwhitehornASSYM(PCB_TOC, offsetof(struct pcb, pcb_toc)); 18991467SbennoASSYM(PCB_LR, offsetof(struct pcb, pcb_lr)); 19083682SmpASSYM(PCB_ONFAULT, offsetof(struct pcb, pcb_onfault)); 19186066SmpASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags)); 192112429SgrehanASSYM(PCB_FPU, PCB_FPU); 193188860SnwhitehornASSYM(PCB_VEC, PCB_VEC); 19436849Sdfr 195209975SnwhitehornASSYM(PCB_AIM_USR_VSID, offsetof(struct pcb, pcb_cpu.aim.usr_vsid)); 196189100SrajASSYM(PCB_BOOKE_DBCR0, offsetof(struct pcb, pcb_cpu.booke.dbcr0)); 197176742Sraj 198172887SgrehanASSYM(TD_LOCK, offsetof(struct thread, td_lock)); 19983366SjulianASSYM(TD_PROC, offsetof(struct thread, td_proc)); 20083682SmpASSYM(TD_PCB, offsetof(struct thread, td_pcb)); 20195719Sbenno 20295719SbennoASSYM(P_VMSPACE, offsetof(struct proc, p_vmspace)); 20395719Sbenno 20495719SbennoASSYM(VM_PMAP, offsetof(struct vmspace, vm_pmap)); 20599659Sbenno 206111032SjulianASSYM(TD_FLAGS, offsetof(struct thread, td_flags)); 20799659Sbenno 208111032SjulianASSYM(TDF_ASTPENDING, TDF_ASTPENDING); 209111032SjulianASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED); 210103598Sgrehan 211103598SgrehanASSYM(SF_UC, offsetof(struct sigframe, sf_uc)); 212125708Sgrehan 213176617SmarcelASSYM(KERNBASE, KERNBASE); 214125708SgrehanASSYM(MAXCOMLEN, MAXCOMLEN); 215209975Snwhitehorn 216236141SrajASSYM(PSL_DE, PSL_DE); 217236141SrajASSYM(PSL_DS, PSL_DS); 218236141SrajASSYM(PSL_IS, PSL_IS); 219236141SrajASSYM(PSL_CE, PSL_CE); 220209975SnwhitehornASSYM(PSL_UCLE, PSL_UCLE); 221209975SnwhitehornASSYM(PSL_WE, PSL_WE); 222209975SnwhitehornASSYM(PSL_UBLE, PSL_UBLE); 223209975Snwhitehorn 224265972Sian#if defined(BOOKE_E500) 225209975SnwhitehornASSYM(PSL_KERNSET_INIT, PSL_KERNSET_INIT); 226265972Sian#endif 227265972Sian 228265972Sian#if defined(AIM) && defined(__powerpc64__) 229209975SnwhitehornASSYM(PSL_SF, PSL_SF); 230209975SnwhitehornASSYM(PSL_HV, PSL_HV); 231209975Snwhitehorn#endif 232265972Sian 233209975SnwhitehornASSYM(PSL_POW, PSL_POW); 234209975SnwhitehornASSYM(PSL_ILE, PSL_ILE); 235209975SnwhitehornASSYM(PSL_LE, PSL_LE); 236209975SnwhitehornASSYM(PSL_SE, PSL_SE); 237209975SnwhitehornASSYM(PSL_RI, PSL_RI); 238209975SnwhitehornASSYM(PSL_DR, PSL_DR); 239209975SnwhitehornASSYM(PSL_IP, PSL_IP); 240209975SnwhitehornASSYM(PSL_IR, PSL_IR); 241209975Snwhitehorn 242209975SnwhitehornASSYM(PSL_FE_DIS, PSL_FE_DIS); 243209975SnwhitehornASSYM(PSL_FE_NONREC, PSL_FE_NONREC); 244209975SnwhitehornASSYM(PSL_FE_PREC, PSL_FE_PREC); 245209975SnwhitehornASSYM(PSL_FE_REC, PSL_FE_REC); 246209975Snwhitehorn 247265972SianASSYM(PSL_VEC, PSL_VEC); 248265972SianASSYM(PSL_BE, PSL_BE); 249209975SnwhitehornASSYM(PSL_EE, PSL_EE); 250209975SnwhitehornASSYM(PSL_FE0, PSL_FE0); 251209975SnwhitehornASSYM(PSL_FE1, PSL_FE1); 252209975SnwhitehornASSYM(PSL_FP, PSL_FP); 253209975SnwhitehornASSYM(PSL_ME, PSL_ME); 254209975SnwhitehornASSYM(PSL_PR, PSL_PR); 255209975SnwhitehornASSYM(PSL_PMM, PSL_PMM); 256209975SnwhitehornASSYM(PSL_KERNSET, PSL_KERNSET); 257209975SnwhitehornASSYM(PSL_USERSET, PSL_USERSET); 258265972SianASSYM(PSL_USERSTATIC, PSL_USERSTATIC); 259209975Snwhitehorn 260