Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/mips/include Define Octeon Cavium cache layouts for...



details:   https://anonhg.NetBSD.org/src/rev/f25fcd30af8f
branches:  trunk
changeset: 1010982:f25fcd30af8f
user:      simonb <simonb%NetBSD.org@localhost>
date:      Sun Jun 14 08:43:07 2020 +0000

description:
Define Octeon Cavium cache layouts for various cnMIPS cores.

diffstat:

 sys/arch/mips/include/cache_octeon.h |  31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diffs (49 lines):

diff -r f21217790a3e -r f25fcd30af8f sys/arch/mips/include/cache_octeon.h
--- a/sys/arch/mips/include/cache_octeon.h      Sun Jun 14 06:50:31 2020 +0000
+++ b/sys/arch/mips/include/cache_octeon.h      Sun Jun 14 08:43:07 2020 +0000
@@ -1,4 +1,7 @@
-/*     $NetBSD: cache_octeon.h,v 1.3 2019/04/11 09:18:55 simonb Exp $  */
+/*     $NetBSD: cache_octeon.h,v 1.4 2020/06/14 08:43:07 simonb Exp $  */
+
+#ifndef _MIPS_CACHE_OCTEON_H_
+#define _MIPS_CACHE_OCTEON_H_
 
 #define        CACHE_OCTEON_I                  0
 #define        CACHE_OCTEON_D                  1
@@ -8,6 +11,31 @@
 #define        CACHEOP_OCTEON_BITMAP_STORE             (3 << 2)        /* I */
 #define        CACHEOP_OCTEON_VIRTUAL_TAG_INV          (4 << 2)        /* D */
 
+#define        OCTEON_CACHELINE_SIZE                   128
+
+/*
+ * Note that for the Dcache the 50XX manual says 1 set per way (Config1
+ * register - DS=0 ("... actual is 1"), p173) as does U-boot sources,
+ * however this only adds up to an 8kB Dcache.  The 50XX manual
+ * elsewhere references a 16kB Dcache as does the CN50XX product brief.
+ * The original NetBSD code, current OpenBSD and Linux code all use 2
+ * sets per way. lmbench's "cache" program also detects a 16kB Dcache.
+ * So we assume that all Octeon 1 and Octeon Plus cores have a 16kB
+ * Dcache.
+ */
+#define        OCTEON_I_DCACHE_WAYS                    64
+#define        OCTEON_I_DCACHE_SETS                    2
+
+#define        OCTEON_II_DCACHE_SETS                   8
+#define        OCTEON_II_DCACHE_WAYS                   32
+#define        OCTEON_II_ICACHE_SETS                   8
+#define        OCTEON_II_ICACHE_WAYS                   37
+
+#define        OCTEON_III_DCACHE_SETS                  8
+#define        OCTEON_III_DCACHE_WAYS                  32
+#define        OCTEON_III_ICACHE_SETS                  16
+#define        OCTEON_III_ICACHE_WAYS                  39
+
 #if !defined(_LOCORE)
 
 /*
@@ -54,3 +82,4 @@
 void octeon_pdcache_wb_range(register_t va, vsize_t size);
 
 #endif /* !_LOCORE */
+#endif /* _MIPS_CACHE_OCTEON_H_ */



Home | Main Index | Thread Index | Old Index