#ifndef __SPR_DEFS_H #define __SPR_DEFS_H #if 1 //def __aeon__ #define MAX_GRPS (32) #define MAX_SPRS_PER_GRP_BITS (11) #define MAX_SPRS_PER_GRP (1 << MAX_SPRS_PER_GRP_BITS) #define MAX_SPRS (0x10000) #define SPR_GRP_OFF(spr) ((spr) & (MAX_SPRS_PER_GRP - 1)) #define SPR_GRP(spr) ((spr)&(-MAX_SPRS_PER_GRP)) /* Base addresses for the groups */ #define SPRGROUP_SYS (0<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_DMMU (1<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_IMMU (2<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_DC (3<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_IC (4<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_MAC (5<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_D (6<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_PC (7<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_PM (8<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_PIC (9<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_TT (10<< MAX_SPRS_PER_GRP_BITS) #define SPRGROUP_ACCEL (11<< MAX_SPRS_PER_GRP_BITS) #define SPR_GROUP_SYS SPRGROUP_SYS #define SPR_GROUP_PM SPRGROUP_PM #define SPR_GROUP_PIC SPRGROUP_PIC #define SPR_GROUP_TT SPRGROUP_TT /* System control and status group */ #define SPR_VR (SPRGROUP_SYS + 0) #define SPR_UPR (SPRGROUP_SYS + 1) #define SPR_CPUCFGR (SPRGROUP_SYS + 2) #define SPR_DMMUCFGR (SPRGROUP_SYS + 3) #define SPR_IMMUCFGR (SPRGROUP_SYS + 4) #define SPR_DCCFGR (SPRGROUP_SYS + 5) #define SPR_ICCFGR (SPRGROUP_SYS + 6) #define SPR_DCFGR (SPRGROUP_SYS + 7) #define SPR_PCCFGR (SPRGROUP_SYS + 8) #define SPR_NPC (SPRGROUP_SYS + 16) /* CZ 21/06/01 */ #define SPR_DRETURN (SPRGROUP_SYS + 16) /* CZ 21/06/01 */ #define SPR_SR (SPRGROUP_SYS + 17) /* CZ 21/06/01 */ #define SPR_PPC (SPRGROUP_SYS + 18) /* CZ 21/06/01 */ #define SPR_EPCR_BASE (SPRGROUP_SYS + 32) /* CZ 21/06/01 */ #define SPR_EPCR_LAST (SPRGROUP_SYS + 47) /* CZ 21/06/01 */ #define SPR_EEAR_BASE (SPRGROUP_SYS + 48) #define SPR_EEAR_LAST (SPRGROUP_SYS + 63) #define SPR_ESR_BASE (SPRGROUP_SYS + 64) #define SPR_ESR_LAST (SPRGROUP_SYS + 79) #define SPR_GPR(x) (SPRGROUP_SYS + 0x400 + (x)) #define SPR_SYS_SR SPR_GRP_OFF(SPR_SR) #define SPR_SYS_ESR_BASE SPR_GRP_OFF(SPR_ESR_BASE) #define SPR_SYS_ESR_LAST SPR_GRP_OFF(SPR_ESR_LAST) /* Data MMU group */ #define SPR_DMMUCR (SPRGROUP_DMMU + 0) #define SPR_DTLBMR_BASE(WAY) (SPRGROUP_DMMU + 0x200 + (WAY) * 0x100) #define SPR_DTLBMR_LAST(WAY) (SPRGROUP_DMMU + 0x27f + (WAY) * 0x100) #define SPR_DTLBTR_BASE(WAY) (SPRGROUP_DMMU + 0x280 + (WAY) * 0x100) #define SPR_DTLBTR_LAST(WAY) (SPRGROUP_DMMU + 0x2ff + (WAY) * 0x100) /* Instruction MMU group */ #define SPR_IMMUCR (SPRGROUP_IMMU + 0) #define SPR_ITLBMR_BASE(WAY) (SPRGROUP_IMMU + 0x200 + (WAY) * 0x100) #define SPR_ITLBMR_LAST(WAY) (SPRGROUP_IMMU + 0x27f + (WAY) * 0x100) #define SPR_ITLBTR_BASE(WAY) (SPRGROUP_IMMU + 0x280 + (WAY) * 0x100) #define SPR_ITLBTR_LAST(WAY) (SPRGROUP_IMMU + 0x2ff + (WAY) * 0x100) /* Data cache group */ #define SPR_DCCR (SPRGROUP_DC + 0) #define SPR_DCBPR (SPRGROUP_DC + 1) #define SPR_DCBFR (SPRGROUP_DC + 2) #define SPR_DCBIR (SPRGROUP_DC + 3) #define SPR_DCBWR (SPRGROUP_DC + 4) #define SPR_DCBLR (SPRGROUP_DC + 5) #define SPR_DCR_BASE(WAY) (SPRGROUP_DC + 0x200 + (WAY) * 0x200) #define SPR_DCR_LAST(WAY) (SPRGROUP_DC + 0x3ff + (WAY) * 0x200) /* Instruction cache group */ #define SPR_ICCR (SPRGROUP_IC + 0) #define SPR_ICBPR (SPRGROUP_IC + 1) #define SPR_ICBIR (SPRGROUP_IC + 2) #define SPR_ICBLR (SPRGROUP_IC + 3) #define SPR_ICR_BASE(WAY) (SPRGROUP_IC + 0x200 + (WAY) * 0x200) #define SPR_ICR_LAST(WAY) (SPRGROUP_IC + 0x3ff + (WAY) * 0x200) /* MAC group */ #define SPR_MACLO (SPRGROUP_MAC + 1) #define SPR_MACHI (SPRGROUP_MAC + 2) #define SPR_MACHI2 (SPRGROUP_MAC + 3) #define SPR_AMULHI (SPRGROUP_MAC + 8) #define SPR_AMACLO0 (SPRGROUP_MAC + 9) #define SPR_AMACHI0 (SPRGROUP_MAC + 10) #define SPR_AMACLO1 (SPRGROUP_MAC + 11) #define SPR_AMACHI1 (SPRGROUP_MAC + 12) #define SPR_AMACCFG (SPRGROUP_MAC + 13) #define SPR_AMACSTATUS (SPRGROUP_MAC + 14) #define SPR_AMACGUARD0 (SPRGROUP_MAC + 5) #define SPR_AMACGUARD1 (SPRGROUP_MAC + 6) #define SPR_AMACQ0 (SPRGROUP_MAC + 16) #define SPR_AMACQ0_ADDROFS (SPRGROUP_MAC + 17) #define SPR_AMACQ0_STRIDE (SPRGROUP_MAC + 18) #define SPR_AMACQ0_STRIDE2 (SPRGROUP_MAC + 19) #define SPR_AMACQ0_ADDROFS_STRIDE (SPRGROUP_MAC + 20) #define SPR_AMACQ1 (SPRGROUP_MAC + 24) #define SPR_AMACQ1_ADDROFS (SPRGROUP_MAC + 25) #define SPR_AMACQ1_STRIDE (SPRGROUP_MAC + 26) #define SPR_AMACQ1_STRIDE2 (SPRGROUP_MAC + 27) #define SPR_AMACQ1_ADDROFS_STRIDE (SPRGROUP_MAC + 28) #define AMACQSTRIDE_BITS 8 #define MK_QADDR_STRIDE(addr_offset, stride, stride2) \ ( ((unsigned)(addr_offset)<<(AMACQSTRIDE_BITS+AMACQSTRIDE_BITS)) | \ (((unsigned)(stride2) & ((1<