diff mbox

[U-Boot,RESEND,05/24] sh: cache: don't modify CCR from P1 area

Message ID 20161127221536.9577-6-vz@mleia.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Vladimir Zapolskiy Nov. 27, 2016, 10:15 p.m. UTC
cache_wback_all() is a local function and it is called from
cache_control() only, which is in turn jumps to P2 area.

The change fixes an issue when cache_wback_all() returns from P2 to
P1, however cache_control() continues to manipulate with CCR
register, according to the User's Manual this is restricted.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
 arch/sh/cpu/sh4/cache.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Comments

Tom Rini Dec. 3, 2016, 11:52 p.m. UTC | #1
On Mon, Nov 28, 2016 at 12:15:17AM +0200, Vladimir Zapolskiy wrote:

> cache_wback_all() is a local function and it is called from
> cache_control() only, which is in turn jumps to P2 area.
> 
> The change fixes an issue when cache_wback_all() returns from P2 to
> P1, however cache_control() continues to manipulate with CCR
> register, according to the User's Manual this is restricted.
> 
> Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/arch/sh/cpu/sh4/cache.c b/arch/sh/cpu/sh4/cache.c
index 50695b6..7750f0f 100644
--- a/arch/sh/cpu/sh4/cache.c
+++ b/arch/sh/cpu/sh4/cache.c
@@ -18,10 +18,10 @@  static inline void cache_wback_all(void)
 {
 	unsigned long addr, data, i, j;
 
-	jump_to_P2();
-	for (i = 0; i < CACHE_OC_NUM_ENTRIES; i++){
+	for (i = 0; i < CACHE_OC_NUM_ENTRIES; i++) {
 		for (j = 0; j < CACHE_OC_NUM_WAYS; j++) {
-			addr = CACHE_OC_ADDRESS_ARRAY | (j << CACHE_OC_WAY_SHIFT)
+			addr = CACHE_OC_ADDRESS_ARRAY
+				| (j << CACHE_OC_WAY_SHIFT)
 				| (i << CACHE_OC_ENTRY_SHIFT);
 			data = inl(addr);
 			if (data & CACHE_UPDATED) {
@@ -30,10 +30,8 @@  static inline void cache_wback_all(void)
 			}
 		}
 	}
-	back_to_P1();
 }
 
-
 #define CACHE_ENABLE      0
 #define CACHE_DISABLE     1