Home | History | Annotate | Line # | Download | only in oea
      1 #	$NetBSD: genassym.cf,v 1.29 2021/02/24 16:42:38 thorpej Exp $
      2 
      3 #
      4 # Copyright (C) 1995, 1996 Wolfgang Solfrank.
      5 # Copyright (C) 1995, 1996 TooLs GmbH.
      6 # All rights reserved.
      7 #
      8 # Redistribution and use in source and binary forms, with or without
      9 # modification, are permitted provided that the following conditions
     10 # are met:
     11 # 1. Redistributions of source code must retain the above copyright
     12 #    notice, this list of conditions and the following disclaimer.
     13 # 2. Redistributions in binary form must reproduce the above copyright
     14 #    notice, this list of conditions and the following disclaimer in the
     15 #    documentation and/or other materials provided with the distribution.
     16 # 3. All advertising materials mentioning features or use of this software
     17 #    must display the following acknowledgement:
     18 #	This product includes software developed by TooLs GmbH.
     19 # 4. The name of TooLs GmbH may not be used to endorse or promote products
     20 #    derived from this software without specific prior written permission.
     21 #
     22 # THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
     23 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     24 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     25 # IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     26 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     27 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     28 # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     29 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     30 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     31 # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32 #
     33 
     34 #ifdef _KERNEL_OPT
     35 include "opt_ppcarch.h"
     36 #endif
     37 
     38 include <sys/param.h>
     39 include <sys/time.h>
     40 include <sys/mutex.h>
     41 include <sys/rwlock.h>
     42 include <sys/proc.h>
     43 include <sys/bitops.h>
     44 
     45 include <uvm/uvm_extern.h>
     46 
     47 include <machine/pcb.h>
     48 include <machine/pmap.h>
     49 
     50 include <powerpc/cpu.h>
     51 include <powerpc/oea/bat.h>
     52 include <powerpc/oea/cpufeat.h>
     53 
     54 define	FRAME_DAR	offsetof(struct ktrapframe, ktf_tf.tf_dar)
     55 define	FRAME_DSISR	offsetof(struct ktrapframe, ktf_tf.tf_dsisr)
     56 define	FRAME_VRSAVE	offsetof(struct ktrapframe, ktf_tf.tf_vrsave)
     57 define	FRAME_MQ	offsetof(struct ktrapframe, ktf_tf.tf_mq)
     58 
     59 ifdef PPC_OEA64
     60 define	PM_STEG		offsetof(struct pmap, pm_steg_table)
     61 else
     62 define	USER_SR		USER_SR
     63 define	KERNEL_SR	KERNEL_SR
     64 define	PM_SR		offsetof(struct pmap, pm_sr[0])
     65 define	PM_USRSR	offsetof(struct pmap, pm_sr[USER_SR])
     66 define	PM_KERNELSR	offsetof(struct pmap, pm_sr[KERNEL_SR])
     67 endif
     68 
     69 define	CI_BATTABLE	offsetof(struct cpu_info, ci_battable)
     70 define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVETEMP])
     71 define	CI_DDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEDDB])
     72 define	CI_DISISAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEMMU])
     73 
     74 define	CPUSAVE_R28	CPUSAVE_R28*sizeof(register_t)
     75 define	CPUSAVE_R29	CPUSAVE_R29*sizeof(register_t)
     76 define	CPUSAVE_R30	CPUSAVE_R30*sizeof(register_t)
     77 define	CPUSAVE_R31	CPUSAVE_R31*sizeof(register_t)
     78 define	CPUSAVE_DAR	CPUSAVE_DAR*sizeof(register_t)
     79 define	CPUSAVE_DSISR	CPUSAVE_DSISR*sizeof(register_t)
     80 define	CPUSAVE_SRR0	CPUSAVE_SRR0*sizeof(register_t)
     81 define	CPUSAVE_SRR1	CPUSAVE_SRR1*sizeof(register_t)
     82 
     83 define	OEACPU_64	OEACPU_64
     84 define	OEACPU_64_BRIDGE	OEACPU_64_BRIDGE
     85 define	OEACPU_NOBAT	OEACPU_NOBAT
     86 define	OEACPU_HIGHBAT	OEACPU_HIGHBAT
     87 define	OEACPU_601	OEACPU_601
     88 define	OEACPU_HIGHSPRG	OEACPU_HIGHSPRG
     89 define	OEACPU_ALTIVEC	OEACPU_ALTIVEC
     90 
     91 define	BAT_ADDR_SHIFT	ilog2(BAT_IDX2VA(1))
     92 
     93 define	PTE_REF		PTE_REF
     94 define	PTE_CHG		PTE_CHG
     95 define	PTE_HID		PTE_HID
     96 define	PTE_G		PTE_G
     97 
     98 define	FPREG_F0	offsetof(struct fpreg, fpreg[0])
     99 define	FPREG_F1	offsetof(struct fpreg, fpreg[1])
    100 define	FPREG_F2	offsetof(struct fpreg, fpreg[2])
    101 define	FPREG_F3	offsetof(struct fpreg, fpreg[3])
    102 define	FPREG_F4	offsetof(struct fpreg, fpreg[4])
    103 define	FPREG_F5	offsetof(struct fpreg, fpreg[5])
    104 define	FPREG_F6	offsetof(struct fpreg, fpreg[6])
    105 define	FPREG_F7	offsetof(struct fpreg, fpreg[7])
    106 define	FPREG_F8	offsetof(struct fpreg, fpreg[8])
    107 define	FPREG_F9	offsetof(struct fpreg, fpreg[9])
    108 define	FPREG_F10	offsetof(struct fpreg, fpreg[10])
    109 define	FPREG_F11	offsetof(struct fpreg, fpreg[11])
    110 define	FPREG_F12	offsetof(struct fpreg, fpreg[12])
    111 define	FPREG_F13	offsetof(struct fpreg, fpreg[13])
    112 define	FPREG_F14	offsetof(struct fpreg, fpreg[14])
    113 define	FPREG_F15	offsetof(struct fpreg, fpreg[15])
    114 define	FPREG_F16	offsetof(struct fpreg, fpreg[16])
    115 define	FPREG_F17	offsetof(struct fpreg, fpreg[17])
    116 define	FPREG_F18	offsetof(struct fpreg, fpreg[18])
    117 define	FPREG_F19	offsetof(struct fpreg, fpreg[19])
    118 define	FPREG_F20	offsetof(struct fpreg, fpreg[20])
    119 define	FPREG_F21	offsetof(struct fpreg, fpreg[21])
    120 define	FPREG_F22	offsetof(struct fpreg, fpreg[22])
    121 define	FPREG_F23	offsetof(struct fpreg, fpreg[23])
    122 define	FPREG_F24	offsetof(struct fpreg, fpreg[24])
    123 define	FPREG_F25	offsetof(struct fpreg, fpreg[25])
    124 define	FPREG_F26	offsetof(struct fpreg, fpreg[26])
    125 define	FPREG_F27	offsetof(struct fpreg, fpreg[27])
    126 define	FPREG_F28	offsetof(struct fpreg, fpreg[28])
    127 define	FPREG_F29	offsetof(struct fpreg, fpreg[29])
    128 define	FPREG_F30	offsetof(struct fpreg, fpreg[30])
    129 define	FPREG_F31	offsetof(struct fpreg, fpreg[31])
    130 define	FPREG_FPSCR	offsetof(struct fpreg, fpscr)
    131 
    132 define	VREG_V0		offsetof(struct vreg, vreg[0][0])
    133 define	VREG_V1		offsetof(struct vreg, vreg[1][0])
    134 define	VREG_V2		offsetof(struct vreg, vreg[2][0])
    135 define	VREG_V3		offsetof(struct vreg, vreg[3][0])
    136 define	VREG_V4		offsetof(struct vreg, vreg[4][0])
    137 define	VREG_V5		offsetof(struct vreg, vreg[5][0])
    138 define	VREG_V6		offsetof(struct vreg, vreg[6][0])
    139 define	VREG_V7		offsetof(struct vreg, vreg[7][0])
    140 define	VREG_V8		offsetof(struct vreg, vreg[8][0])
    141 define	VREG_V9		offsetof(struct vreg, vreg[9][0])
    142 define	VREG_V10	offsetof(struct vreg, vreg[10][0])
    143 define	VREG_V11	offsetof(struct vreg, vreg[11][0])
    144 define	VREG_V12	offsetof(struct vreg, vreg[12][0])
    145 define	VREG_V13	offsetof(struct vreg, vreg[13][0])
    146 define	VREG_V14	offsetof(struct vreg, vreg[14][0])
    147 define	VREG_V15	offsetof(struct vreg, vreg[15][0])
    148 define	VREG_V16	offsetof(struct vreg, vreg[16][0])
    149 define	VREG_V17	offsetof(struct vreg, vreg[17][0])
    150 define	VREG_V18	offsetof(struct vreg, vreg[18][0])
    151 define	VREG_V19	offsetof(struct vreg, vreg[19][0])
    152 define	VREG_V20	offsetof(struct vreg, vreg[20][0])
    153 define	VREG_V21	offsetof(struct vreg, vreg[21][0])
    154 define	VREG_V22	offsetof(struct vreg, vreg[22][0])
    155 define	VREG_V23	offsetof(struct vreg, vreg[23][0])
    156 define	VREG_V24	offsetof(struct vreg, vreg[24][0])
    157 define	VREG_V25	offsetof(struct vreg, vreg[25][0])
    158 define	VREG_V26	offsetof(struct vreg, vreg[26][0])
    159 define	VREG_V27	offsetof(struct vreg, vreg[27][0])
    160 define	VREG_V28	offsetof(struct vreg, vreg[28][0])
    161 define	VREG_V29	offsetof(struct vreg, vreg[29][0])
    162 define	VREG_V30	offsetof(struct vreg, vreg[30][0])
    163 define	VREG_V31	offsetof(struct vreg, vreg[31][0])
    164 define	VREG_VRSAVE	offsetof(struct vreg, vrsave)
    165 define	VREG_VSCR	offsetof(struct vreg, vscr)
    166