1 1.13 skrll /* $NetBSD: reg.h,v 1.13 2019/04/16 12:25:17 skrll Exp $ */ 2 1.1 fredette 3 1.1 fredette /* $OpenBSD: reg.h,v 1.7 2000/06/15 17:00:37 mickey Exp $ */ 4 1.1 fredette 5 1.1 fredette /* 6 1.10 snj * Copyright (c) 1998-2004 Michael Shalayeff 7 1.1 fredette * All rights reserved. 8 1.1 fredette * 9 1.1 fredette * Redistribution and use in source and binary forms, with or without 10 1.1 fredette * modification, are permitted provided that the following conditions 11 1.1 fredette * are met: 12 1.1 fredette * 1. Redistributions of source code must retain the above copyright 13 1.1 fredette * notice, this list of conditions and the following disclaimer. 14 1.1 fredette * 2. Redistributions in binary form must reproduce the above copyright 15 1.1 fredette * notice, this list of conditions and the following disclaimer in the 16 1.1 fredette * documentation and/or other materials provided with the distribution. 17 1.1 fredette * 18 1.1 fredette * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19 1.1 fredette * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20 1.1 fredette * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 1.10 snj * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT, 22 1.10 snj * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 1.10 snj * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 1.10 snj * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 1.10 snj * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 1.10 snj * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 27 1.10 snj * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 28 1.10 snj * THE POSSIBILITY OF SUCH DAMAGE. 29 1.1 fredette */ 30 1.13 skrll /* 31 1.1 fredette * Copyright (c) 1990,1994 The University of Utah and 32 1.1 fredette * the Computer Systems Laboratory at the University of Utah (CSL). 33 1.1 fredette * All rights reserved. 34 1.1 fredette * 35 1.1 fredette * Permission to use, copy, modify and distribute this software is hereby 36 1.1 fredette * granted provided that (1) source code retains these copyright, permission, 37 1.1 fredette * and disclaimer notices, and (2) redistributions including binaries 38 1.1 fredette * reproduce the notices in supporting documentation, and (3) all advertising 39 1.1 fredette * materials mentioning features or use of this software display the following 40 1.1 fredette * acknowledgement: ``This product includes software developed by the 41 1.1 fredette * Computer Systems Laboratory at the University of Utah.'' 42 1.1 fredette * 43 1.1 fredette * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS 44 1.1 fredette * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF 45 1.1 fredette * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 46 1.1 fredette * 47 1.1 fredette * CSL requests users of this software to return to csl-dist (at) cs.utah.edu any 48 1.1 fredette * improvements that they make and grant CSL redistribution rights. 49 1.1 fredette * 50 1.1 fredette * Utah $Hdr: regs.h 1.6 94/12/14$ 51 1.1 fredette * Author: Bob Wheeler, University of Utah CSL 52 1.1 fredette */ 53 1.1 fredette 54 1.1 fredette #ifndef _HPPA_REG_H_ 55 1.1 fredette #define _HPPA_REG_H_ 56 1.1 fredette 57 1.1 fredette /* 58 1.1 fredette * constants for registers for use with the following routines: 59 1.13 skrll * 60 1.1 fredette * void mtctl(reg, value) - move to control register 61 1.1 fredette * int mfctl(reg) - move from control register 62 1.1 fredette * int mtsp(sreg, value) - move to space register 63 1.1 fredette * int mfsr(sreg) - move from space register 64 1.1 fredette */ 65 1.1 fredette 66 1.1 fredette #define CR_RCTR 0 67 1.1 fredette #define CR_PIDR1 8 68 1.1 fredette #define CR_PIDR2 9 69 1.1 fredette #define CR_CCR 10 70 1.1 fredette #define CR_SAR 11 71 1.1 fredette #define CR_PIDR3 12 72 1.1 fredette #define CR_PIDR4 13 73 1.1 fredette #define CR_IVA 14 74 1.1 fredette #define CR_EIEM 15 75 1.1 fredette #define CR_ITMR 16 76 1.1 fredette #define CR_PCSQ 17 77 1.1 fredette #define CR_PCOQ 18 78 1.1 fredette #define CR_IIR 19 79 1.1 fredette #define CR_ISR 20 80 1.1 fredette #define CR_IOR 21 81 1.1 fredette #define CR_IPSW 22 82 1.1 fredette #define CR_EIRR 23 83 1.7 skrll 84 1.7 skrll /* Temporary control registers */ 85 1.12 skrll #ifdef MULTIPROCESSOR 86 1.12 skrll #define CR_CURCPU 24 /* tr0: curcpu */ 87 1.12 skrll #else 88 1.7 skrll #define CR_CURLWP 24 /* tr0: curlwp */ 89 1.12 skrll #endif 90 1.7 skrll #define CR_VTOP 25 /* tr1: virt to phys table address */ 91 1.8 skrll #define CR_TR2 26 /* tr2: temporary */ 92 1.8 skrll #define CR_TLS 27 /* tr3: thread local storage pointer */ 93 1.7 skrll #define CR_HVTP 28 /* tr4: faulted HVT slot ptr on LC cpus */ 94 1.7 skrll #define CR_TR5 29 /* tr5: emu / TLB_STATS_{PRE,AFT} */ 95 1.11 skrll #define CR_FPPADDR 30 /* tr6: paddr of FP regs of curlwp */ 96 1.7 skrll #define CR_TR7 31 /* tr7: trap temporary register */ 97 1.1 fredette 98 1.1 fredette /* 99 1.1 fredette * Diagnostic registers and bit positions 100 1.1 fredette */ 101 1.1 fredette #define DR_CPUCFG 0 102 1.1 fredette 103 1.1 fredette #define DR0_PCXS_DHPMC 10 /* r/c D-cache error flag */ 104 1.1 fredette #define DR0_PCXS_ILPMC 14 /* r/c I-cache error flag */ 105 1.1 fredette #define DR0_PCXS_EQWSTO 16 /* r/w enable quad-word stores */ 106 1.1 fredette #define DR0_PCXS_IHE 18 /* r/w I-cache sid hash enable */ 107 1.1 fredette #define DR0_PCXS_DOMAIN 19 108 1.1 fredette #define DR0_PCXS_DHE 20 /* r/w D-cache sid hash enable */ 109 1.1 fredette 110 1.1 fredette #define DR0_PCXT_DHPMC 10 /* r/c L1 D-cache error flag */ 111 1.1 fredette #define DR0_PCXT_ILPMC 14 /* r/c L1 I-cache error flag */ 112 1.1 fredette #define DR0_PCXT_IHE 18 /* r/w I-cache sid hash enable */ 113 1.1 fredette #define DR0_PCXT_DHE 20 /* r/w D-cache sid hash enable */ 114 1.1 fredette 115 1.4 jkunz /* Bits in CPU Diagnose Register 0 */ 116 1.1 fredette #define DR0_PCXL_L2IHPMC 6 /* r/c L2 I-cache error flag */ 117 1.1 fredette #define DR0_PCXL_L2IHPMC_DIS 7 /* r/w L2 I-cache hpmc disable mask */ 118 1.1 fredette #define DR0_PCXL_L2DHPMC 8 /* r/c L2 D-cache error flag */ 119 1.1 fredette #define DR0_PCXL_L2DHPMC_DIS 9 /* r/w L2 D-cache hpmc disable mask */ 120 1.1 fredette #define DR0_PCXL_L1IHPMC 10 /* r/c L1 I-cache error flag */ 121 1.1 fredette #define DR0_PCXL_L1IHPMC_DIS 11 /* r/w L1 I-cache hpmc disable mask */ 122 1.1 fredette #define DR0_PCXL_L2PARERR 15 /* r/c L2 Cache parity error (4 bit) */ 123 1.1 fredette #define DR0_PCXL_STORE0 16 /* r/w scratch space */ 124 1.1 fredette #define DR0_PCXL_PFMASK 17 /* r/w power-fail trap mask */ 125 1.1 fredette #define DR0_PCXL_STORE1 18 /* r/w scratch */ 126 1.1 fredette #define DR0_PCXL_FASTMODE 19 /* r 0-fast, 1-slow */ 127 1.1 fredette #define DR0_PCXL_ISTRM_EN 20 /* r/w I-cache streaming enable */ 128 1.1 fredette #define DR0_PCXL_DUAL_DIS 22 /* r/w disable dual-issue (2 bit) */ 129 1.1 fredette #define DR0_PCXL_ENDIAN 23 /* r/w little endian traps */ 130 1.1 fredette #define DR0_PCXL_SOU_EN 24 /* r/w stall-on-use on dc misses */ 131 1.1 fredette #define DR0_PCXL_SHINT_EN 25 /* r/w no-fill on miss store hints */ 132 1.1 fredette #define DR0_PCXL_IPREF_EN 26 /* r/w L2 to L1 I-cache prefetch */ 133 1.1 fredette #define DR0_PCXL_L2DHASH_EN 27 /* r/w L2 D-cache hash enable */ 134 1.1 fredette #define DR0_PCXL_L2IHASH_EN 28 /* r/w L2 I-cache hash enable */ 135 1.1 fredette #define DR0_PCXL_L1ICACHE_EN 29 /* r/w L1 I-cache enable */ 136 1.1 fredette #define DR0_PCXL_HIT 30 /* r Diag cache read hit indication */ 137 1.1 fredette #define DR0_PCXL_PARERR 31 /* r Diag cache read parity error */ 138 1.1 fredette 139 1.4 jkunz /* Bits in CPU Diagnose Register 25 */ 140 1.4 jkunz #define DR25_PCXL_POWFAIL 31 /* r set to 0 by HW on PWR fail */ 141 1.4 jkunz 142 1.1 fredette #define DR0_PCXL2_L1DHPMC 8 /* r/c L1 D-cache error flag */ 143 1.1 fredette #define DR0_PCXL2_L1DHPMC_DIS 9 /* r/w L1 D-cache hpmc disable */ 144 1.1 fredette #define DR0_PCXL2_L2DHPMC 10 /* r/c L1 I-cache error flag */ 145 1.1 fredette #define DR0_PCXL2_L2DHPMC_DIS 11 /* r/w L1 I-cache hpmc disable */ 146 1.3 jkunz #define DR0_PCXL2_SCRATCH 12 /* r/w scratch register */ 147 1.3 jkunz #define DR0_PCXL2_ACCEL_IO 13 /* /w enable accel IO writes */ 148 1.1 fredette #define DR0_PCXL2_STORE0 16 /* r/w scratch space */ 149 1.1 fredette #define DR0_PCXL2_PFMASK 17 /* r/w power-fail trap mask */ 150 1.1 fredette #define DR0_PCXL2_STORE1 18 /* r/w scratch */ 151 1.1 fredette #define DR0_PCXL2_DCSAFE 19 /* r/w serialize all data cache hangs */ 152 1.1 fredette #define DR0_PCXL2_ISTRM_EN 20 /* r/w I-cache streaming enable */ 153 1.1 fredette #define DR0_PCXL2_DUAL_DIS 22 /* r/w disable dual-issue (2 bit) */ 154 1.1 fredette #define DR0_PCXL2_ENDIAN 23 /* r/w little endian traps */ 155 1.1 fredette #define DR0_PCXL2_SOU_EN 24 /* r/w stall-on-use on dc misses */ 156 1.1 fredette #define DR0_PCXL2_SHINT_EN 25 /* r/w no-fill on miss store hints */ 157 1.1 fredette #define DR0_PCXL2_IPREF_EN 26 /* r/w L2 to L1 I-cache prefetch */ 158 1.1 fredette #define DR0_PCXL2_LMIN_EN 27 /* r/w minor ill insn traps on LIH */ 159 1.1 fredette #define DR0_PCXL2_RMIN_EN 28 /* r/w major ill insn traps on RIH */ 160 1.1 fredette #define DR0_PCXL2_L1CACHE_EN 29 /* r/w L1 I-cache enable */ 161 1.1 fredette 162 1.1 fredette #define DR_DTLB 8 163 1.1 fredette 164 1.1 fredette #define DR_ITLB 9 165 1.1 fredette 166 1.3 jkunz #define DR0_PCXL2_HTLB_ADDR 24 /* page address of the htlb */ 167 1.3 jkunz #define DR0_PCXL2_HTLB_CFG 25 /* htlb config */ 168 1.3 jkunz #define DR0_PCXL2_HTLB_P 0 /* r latches power fail signal */ 169 1.3 jkunz #define DR0_PCXL2_HTLB_MASK 19 /* w 12bit mask of the hash */ 170 1.3 jkunz #define DR0_PCXL2_HTLB_FP 26 /* r/w 3bit FP delay */ 171 1.3 jkunz #define DR0_PCXL2_HTLB_I 28 /* r/w disable ITLB htlb lookup */ 172 1.3 jkunz #define DR0_PCXL2_HTLB_U 29 /* r/w set cr28 only if tag nomatch */ 173 1.3 jkunz #define DR0_PCXL2_HTLB_N 30 /* r/w set cr28 from w3 or w7 (0) */ 174 1.3 jkunz #define DR0_PCXL2_HTLB_D 31 /* r/w disable DTLB htlb lookup */ 175 1.3 jkunz 176 1.1 fredette #define DR_ITLB_SIZE_1 24 177 1.1 fredette #define DR_ITLB_SIZE_0 25 178 1.1 fredette 179 1.1 fredette #define DR_DTLB_SIZE_1 26 180 1.1 fredette #define DR_DTLB_SIZE_0 27 181 1.1 fredette 182 1.1 fredette #define CCR_MASK 0xff 183 1.1 fredette 184 1.1 fredette #define HPPA_NREGS (32) 185 1.1 fredette #define HPPA_NFPREGS (33) /* 33rd is used for r0 in fpemul */ 186 1.1 fredette 187 1.2 chs #ifndef __ASSEMBLER__ 188 1.1 fredette 189 1.1 fredette struct reg { 190 1.9 skrll uint32_t r_regs[HPPA_NREGS]; /* r0 is psw */ 191 1.6 skrll 192 1.9 skrll uint32_t r_sar; 193 1.6 skrll 194 1.9 skrll uint32_t r_pcsqh; 195 1.9 skrll uint32_t r_pcsqt; 196 1.9 skrll uint32_t r_pcoqh; 197 1.9 skrll uint32_t r_pcoqt; 198 1.13 skrll 199 1.9 skrll uint32_t r_sr0; 200 1.9 skrll uint32_t r_sr1; 201 1.9 skrll uint32_t r_sr2; 202 1.9 skrll uint32_t r_sr3; 203 1.9 skrll uint32_t r_sr4; 204 1.9 skrll uint32_t r_sr5; /* !mcontext */ 205 1.9 skrll uint32_t r_sr6; /* !mcontext */ 206 1.9 skrll uint32_t r_sr7; /* !mcontext */ 207 1.6 skrll 208 1.9 skrll uint32_t r_cr26; 209 1.9 skrll uint32_t r_cr27; 210 1.1 fredette }; 211 1.1 fredette 212 1.1 fredette struct fpreg { 213 1.9 skrll uint64_t fpr_regs[HPPA_NFPREGS]; 214 1.1 fredette }; 215 1.2 chs #endif /* !__ASSEMBLER__ */ 216 1.1 fredette 217 1.1 fredette #endif /* _HPPA_REG_H_ */ 218