ev5.hh revision 924
113837Sgabeblack@google.com/* $Id$ */ 213837Sgabeblack@google.com 313837Sgabeblack@google.com#ifndef __EV5_H__ 413837Sgabeblack@google.com#define __EV5_H__ 513837Sgabeblack@google.com 613837Sgabeblack@google.com#ifndef SYSTEM_EV5 713837Sgabeblack@google.com#error This code is only valid for EV5 systems 813837Sgabeblack@google.com#endif 913837Sgabeblack@google.com 1013837Sgabeblack@google.com#include "targetarch/isa_traits.hh" 1113837Sgabeblack@google.com 1213837Sgabeblack@google.com//////////////////////////////////////////////////////////////////////// 1313837Sgabeblack@google.com// 1413837Sgabeblack@google.com// 1513837Sgabeblack@google.com// 1613837Sgabeblack@google.com 1713837Sgabeblack@google.com//////////////////////////////////////////////////////////////////////// 1813837Sgabeblack@google.com// 1913837Sgabeblack@google.com// 2013837Sgabeblack@google.com// 2113837Sgabeblack@google.com 2213837Sgabeblack@google.com#define MODE2MASK(X) (1 << (X)) 2313837Sgabeblack@google.com 2413837Sgabeblack@google.com// Alpha IPR register accessors 2513837Sgabeblack@google.com#define PC_PAL(X) ((X) & 0x1) 2613837Sgabeblack@google.com#define MCSR_SP(X) (((X) >> 1) & 0x3) 2713837Sgabeblack@google.com 2813837Sgabeblack@google.com#define ICSR_SDE(X) (((X) >> 30) & 0x1) 2913837Sgabeblack@google.com#define ICSR_SPE(X) (((X) >> 28) & 0x3) 3013837Sgabeblack@google.com#define ICSR_FPE(X) (((X) >> 26) & 0x1) 3113837Sgabeblack@google.com 3213837Sgabeblack@google.com#define ALT_MODE_AM(X) (((X) >> 3) & 0x3) 3313837Sgabeblack@google.com 3413837Sgabeblack@google.com#define DTB_CM_CM(X) (((X) >> 3) & 0x3) 3513837Sgabeblack@google.com 3613837Sgabeblack@google.com#ifdef ALPHA_TLASER 3713837Sgabeblack@google.com#define DTB_ASN_ASN(X) (((X) >> 57) & 0x7f) 3813837Sgabeblack@google.com#define DTB_PTE_PPN(X) (((X) >> 32) & 0x07ffffff) 3913837Sgabeblack@google.com#else 4013837Sgabeblack@google.com#define DTB_ASN_ASN(X) (((X) >> 57) & 0xff) 4113837Sgabeblack@google.com#define DTB_PTE_PPN(X) (((X) >> 32) & 0x07fffffff) 4213837Sgabeblack@google.com#endif 4313837Sgabeblack@google.com 4413837Sgabeblack@google.com#define DTB_PTE_XRE(X) (((X) >> 8) & 0xf) 4513837Sgabeblack@google.com#define DTB_PTE_XWE(X) (((X) >> 12) & 0xf) 4613837Sgabeblack@google.com#define DTB_PTE_FONR(X) (((X) >> 1) & 0x1) 4713837Sgabeblack@google.com#define DTB_PTE_FONW(X) (((X) >> 2) & 0x1) 4813837Sgabeblack@google.com#define DTB_PTE_GH(X) (((X) >> 5) & 0x3) 4913837Sgabeblack@google.com#define DTB_PTE_ASMA(X) (((X) >> 4) & 0x1) 5013837Sgabeblack@google.com 5113837Sgabeblack@google.com#define ICM_CM(X) (((X) >> 3) & 0x3) 5213837Sgabeblack@google.com 5313837Sgabeblack@google.com#ifdef ALPHA_TLASER 5413837Sgabeblack@google.com#define ITB_ASN_ASN(X) (((X) >> 4) & 0x7f) 5513837Sgabeblack@google.com#define ITB_PTE_PPN(X) (((X) >> 32) & 0x07ffffff) 5613837Sgabeblack@google.com#else 5713837Sgabeblack@google.com#define ITB_ASN_ASN(X) (((X) >> 4) & 0xff) 5813837Sgabeblack@google.com#define ITB_PTE_PPN(X) (((X) >> 32) & 0x07fffffff) 5913837Sgabeblack@google.com#endif 6013837Sgabeblack@google.com 6113837Sgabeblack@google.com#define ITB_PTE_XRE(X) (((X) >> 8) & 0xf) 6213837Sgabeblack@google.com#define ITB_PTE_FONR(X) (((X) >> 1) & 0x1) 6313837Sgabeblack@google.com#define ITB_PTE_FONW(X) (((X) >> 2) & 0x1) 6413837Sgabeblack@google.com#define ITB_PTE_GH(X) (((X) >> 5) & 0x3) 6513837Sgabeblack@google.com#define ITB_PTE_ASMA(X) (((X) >> 4) & 0x1) 6613837Sgabeblack@google.com 6713837Sgabeblack@google.com#define VA_UNIMPL_MASK ULL(0xfffff80000000000) 6813837Sgabeblack@google.com#define VA_IMPL_MASK ULL(0x000007ffffffffff) 6913837Sgabeblack@google.com#define VA_IMPL(X) ((X) & VA_IMPL_MASK) 7013837Sgabeblack@google.com#define VA_VPN(X) (VA_IMPL(X) >> 13) 7113837Sgabeblack@google.com#define VA_SPACE_EV5(X) (((X) >> 41) & 0x3) 7213837Sgabeblack@google.com#define VA_SPACE_EV6(X) (((X) >> 41) & 0x7f) 7313837Sgabeblack@google.com#define VA_POFS(X) ((X) & 0x1fff) 7413837Sgabeblack@google.com 7513837Sgabeblack@google.com#define PA_UNCACHED_BIT_39 ULL(0x8000000000) 7613837Sgabeblack@google.com#define PA_UNCACHED_BIT_40 ULL(0x10000000000) 7713837Sgabeblack@google.com#define PA_UNCACHED_BIT_43 ULL(0x80000000000) 7813837Sgabeblack@google.com#define PA_UNCACHED_MASK ULL(0x807ffffffff) // Clear PA<42:35> 7913837Sgabeblack@google.com#ifdef ALPHA_TLASER 8013837Sgabeblack@google.com#define PA_IPR_SPACE(X) ((X) >= ULL(0xFFFFF00000)) 8113837Sgabeblack@google.com#define PA_IMPL_MASK ULL(0xffffffffff) 8213837Sgabeblack@google.com#else 8313837Sgabeblack@google.com#define PA_IPR_SPACE(X) ((X) >= ULL(0xFFFFFF00000)) 8413837Sgabeblack@google.com#define PA_IMPL_MASK ULL(0xfffffffffff) // for Tsunami 8513837Sgabeblack@google.com#endif 8613837Sgabeblack@google.com 8713837Sgabeblack@google.com#define PA_PFN2PA(X) ((X) << 13) 8813837Sgabeblack@google.com 8913837Sgabeblack@google.com 9013837Sgabeblack@google.com#define MM_STAT_BAD_VA_MASK 0x0020 9113837Sgabeblack@google.com#define MM_STAT_DTB_MISS_MASK 0x0010 9213837Sgabeblack@google.com#define MM_STAT_FONW_MASK 0x0008 9313837Sgabeblack@google.com#define MM_STAT_FONR_MASK 0x0004 9413837Sgabeblack@google.com#define MM_STAT_ACV_MASK 0x0002 9513837Sgabeblack@google.com#define MM_STAT_WR_MASK 0x0001 9613837Sgabeblack@google.com 9713837Sgabeblack@google.com#define OPCODE(X) (X >> 26) & 0x3f 9813837Sgabeblack@google.com#define RA(X) (X >> 21) & 0x1f 9913837Sgabeblack@google.com 10013837Sgabeblack@google.com//////////////////////////////////////////////////////////////////////// 10113837Sgabeblack@google.com// 10213837Sgabeblack@google.com// 10313837Sgabeblack@google.com// 10413837Sgabeblack@google.com 10513837Sgabeblack@google.com// VPTE size for HW_LD/HW_ST 10613837Sgabeblack@google.com#define HW_VPTE ((inst >> 11) & 0x1) 10713837Sgabeblack@google.com 10813837Sgabeblack@google.com// QWORD size for HW_LD/HW_ST 10913837Sgabeblack@google.com#define HW_QWORD ((inst >> 12) & 0x1) 11013837Sgabeblack@google.com 11113837Sgabeblack@google.com// ALT mode for HW_LD/HW_ST 11213837Sgabeblack@google.com#define HW_ALT (((inst >> 14) & 0x1) ? ALTMODE : 0) 11313837Sgabeblack@google.com 11413837Sgabeblack@google.com// LOCK/COND mode for HW_LD/HW_ST 11513837Sgabeblack@google.com#define HW_LOCK (((inst >> 10) & 0x1) ? LOCKED : 0) 11613837Sgabeblack@google.com#define HW_COND (((inst >> 10) & 0x1) ? LOCKED : 0) 11713837Sgabeblack@google.com 11813837Sgabeblack@google.com// PHY size for HW_LD/HW_ST 11913837Sgabeblack@google.com#define HW_PHY (((inst >> 15) & 0x1) ? PHYSICAL : 0) 12013837Sgabeblack@google.com 12113837Sgabeblack@google.com// OFFSET for HW_LD/HW_ST 12213837Sgabeblack@google.com#define HW_OFS (inst & 0x3ff) 12313837Sgabeblack@google.com 12413837Sgabeblack@google.com 12513837Sgabeblack@google.com#define PAL_BASE 0x4000 12613837Sgabeblack@google.com 12713837Sgabeblack@google.com#endif //__EV5_H__ 12813837Sgabeblack@google.com