1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * MT regs definitions, follows on from mipsregs.h 4 * Copyright (C) 2004 - 2005 MIPS Technologies, Inc. All rights reserved. 5 * Elizabeth Clarke et. al. 6 * 7 */ 8 #ifndef _ASM_MIPSMTREGS_H 9 #define _ASM_MIPSMTREGS_H 10 11 #include <asm/mipsregs.h> 12 13 /* 14 * Macros for use in assembly language code 15 */ 16 17 #define CP0_MVPCONTROL $0, 1 18 #define CP0_MVPCONF0 $0, 2 19 #define CP0_MVPCONF1 $0, 3 20 #define CP0_VPECONTROL $1, 1 21 #define CP0_VPECONF0 $1, 2 22 #define CP0_VPECONF1 $1, 3 23 #define CP0_YQMASK $1, 4 24 #define CP0_VPESCHEDULE $1, 5 25 #define CP0_VPESCHEFBK $1, 6 26 #define CP0_TCSTATUS $2, 1 27 #define CP0_TCBIND $2, 2 28 #define CP0_TCRESTART $2, 3 29 #define CP0_TCHALT $2, 4 30 #define CP0_TCCONTEXT $2, 5 31 #define CP0_TCSCHEDULE $2, 6 32 #define CP0_TCSCHEFBK $2, 7 33 #define CP0_SRSCONF0 $6, 1 34 #define CP0_SRSCONF1 $6, 2 35 #define CP0_SRSCONF2 $6, 3 36 #define CP0_SRSCONF3 $6, 4 37 #define CP0_SRSCONF4 $6, 5 38 39 /* MVPControl fields */ 40 #define MVPCONTROL_EVP (_ULCAST_(1)) 41 42 #define MVPCONTROL_VPC_SHIFT 1 43 #define MVPCONTROL_VPC (_ULCAST_(1) << MVPCONTROL_VPC_SHIFT) 44 45 #define MVPCONTROL_STLB_SHIFT 2 46 #define MVPCONTROL_STLB (_ULCAST_(1) << MVPCONTROL_STLB_SHIFT) 47 48 /* MVPConf0 fields */ 49 #define MVPCONF0_PTC_SHIFT 0 50 #define MVPCONF0_PTC (_ULCAST_(0xff)) 51 #define MVPCONF0_PVPE_SHIFT 10 52 #define MVPCONF0_PVPE (_ULCAST_(0xf) << MVPCONF0_PVPE_SHIFT) 53 #define MVPCONF0_TCA_SHIFT 15 54 #define MVPCONF0_TCA (_ULCAST_(1) << MVPCONF0_TCA_SHIFT) 55 #define MVPCONF0_PTLBE_SHIFT 16 56 #define MVPCONF0_PTLBE (_ULCAST_(0x3ff) << MVPCONF0_PTLBE_SHIFT) 57 #define MVPCONF0_TLBS_SHIFT 29 58 #define MVPCONF0_TLBS (_ULCAST_(1) << MVPCONF0_TLBS_SHIFT) 59 #define MVPCONF0_M_SHIFT 31 60 #define MVPCONF0_M (_ULCAST_(0x1) << MVPCONF0_M_SHIFT) 61 62 /* config3 fields */ 63 #define CONFIG3_MT_SHIFT 2 64 #define CONFIG3_MT (_ULCAST_(1) << CONFIG3_MT_SHIFT) 65 66 /* VPEControl fields (per VPE) */ 67 #define VPECONTROL_TARGTC (_ULCAST_(0xff)) 68 69 #define VPECONTROL_TE_SHIFT 15 70 #define VPECONTROL_TE (_ULCAST_(1) << VPECONTROL_TE_SHIFT) 71 #define VPECONTROL_EXCPT_SHIFT 16 72 #define VPECONTROL_EXCPT (_ULCAST_(0x7) << VPECONTROL_EXCPT_SHIFT) 73 74 /* Thread Exception Codes for EXCPT field */ 75 #define THREX_TU 0 76 #define THREX_TO 1 77 #define THREX_IYQ 2 78 #define THREX_GSX 3 79 #define THREX_YSCH 4 80 #define THREX_GSSCH 5 81 82 #define VPECONTROL_GSI_SHIFT 20 83 #define VPECONTROL_GSI (_ULCAST_(1) << VPECONTROL_GSI_SHIFT) 84 #define VPECONTROL_YSI_SHIFT 21 85 #define VPECONTROL_YSI (_ULCAST_(1) << VPECONTROL_YSI_SHIFT) 86 87 /* VPEConf0 fields (per VPE) */ 88 #define VPECONF0_VPA_SHIFT 0 89 #define VPECONF0_VPA (_ULCAST_(1) << VPECONF0_VPA_SHIFT) 90 #define VPECONF0_MVP_SHIFT 1 91 #define VPECONF0_MVP (_ULCAST_(1) << VPECONF0_MVP_SHIFT) 92 #define VPECONF0_XTC_SHIFT 21 93 #define VPECONF0_XTC (_ULCAST_(0xff) << VPECONF0_XTC_SHIFT) 94 95 /* VPEConf1 fields (per VPE) */ 96 #define VPECONF1_NCP1_SHIFT 0 97 #define VPECONF1_NCP1 (_ULCAST_(0xff) << VPECONF1_NCP1_SHIFT) 98 #define VPECONF1_NCP2_SHIFT 10 99 #define VPECONF1_NCP2 (_ULCAST_(0xff) << VPECONF1_NCP2_SHIFT) 100 #define VPECONF1_NCX_SHIFT 20 101 #define VPECONF1_NCX (_ULCAST_(0xff) << VPECONF1_NCX_SHIFT) 102 103 /* TCStatus fields (per TC) */ 104 #define TCSTATUS_TASID (_ULCAST_(0xff)) 105 #define TCSTATUS_IXMT_SHIFT 10 106 #define TCSTATUS_IXMT (_ULCAST_(1) << TCSTATUS_IXMT_SHIFT) 107 #define TCSTATUS_TKSU_SHIFT 11 108 #define TCSTATUS_TKSU (_ULCAST_(3) << TCSTATUS_TKSU_SHIFT) 109 #define TCSTATUS_A_SHIFT 13 110 #define TCSTATUS_A (_ULCAST_(1) << TCSTATUS_A_SHIFT) 111 #define TCSTATUS_DA_SHIFT 15 112 #define TCSTATUS_DA (_ULCAST_(1) << TCSTATUS_DA_SHIFT) 113 #define TCSTATUS_DT_SHIFT 20 114 #define TCSTATUS_DT (_ULCAST_(1) << TCSTATUS_DT_SHIFT) 115 #define TCSTATUS_TDS_SHIFT 21 116 #define TCSTATUS_TDS (_ULCAST_(1) << TCSTATUS_TDS_SHIFT) 117 #define TCSTATUS_TSST_SHIFT 22 118 #define TCSTATUS_TSST (_ULCAST_(1) << TCSTATUS_TSST_SHIFT) 119 #define TCSTATUS_RNST_SHIFT 23 120 #define TCSTATUS_RNST (_ULCAST_(3) << TCSTATUS_RNST_SHIFT) 121 /* Codes for RNST */ 122 #define TC_RUNNING 0 123 #define TC_WAITING 1 124 #define TC_YIELDING 2 125 #define TC_GATED 3 126 127 #define TCSTATUS_TMX_SHIFT 27 128 #define TCSTATUS_TMX (_ULCAST_(1) << TCSTATUS_TMX_SHIFT) 129 /* TCStatus TCU bits can use same definitions/offsets as CU bits in Status */ 130 131 /* TCBind */ 132 #define TCBIND_CURVPE_SHIFT 0 133 #define TCBIND_CURVPE (_ULCAST_(0xf)) 134 135 #define TCBIND_CURTC_SHIFT 21 136 137 #define TCBIND_CURTC (_ULCAST_(0xff) << TCBIND_CURTC_SHIFT) 138 139 /* TCHalt */ 140 #define TCHALT_H (_ULCAST_(1)) 141 142 #endif 143