Skip to contentSkip to conversation

nds32: ftmac100 support cache enable.

PATCH New Andes 1 participant 1 message Sep 13, 2017

lore
Share & tools
lore

Andes

author
#0 lore raw

PATCH 2/3 nds32: ftmac100 support cache enable.

From: rick <[email protected]>

Enable cache and ftmac100 performance can be improved.

---
 arch/nds32/cpu/n1213/start.S |   29 ++++++++++++++++++++++++++++-
 arch/nds32/include/asm/io.h  |   21 +++++++++++++++++++++
 include/configs/adp-ae3xx.h  |    3 +--
 include/configs/adp-ag101p.h |    3 +--
 4 files changed, 51 insertions(+), 5 deletions(-)
arch/nds32/cpu/n1213/start.S +28 -1
index f9f9999..0d98d03 100644
@@ -119,19 +119,46 @@ set_ivb:
 	/* set IVIC, vector size: 4 bytes, base: 0x0 */
 	mtsr	$r0, $ivb
 /*
- * MMU_CTL NTC0 Cacheable/Write-Back
+ * MMU_CTL NTC0 Non-cacheable
  */
+	li	$r0, ~0x6
+	mfsr	$r1, $mr0
+	and	$r1, $r1, $r0
+	mtsr	$r1, $mr0
+
 	li	$r0, ~0x3
 	mfsr	$r1, $mr8
 	and	$r1, $r1, $r0
 	mtsr	$r1, $mr8
 #if (!defined(CONFIG_SYS_ICACHE_OFF) || !defined(CONFIG_SYS_DCACHE_OFF))
+/*
+ * MMU_CTL NTC0 Cacheable/Write-Back
+ */
 	li	$r0, 0x4
 	mfsr	$r1, $mr0
 	or	$r1, $r1, $r0
 	mtsr	$r1, $mr0
 #endif
 
+#ifndef CONFIG_SYS_DCACHE_OFF
+#ifdef CONFIG_ARCH_MAP_SYSMEM
+/*
+ * MMU_CTL NTC1 Non-cacheable
+ */
+	li	$r0, ~0x18
+	mfsr	$r1, $mr0
+	and	$r1, $r1, $r0
+	mtsr	$r1, $mr0
+/*
+ * MMU_CTL NTM1 mapping for partition 0
+ */
+	li	$r0, ~0x6000
+	mfsr	$r1, $mr0
+	and	$r1, $r1, $r0
+	mtsr	$r1, $mr0
+#endif
+#endif
+
 #if !defined(CONFIG_SYS_ICACHE_OFF)
 	li	$r0, 0x1
 	mfsr	$r1, $mr8
arch/nds32/include/asm/io.h +21 -0
index b2c4d0e..e8ee961 100644
@@ -48,6 +48,27 @@ static inline void sync(void)
 #define MAP_WRBACK	(0)
 #define MAP_WRTHROUGH	(0)
 
+#ifdef CONFIG_ARCH_MAP_SYSMEM
+static inline void *map_sysmem(phys_addr_t paddr, unsigned long len)
+{
+	if(paddr <PHYS_SDRAM_0_SIZE + PHYS_SDRAM_1_SIZE)
+	paddr = paddr | 0x40000000;
+	return (void *)(uintptr_t)paddr;
+}
+
+static inline void *unmap_sysmem(const void *vaddr)
+{
+	phys_addr_t paddr = (phys_addr_t)vaddr;
+	paddr = paddr & ~0x40000000;
+	return (void *)(uintptr_t)paddr;
+}
+
+static inline phys_addr_t map_to_sysmem(const void *ptr)
+{
+	return (phys_addr_t)(uintptr_t)ptr;
+}
+#endif
+
 static inline void *
 map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags)
 {
include/configs/adp-ae3xx.h +1 -2
index cef1edd..fc04934 100644
@@ -23,8 +23,7 @@
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_PANIC_HANG
 
-#define CONFIG_SYS_ICACHE_OFF
-#define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_ARCH_MAP_SYSMEM
 
 #define CONFIG_BOOTP_SEND_HOSTNAME
 #define CONFIG_BOOTP_SERVERIP
include/configs/adp-ag101p.h +1 -2
index f966278..a96213c 100644
@@ -22,8 +22,7 @@
 
 #define CONFIG_CMDLINE_EDITING
 
-#define CONFIG_SYS_ICACHE_OFF
-#define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_ARCH_MAP_SYSMEM
 
 #define CONFIG_BOOTP_SEND_HOSTNAME
 #define CONFIG_BOOTP_SERVERIP
Signature · 1 line
1.7.9.5