Module Name: src Committed By: matt Date: Sat Mar 1 05:27:22 UTC 2014
Modified Files: src/sys/arch/arm/include: armreg.h Log Message: defines/inlines for cortex a5/a7 tlbdata ops To generate a diff of this commit: cvs rdiff -u -r1.87 -r1.88 src/sys/arch/arm/include/armreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/include/armreg.h diff -u src/sys/arch/arm/include/armreg.h:1.87 src/sys/arch/arm/include/armreg.h:1.88 --- src/sys/arch/arm/include/armreg.h:1.87 Wed Feb 26 02:03:00 2014 +++ src/sys/arch/arm/include/armreg.h Sat Mar 1 05:27:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: armreg.h,v 1.87 2014/02/26 02:03:00 matt Exp $ */ +/* $NetBSD: armreg.h,v 1.88 2014/03/01 05:27:22 matt Exp $ */ /* * Copyright (c) 1998, 2001 Ben Harris @@ -670,6 +670,84 @@ #define ARM_CNTHCTL_PL1PCTEN __BIT(1) #define ARM_CNTHCTL_PL1VCTEN __BIT(0) +#define ARM_A5_TLBDATA_DOM __BITS(62,59) +#define ARM_A5_TLBDATA_AP __BITS(58,56) +#define ARM_A5_TLBDATA_NS_WALK __BIT(55) +#define ARM_A5_TLBDATA_NS_PAGE __BIT(54) +#define ARM_A5_TLBDATA_NX __BIT(53) +#define ARM_A5_TLBDATA_TEX __BITS(52,50) +#define ARM_A5_TLBDATA_B __BIT(49) +#define ARM_A5_TLBDATA_C __BIT(48) +#define ARM_A5_TLBDATA_S __BIT(47) +#define ARM_A5_TLBDATA_ASID __BIT(46,39) +#define ARM_A5_TLBDATA_SIZE __BIT(38,37) +#define ARM_A5_TLBDATA_SIZE_4KB 0 +#define ARM_A5_TLBDATA_SIZE_16KB 1 +#define ARM_A5_TLBDATA_SIZE_1MB 2 +#define ARM_A5_TLBDATA_SIZE_16MB 3 +#define ARM_A5_TLBDATA_VA __BIT(36,22) +#define ARM_A5_TLBDATA_PA __BIT(21,2) +#define ARM_A5_TLBDATA_nG __BIT(1) +#define ARM_A5_TLBDATA_VALID __BIT(0) + +#define ARM_A7_TLBDATA2_S2_LEVEL __BITS(85-64,84-64) +#define ARM_A7_TLBDATA2_S1_SIZE __BITS(83-64,82-64) +#define ARM_A7_TLBDATA2_S1_SIZE_4KB 0 +#define ARM_A7_TLBDATA2_S1_SIZE_64KB 0 +#define ARM_A7_TLBDATA2_S1_SIZE_1MB 0 +#define ARM_A7_TLBDATA2_S1_SIZE_16MB 0 +#define ARM_A7_TLBDATA2_DOM __BITS(81-64,78-64) +#define ARM_A7_TLBDATA2_IS __BITS(77-64,76-64) +#define ARM_A7_TLBDATA2_IS_NC 0 +#define ARM_A7_TLBDATA2_IS_WB 1 +#define ARM_A7_TLBDATA2_IS_WT 2 +#define ARM_A7_TLBDATA2_IS_DSO 3 +#define ARM_A7_TLBDATA2_S2OVR __BIT(75-64) +#define ARM_A7_TLBDATA2_SDO_MT __BITS(74-64,72-64) +#define ARM_A7_TLBDATA2_SDO_MT_D 2 +#define ARM_A7_TLBDATA2_SDO_MT_SO 6 +#define ARM_A7_TLBDATA2_OS __BITS(75-64,74-64) +#define ARM_A7_TLBDATA2_OS_NC 0 +#define ARM_A7_TLBDATA2_OS_WB_WA 1 +#define ARM_A7_TLBDATA2_OS_WT 2 +#define ARM_A7_TLBDATA2_OS_WB 3 +#define ARM_A7_TLBDATA2_SH __BITS(73-64,72-64) +#define ARM_A7_TLBDATA2_SH_NONE 0 +#define ARM_A7_TLBDATA2_SH_UNUSED 1 +#define ARM_A7_TLBDATA2_SH_OS 2 +#define ARM_A7_TLBDATA2_SH_IS 3 +#define ARM_A7_TLBDATA2_XN2 __BIT(71-64) +#define ARM_A7_TLBDATA2_XN1 __BIT(70-64) +#define ARM_A7_TLBDATA2_PXN __BIT(69-64) + +#define ARM_A7_TLBDATA12_PA __BITS(68-32,41-32) + +#define ARM_A7_TLBDATA1_NS __BIT(40-32) +#define ARM_A7_TLBDATA1_HAP __BITS(39-32,38-32) +#define ARM_A7_TLBDATA1_AP __BITS(37-32,35-32) +#define ARM_A7_TLBDATA1_nG __BIT(34-32) + +#define ARM_A7_TLBDATA01_ASID __BITS(33,26) + +#define ARM_A7_TLBDATA0_VMID __BITS(25,18) +#define ARM_A7_TLBDATA0_VA __BITS(17,5) +#define ARM_A7_TLBDATA0_NS_WALK __BIT(4) +#define ARM_A7_TLBDATA0_SIZE __BITS(3,1) +#define ARM_A7_TLBDATA0_SIZE_V7_4KB 0 +#define ARM_A7_TLBDATA0_SIZE_LPAE_4KB 1 +#define ARM_A7_TLBDATA0_SIZE_V7_64KB 2 +#define ARM_A7_TLBDATA0_SIZE_LPAE_64KB 3 +#define ARM_A7_TLBDATA0_SIZE_V7_1MB 4 +#define ARM_A7_TLBDATA0_SIZE_LPAE_2MB 5 +#define ARM_A7_TLBDATA0_SIZE_V7_16MB 6 +#define ARM_A7_TLBDATA0_SIZE_LPAE_1GB 7 + +#define ARM_TLBDATA_VALID __BIT(0) + +#define ARM_TLBDATAOP_WAY __BIT(31) +#define ARM_A5_TLBDATAOP_INDEX __BITS(5,0) +#define ARM_A7_TLBDATAOP_INDEX __BITS(6,0) + #if !defined(__ASSEMBLER__) && !defined(_RUMPKERNEL) #define ARMREG_READ_INLINE(name, __insnstring) \ static inline uint32_t armreg_##name##_read(void) \ @@ -861,6 +939,11 @@ ARMREG_WRITE_INLINE(pmcrv6, "p15,0,%0,c1 ARMREG_READ_INLINE(pmccntrv6, "p15,0,%0,c15,c12,1") /* PMC Cycle Counter (armv6) */ ARMREG_WRITE_INLINE(pmccntrv6, "p15,0,%0,c15,c12,1") /* PMC Cycle Counter (armv6) */ +ARMREG_READ_INLINE(tlbdata0, "p15,3,%0,c15,c0,0") /* TLB Data Register 0 (cortex) */ +ARMREG_READ_INLINE(tlbdata1, "p15,3,%0,c15,c0,1") /* TLB Data Register 1 (cortex) */ +ARMREG_READ_INLINE(tlbdata2, "p15,3,%0,c15,c0,2") /* TLB Data Register 2 (cortex) */ +ARMREG_WRITE_INLINE(tlbdataop, "p15,3,%0,c15,c4,2") /* TLB Data Read Operation (cortex) */ + #endif /* !__ASSEMBLER__ */