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__ */