Module Name:    src
Committed By:   hans
Date:           Sat Jul 14 12:59:55 UTC 2012

Modified Files:
        src/sys/arch/arm/arm: cpufunc.c cpufunc_asm_sheeva.S
        src/sys/arch/arm/include: cpufunc.h

Log Message:
Support cpu_sleep() on Sheeva CPUs.


To generate a diff of this commit:
cvs rdiff -u -r1.106 -r1.107 src/sys/arch/arm/arm/cpufunc.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/arm/cpufunc_asm_sheeva.S
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/arm/include/cpufunc.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm/cpufunc.c
diff -u src/sys/arch/arm/arm/cpufunc.c:1.106 src/sys/arch/arm/arm/cpufunc.c:1.107
--- src/sys/arch/arm/arm/cpufunc.c:1.106	Fri Jul 13 05:23:30 2012
+++ src/sys/arch/arm/arm/cpufunc.c	Sat Jul 14 12:59:55 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc.c,v 1.106 2012/07/13 05:23:30 matt Exp $	*/
+/*	$NetBSD: cpufunc.c,v 1.107 2012/07/14 12:59:55 hans Exp $	*/
 
 /*
  * arm7tdmi support code Copyright (c) 2001 John Fremlin
@@ -49,7 +49,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.106 2012/07/13 05:23:30 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.107 2012/07/14 12:59:55 hans Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_cpuoptions.h"
@@ -1243,7 +1243,7 @@ struct cpu_functions sheeva_cpufuncs = {
 	.cf_flush_brnchtgt_C	= cpufunc_nullop,
 	.cf_flush_brnchtgt_E	= (void *)cpufunc_nullop,
 
-	.cf_sleep		= (void *)cpufunc_nullop,
+	.cf_sleep		= (void *)sheeva_cpu_sleep,
 
 	/* Soft functions */
 
@@ -1598,6 +1598,7 @@ set_cpufuncs(void)
 		cpu_reset_needs_v4_MMU_disable = 1;	/* V4 or higher */
 		get_cachetype_cp15();
 		pmap_pte_init_generic();
+		cpu_do_powersave = 1;			/* Enable powersave */
 		return 0;
 	}
 #endif /* CPU_SHEEVA */

Index: src/sys/arch/arm/arm/cpufunc_asm_sheeva.S
diff -u src/sys/arch/arm/arm/cpufunc_asm_sheeva.S:1.1 src/sys/arch/arm/arm/cpufunc_asm_sheeva.S:1.2
--- src/sys/arch/arm/arm/cpufunc_asm_sheeva.S:1.1	Sat Oct  2 05:37:58 2010
+++ src/sys/arch/arm/arm/cpufunc_asm_sheeva.S	Sat Jul 14 12:59:55 2012
@@ -214,3 +214,11 @@ ENTRY(sheeva_idcache_wbinv_range)
 	mcr	p15, 0, r0, c7, c10, 4	/* drain the write buffer */
 	ldr	lr, [sp], #4
 	RET
+
+/*
+ * CPU sleep
+ */
+ENTRY_NP(sheeva_cpu_sleep)
+	mov	r0, #0
+	mcr	p15, 0, r0, c7, c0, 4	/* wait for interrupt */
+	RET

Index: src/sys/arch/arm/include/cpufunc.h
diff -u src/sys/arch/arm/include/cpufunc.h:1.55 src/sys/arch/arm/include/cpufunc.h:1.56
--- src/sys/arch/arm/include/cpufunc.h:1.55	Thu Feb 16 02:29:25 2012
+++ src/sys/arch/arm/include/cpufunc.h	Sat Jul 14 12:59:55 2012
@@ -554,6 +554,7 @@ void	sheeva_dcache_inv_range	(vaddr_t, v
 void	sheeva_dcache_wb_range	(vaddr_t, vsize_t);
 void	sheeva_idcache_wbinv_range (vaddr_t, vsize_t);
 void	sheeva_setup(char *);
+void	sheeva_cpu_sleep(int);
 #endif
 
 #define tlb_flush	cpu_tlb_flushID

Reply via email to