From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vladimir Zapolskiy Date: Mon, 8 Aug 2016 21:13:21 +0300 Subject: [U-Boot] [PATCH 5/6] sh: cache: don't modify CCR from P1 area In-Reply-To: <1470680002-16354-1-git-send-email-vz@mleia.com> References: <1470680002-16354-1-git-send-email-vz@mleia.com> Message-ID: <1470680002-16354-6-git-send-email-vz@mleia.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 --- arch/sh/cpu/sh4/cache.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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 -- 2.8.1