|
@@ -39,8 +39,12 @@
|
|
|
#define ACR_CM_OFF_PRE 0x00000040 /* No cache, precise */
|
|
|
#define ACR_CM_OFF_IMP 0x00000060 /* No cache, imprecise */
|
|
|
#define ACR_CM 0x00000060 /* Cache mode mask */
|
|
|
+#define ACR_SP 0x00000008 /* Supervisor protect */
|
|
|
#define ACR_WPROTECT 0x00000004 /* Write protect */
|
|
|
|
|
|
+#define ACR_BA(x) ((x) & 0xff000000)
|
|
|
+#define ACR_ADMSK(x) ((((x) - 1) & 0xff000000) >> 8)
|
|
|
+
|
|
|
#if defined(CONFIG_M5407)
|
|
|
|
|
|
#define ICACHE_SIZE 0x4000 /* instruction - 16k */
|
|
@@ -56,6 +60,11 @@
|
|
|
#define CACHE_LINE_SIZE 0x0010 /* 16 bytes */
|
|
|
#define CACHE_WAYS 4 /* 4 ways */
|
|
|
|
|
|
+#define ICACHE_SET_MASK ((ICACHE_SIZE / 64 - 1) << CACHE_WAYS)
|
|
|
+#define DCACHE_SET_MASK ((DCACHE_SIZE / 64 - 1) << CACHE_WAYS)
|
|
|
+#define ICACHE_MAX_ADDR ICACHE_SET_MASK
|
|
|
+#define DCACHE_MAX_ADDR DCACHE_SET_MASK
|
|
|
+
|
|
|
/*
|
|
|
* Version 4 cores have a true harvard style separate instruction
|
|
|
* and data cache. Enable data and instruction caches, also enable write
|
|
@@ -73,6 +82,27 @@
|
|
|
#else
|
|
|
#define CACHE_MODE (CACR_DEC+CACR_DESB+CACR_DDCM_P+CACR_BEC+CACR_IEC+CACR_EUSP)
|
|
|
#endif
|
|
|
+#define CACHE_INIT (CACR_DCINVA+CACR_BCINVA+CACR_ICINVA)
|
|
|
+
|
|
|
+#if defined(CONFIG_MMU)
|
|
|
+/*
|
|
|
+ * If running with the MMU enabled then we need to map the internal
|
|
|
+ * register region as non-cacheable. And then we map all our RAM as
|
|
|
+ * cacheable and supervisor access only.
|
|
|
+ */
|
|
|
+#define ACR0_MODE (ACR_BA(CONFIG_MBAR)+ACR_ADMSK(0x1000000)+ \
|
|
|
+ ACR_ENABLE+ACR_SUPER+ACR_CM_OFF_PRE+ACR_SP)
|
|
|
+#define ACR1_MODE (ACR_BA(CONFIG_RAMBASE)+ACR_ADMSK(CONFIG_RAMSIZE)+ \
|
|
|
+ ACR_ENABLE+ACR_SUPER+ACR_SP)
|
|
|
+#define ACR2_MODE 0
|
|
|
+#define ACR3_MODE (ACR_BA(CONFIG_RAMBASE)+ACR_ADMSK(CONFIG_RAMSIZE)+ \
|
|
|
+ ACR_ENABLE+ACR_SUPER+ACR_SP)
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+/*
|
|
|
+ * For the non-MMU enabled case we map all of RAM as cacheable.
|
|
|
+ */
|
|
|
#if defined(CONFIG_CACHE_COPYBACK)
|
|
|
#define DATA_CACHE_MODE (ACR_ENABLE+ACR_ANY+ACR_CM_CP)
|
|
|
#else
|
|
@@ -80,7 +110,6 @@
|
|
|
#endif
|
|
|
#define INSN_CACHE_MODE (ACR_ENABLE+ACR_ANY)
|
|
|
|
|
|
-#define CACHE_INIT (CACR_DCINVA+CACR_BCINVA+CACR_ICINVA)
|
|
|
#define CACHE_INVALIDATE (CACHE_MODE+CACR_DCINVA+CACR_BCINVA+CACR_ICINVA)
|
|
|
#define CACHE_INVALIDATEI (CACHE_MODE+CACR_BCINVA+CACR_ICINVA)
|
|
|
#define CACHE_INVALIDATED (CACHE_MODE+CACR_DCINVA)
|
|
@@ -94,4 +123,5 @@
|
|
|
#define CACHE_PUSH
|
|
|
#endif
|
|
|
|
|
|
+#endif /* CONFIG_MMU */
|
|
|
#endif /* m54xxacr_h */
|