sh: cache: don't modify CCR from P1 area
authorVladimir Zapolskiy <vz@mleia.com>
Sun, 27 Nov 2016 22:15:17 +0000 (00:15 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 3 Dec 2016 02:32:41 +0000 (21:32 -0500)
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

index 50695b61154dc51a82bf7c866998536506ead080..7750f0f9f73d8c816d41b015326251333e3a3736 100644 (file)
@@ -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