Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sparc64 sun4v: extend dmmu_set_secondary_context() ...



details:   https://anonhg.NetBSD.org/src/rev/88938389cb1c
branches:  trunk
changeset: 813577:88938389cb1c
user:      palle <palle%NetBSD.org@localhost>
date:      Wed Feb 03 20:33:52 2016 +0000

description:
sun4v: extend dmmu_set_secondary_context() to handle both sun4u and sun4v. ok martin@

diffstat:

 sys/arch/sparc64/include/ctlreg.h |  14 ++------------
 sys/arch/sparc64/sparc64/locore.s |   4 ++--
 sys/arch/sparc64/sparc64/pmap.c   |  23 +++++++++++++++++++++--
 3 files changed, 25 insertions(+), 16 deletions(-)

diffs (97 lines):

diff -r 3cb6bb0b5641 -r 88938389cb1c sys/arch/sparc64/include/ctlreg.h
--- a/sys/arch/sparc64/include/ctlreg.h Wed Feb 03 19:03:50 2016 +0000
+++ b/sys/arch/sparc64/include/ctlreg.h Wed Feb 03 20:33:52 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ctlreg.h,v 1.62 2015/04/01 18:38:30 palle Exp $ */
+/*     $NetBSD: ctlreg.h,v 1.63 2016/02/03 20:33:52 palle Exp $ */
 
 /*
  * Copyright (c) 1996-2002 Eduardo Horvath
@@ -55,7 +55,7 @@
 #define        ASI_PHYS_CACHED_LITTLE          0x1c    /* [4u] MMU bypass to main memory, little endian */
 #define        ASI_PHYS_NON_CACHED_LITTLE      0x1d    /* [4u] MMU bypass to I/O location, little endian */
 
-#define ASI_MMU                                0x21    /* [4v] MMU context control - both IMMU and DMMU */
+#define ASI_MMU_CONTEXTID              0x21    /* [4v] MMU context control - both IMMU and DMMU */
 
 #define        ASI_NUCLEUS_QUAD_LDD            0x24    /* [4u] use w/LDDA to load 128-bit item */
 #define        ASI_QUEUE                       0x25    /* [4v] interrupt queue registers */
@@ -864,16 +864,6 @@
 SPARC64_ST_DEF64(stxa, uint64_t)
 
 
-/* set dmmu secondary context */
-static __inline void
-dmmu_set_secondary_context(uint ctx)
-{
-       __asm volatile(
-               "stxa %0,[%1]%2;        "
-               "membar #Sync           "
-               : : "r" (ctx), "r" (CTX_SECONDARY), "n" (ASI_DMMU)
-               : "memory");
-}
 
 /* flush address from data cache */
 #define        flush(loc) __asm volatile("flush %0" : : "r" ((__uintptr_t)(loc)))
diff -r 3cb6bb0b5641 -r 88938389cb1c sys/arch/sparc64/sparc64/locore.s
--- a/sys/arch/sparc64/sparc64/locore.s Wed Feb 03 19:03:50 2016 +0000
+++ b/sys/arch/sparc64/sparc64/locore.s Wed Feb 03 20:33:52 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: locore.s,v 1.386 2015/11/06 15:30:59 martin Exp $      */
+/*     $NetBSD: locore.s,v 1.387 2016/02/03 20:33:52 palle Exp $       */
 
 /*
  * Copyright (c) 2006-2010 Matthew R. Green
@@ -129,7 +129,7 @@
        
 #ifdef SUN4V
        .macro  SET_MMU_CONTEXTID_SUN4V ctxid,ctx
-       stxa    \ctxid, [\ctx] ASI_MMU;
+       stxa    \ctxid, [\ctx] ASI_MMU_CONTEXTID;
        .endm
 #endif 
                
diff -r 3cb6bb0b5641 -r 88938389cb1c sys/arch/sparc64/sparc64/pmap.c
--- a/sys/arch/sparc64/sparc64/pmap.c   Wed Feb 03 19:03:50 2016 +0000
+++ b/sys/arch/sparc64/sparc64/pmap.c   Wed Feb 03 20:33:52 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap.c,v 1.300 2015/11/27 13:51:24 joerg Exp $ */
+/*     $NetBSD: pmap.c,v 1.301 2016/02/03 20:33:52 palle Exp $ */
 /*
  *
  * Copyright (C) 1996-1999 Eduardo Horvath.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.300 2015/11/27 13:51:24 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.301 2016/02/03 20:33:52 palle Exp $");
 
 #undef NO_VCACHE /* Don't forget the locked TLB in dostart */
 #define        HWREF
@@ -158,6 +158,25 @@
 
 static void ctx_free(struct pmap *, struct cpu_info *);
 
+/* set dmmu secondary context */
+static __inline void
+dmmu_set_secondary_context(uint ctx)
+{
+       if (!CPU_ISSUN4V)
+               __asm volatile(
+                       "stxa %0,[%1]%2;        "
+                       "membar #Sync           "
+                       : : "r" (ctx), "r" (CTX_SECONDARY), "n" (ASI_DMMU)
+                       : "memory");
+       else
+               __asm volatile(
+                       "stxa %0,[%1]%2;        "
+                       "membar #Sync           "
+                       : : "r" (ctx), "r" (CTX_SECONDARY), "n" (ASI_MMU_CONTEXTID)
+                       : "memory");
+               
+}
+
 /*
  * Check if any MMU has a non-zero context
  */



Home | Main Index | Thread Index | Old Index