svn commit: r202864 - in head/sys/mips: include mips sibyte

Neel Natu neel at FreeBSD.org
Sat Jan 23 03:19:13 UTC 2010


Author: neel
Date: Sat Jan 23 03:19:13 2010
New Revision: 202864
URL: http://svn.freebsd.org/changeset/base/202864

Log:
  Remove Sibyte specific code from locore.S that sets the k0seg coherency.
  
  Move it to platform_start() instead.
  
  Approved by: imp (mentor)

Modified:
  head/sys/mips/include/cpu.h
  head/sys/mips/mips/locore.S
  head/sys/mips/sibyte/sb_machdep.c

Modified: head/sys/mips/include/cpu.h
==============================================================================
--- head/sys/mips/include/cpu.h	Sat Jan 23 01:44:30 2010	(r202863)
+++ head/sys/mips/include/cpu.h	Sat Jan 23 03:19:13 2010	(r202864)
@@ -163,11 +163,8 @@
  * The bits in the CONFIG register
  */
 #define CFG_K0_UNCACHED	2
-#if defined(CPU_SB1)
-#define CFG_K0_COHERENT	5	/* cacheable coherent */
-#else
 #define	CFG_K0_CACHED	3
-#endif
+#define	CFG_K0_MASK	0x7
 
 /*
  * The bits in the context register.

Modified: head/sys/mips/mips/locore.S
==============================================================================
--- head/sys/mips/mips/locore.S	Sat Jan 23 01:44:30 2010	(r202863)
+++ head/sys/mips/mips/locore.S	Sat Jan 23 03:19:13 2010	(r202864)
@@ -128,11 +128,7 @@ VECTOR(_locore, unknown)
 	mtc0	t2, COP_0_STATUS_REG
 	COP0_SYNC
 	/* Make sure KSEG0 is cached */
-#ifdef CPU_SB1
-	li	t0, CFG_K0_COHERENT
-#else
 	li	t0, CFG_K0_CACHED
-#endif
 	mtc0	t0, MIPS_COP_0_CONFIG
 	COP0_SYNC
 

Modified: head/sys/mips/sibyte/sb_machdep.c
==============================================================================
--- head/sys/mips/sibyte/sb_machdep.c	Sat Jan 23 01:44:30 2010	(r202863)
+++ head/sys/mips/sibyte/sb_machdep.c	Sat Jan 23 03:19:13 2010	(r202864)
@@ -230,12 +230,29 @@ platform_trap_exit(void)
 
 }
 
+static void
+kseg0_map_coherent(void)
+{
+	uint32_t config;
+	const int CFG_K0_COHERENT = 5;
+
+	config = mips_rd_config();
+	config &= ~CFG_K0_MASK;
+	config |= CFG_K0_COHERENT;
+	mips_wr_config(config);
+}
+
 void
 platform_start(__register_t a0, __register_t a1, __register_t a2,
 	       __register_t a3)
 {
 	vm_offset_t kernend;
 
+	/*
+	 * Make sure that kseg0 is mapped cacheable-coherent
+	 */
+	kseg0_map_coherent();
+
 	/* clear the BSS and SBSS segments */
 	memset(&edata, 0, (vm_offset_t)&end - (vm_offset_t)&edata);
 	kernend = round_page((vm_offset_t)&end);


More information about the svn-src-all mailing list