1*27620987Smatt /* $NetBSD: spr.h,v 1.1 2014/09/03 19:34:26 matt Exp $ */ 2*27620987Smatt 3*27620987Smatt /*- 4*27620987Smatt * Copyright (c) 2014 The NetBSD Foundation, Inc. 5*27620987Smatt * All rights reserved. 6*27620987Smatt * 7*27620987Smatt * This code is derived from software contributed to The NetBSD Foundation 8*27620987Smatt * by Matt Thomas of 3am Software Foundry. 9*27620987Smatt * 10*27620987Smatt * Redistribution and use in source and binary forms, with or without 11*27620987Smatt * modification, are permitted provided that the following conditions 12*27620987Smatt * are met: 13*27620987Smatt * 1. Redistributions of source code must retain the above copyright 14*27620987Smatt * notice, this list of conditions and the following disclaimer. 15*27620987Smatt * 2. Redistributions in binary form must reproduce the above copyright 16*27620987Smatt * notice, this list of conditions and the following disclaimer in the 17*27620987Smatt * documentation and/or other materials provided with the distribution. 18*27620987Smatt * 19*27620987Smatt * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20*27620987Smatt * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21*27620987Smatt * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22*27620987Smatt * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23*27620987Smatt * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24*27620987Smatt * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25*27620987Smatt * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26*27620987Smatt * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27*27620987Smatt * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28*27620987Smatt * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29*27620987Smatt * POSSIBILITY OF SUCH DAMAGE. 30*27620987Smatt */ 31*27620987Smatt 32*27620987Smatt #ifndef _OR1K_SPR_H_ 33*27620987Smatt #define _OR1K_SPR_H_ 34*27620987Smatt 35*27620987Smatt #define SPR_GROUP __BITS(15,11) 36*27620987Smatt #define SPR_REG __BITS(10,0) 37*27620987Smatt 38*27620987Smatt #define SPR_MAKE(g,r) (__SHIFTIN((g), SPR_GROUP)|__SHIFTIN((r), SPR_REG)) 39*27620987Smatt 40*27620987Smatt #define SPR_VR SPR_MAKE(0, 0) 41*27620987Smatt #define SPR_UPR SPR_MAKE(0, 1) 42*27620987Smatt #define SPR_CPUCFGR SPR_MAKE(0, 2) 43*27620987Smatt #define SPR_DMMUCFGR SPR_MAKE(0, 3) 44*27620987Smatt #define SPR_IMMUCFGR SPR_MAKE(0, 4) 45*27620987Smatt #define SPR_DCCFGR SPR_MAKE(0, 5) 46*27620987Smatt #define SPR_ICCFGR SPR_MAKE(0, 6) 47*27620987Smatt #define SPR_DCFGR SPR_MAKE(0, 7) 48*27620987Smatt #define SPR_PCCFGR SPR_MAKE(0, 8) 49*27620987Smatt #define SPR_VR2 SPR_MAKE(0, 9) 50*27620987Smatt #define SPR_AVR SPR_MAKE(0, 10) 51*27620987Smatt #define SPR_EVBAR SPR_MAKE(0, 11) 52*27620987Smatt #define SPR_AECR SPR_MAKE(0, 12) 53*27620987Smatt #define SPR_AESR SPR_MAKE(0, 13) 54*27620987Smatt #define SPR_NPC SPR_MAKE(0, 16) 55*27620987Smatt #define SPR_SR SPR_MAKE(0, 17) 56*27620987Smatt #define SR_CID __BITS(31,28) 57*27620987Smatt #define SR_SUMRA __BIT(16) 58*27620987Smatt #define SR_FO __BIT(15) 59*27620987Smatt #define SR_EPH __BIT(14) 60*27620987Smatt #define SR_DSX __BIT(13) 61*27620987Smatt #define SR_OVE __BIT(12) 62*27620987Smatt #define SR_OV __BIT(11) 63*27620987Smatt #define SR_CY __BIT(10) 64*27620987Smatt #define SR_F __BIT(9) 65*27620987Smatt #define SR_CE __BIT(8) 66*27620987Smatt #define SR_LEE __BIT(7) 67*27620987Smatt #define SR_IME __BIT(6) 68*27620987Smatt #define SR_DME __BIT(5) 69*27620987Smatt #define SR_ICE __BIT(4) 70*27620987Smatt #define SR_DCE __BIT(3) 71*27620987Smatt #define SR_IEE __BIT(2) 72*27620987Smatt #define SR_TEE __BIT(1) 73*27620987Smatt #define SR_SM __BIT(0) 74*27620987Smatt #define SPR_PPC SPR_MAKE(0, 18) 75*27620987Smatt #define SPR_FPCSR SPR_MAKE(0, 20) 76*27620987Smatt #define FPCSR_DZF __BIT(11) 77*27620987Smatt #define FPCSR_INF __BIT(10) 78*27620987Smatt #define FPCSR_IVF __BIT(9) 79*27620987Smatt #define FPCSR_IXF __BIT(8) 80*27620987Smatt #define FPCSR_ZF __BIT(7) 81*27620987Smatt #define FPCSR_QNF __BIT(6) 82*27620987Smatt #define FPCSR_SNF __BIT(5) 83*27620987Smatt #define FPCSR_UNF __BIT(4) 84*27620987Smatt #define FPCSR_OVF __BIT(3) 85*27620987Smatt #define FPCSR_RM __BITS(2,1) 86*27620987Smatt #define FPCSR_RM_RN 0 87*27620987Smatt #define FPCSR_RM_RZ 1 88*27620987Smatt #define FPCSR_RM_RP 2 89*27620987Smatt #define FPCSR_RM_RM 3 90*27620987Smatt #define FPCSR_FPEE __BIT(0) 91*27620987Smatt #define SPR_ISRn(n) SPR_MAKE(0, 21+(n)) 92*27620987Smatt #define SPR_EPCRn(n) SPR_MAKE(0, 32+(n)) 93*27620987Smatt #define SPR_EEARn(n) SPR_MAKE(0, 48+(n)) 94*27620987Smatt #define SPR_ESRn(n) SPR_MAKE(0, 64+(n)) 95*27620987Smatt #define SPR_GRPN(cid,n) SPR_MASK(0, 1024+(cid)*32+(n)) 96*27620987Smatt 97*27620987Smatt #endif /* _OR1K_SPR_H_ */ 98