Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Feb 2014 00:41:55 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r262587 - in head/sys/arm: arm include
Message-ID:  <201402280041.s1S0ftkN077569@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Fri Feb 28 00:41:55 2014
New Revision: 262587
URL: http://svnweb.freebsd.org/changeset/base/262587

Log:
  Add an armv7 implementation of cpu_sleep().  The arm11/armv6 implementation
  we've been using was actually just spinning due to ARM having redefined
  the old 'wait for interrupt' operation via the system coprocessor as a nop
  and replacing it with a WFI instruction.

Modified:
  head/sys/arm/arm/cpufunc.c
  head/sys/arm/arm/cpufunc_asm_armv7.S
  head/sys/arm/include/cpufunc.h

Modified: head/sys/arm/arm/cpufunc.c
==============================================================================
--- head/sys/arm/arm/cpufunc.c	Fri Feb 28 00:39:35 2014	(r262586)
+++ head/sys/arm/arm/cpufunc.c	Fri Feb 28 00:41:55 2014	(r262587)
@@ -1107,7 +1107,7 @@ struct cpu_functions cortexa_cpufuncs = 
 	cpufunc_nullop,                 /* flush_brnchtgt_C     */
 	(void *)cpufunc_nullop,         /* flush_brnchtgt_E     */
 	
-	arm11_sleep,                    /* sleep                */
+	armv7_sleep,                    /* sleep                */
 	
 	/* Soft functions */
 	

Modified: head/sys/arm/arm/cpufunc_asm_armv7.S
==============================================================================
--- head/sys/arm/arm/cpufunc_asm_armv7.S	Fri Feb 28 00:39:35 2014	(r262586)
+++ head/sys/arm/arm/cpufunc_asm_armv7.S	Fri Feb 28 00:41:55 2014	(r262587)
@@ -343,3 +343,9 @@ ENTRY(armv7_idcache_inv_all)
 	bx      lr                      @ return
 END(armv7_l1cache_inv_all)
 
+ENTRY_NP(armv7_sleep)
+	dsb
+	wfi
+	bx	lr
+END(armv7_sleep)
+

Modified: head/sys/arm/include/cpufunc.h
==============================================================================
--- head/sys/arm/include/cpufunc.h	Fri Feb 28 00:39:35 2014	(r262586)
+++ head/sys/arm/include/cpufunc.h	Fri Feb 28 00:41:55 2014	(r262587)
@@ -523,6 +523,7 @@ void	armv7_setup			(char *string);
 void	armv7_context_switch		(void);
 void	armv7_drain_writebuf		(void);
 void	armv7_sev			(void);
+void	armv7_sleep			(int unused);
 u_int	armv7_auxctrl			(u_int, u_int);
 void	pj4bv7_setup			(char *string);
 void	pj4b_config			(void);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402280041.s1S0ftkN077569>