From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2 V3] arm926: Flush the data cache before disabling it
Date: Sat, 14 Jan 2012 10:02:16 +0100 [thread overview]
Message-ID: <4F114498.7090605@aribaud.net> (raw)
In-Reply-To: <1326527375-7452-1-git-send-email-urwithsughosh@gmail.com>
Hi Sughosh,
Le 14/01/2012 08:49, Sughosh Ganu a ?crit :
> The current implementation invalidates the cache instead of flushing
> it. This causes problems on platforms where the spl/u-boot is already
> loaded to the RAM, with caches enabled by a first stage bootloader.
>
> The V bit of the cp15's control register c1 is set to the value of
> VINITHI on reset. Do not clear this bit by default, as there are SOC's
> with no valid memory region at 0x0.
>
> Also fix the comments to match code.
>
> Signed-off-by: Sughosh Ganu<urwithsughosh@gmail.com>
> ---
>
> Changes since V2
> * Added code to invalidate I cache, based on review comment by Aneesh.
> * Fixed comments to match the code.
>
> Changes since V1
> * Added arm926 keyword to the subject line
> * Removed the superfluous setting of r0.
> * Fixed the comment to reflect the fact that V is not being cleared
>
> arch/arm/cpu/arm926ejs/start.S | 14 +++++++++-----
> 1 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
> index 6a09c02..91a9325 100644
> --- a/arch/arm/cpu/arm926ejs/start.S
> +++ b/arch/arm/cpu/arm926ejs/start.S
> @@ -355,17 +355,21 @@ _dynsym_start_ofs:
> */
> cpu_init_crit:
> /*
> - * flush v4 I/D caches
> + * flush D cache before disabling it
> */
> mov r0, #0
> - mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */
> - mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */
> +flush_dcache:
> + mrc p15, 0, r15, c7, c10, 3
> + bne flush_dcache
> +
> + mcr p15, 0, r0, c8, c7, 0 /* invalidate TLB */
> + mcr p15, 0, r0, c7, c5, 0 /* invalidate I Cache */
>
> /*
> - * disable MMU stuff and caches
> + * disable MMU and D cache, and enable I cache.
> */
> mrc p15, 0, r0, c1, c0, 0
> - bic r0, r0, #0x00002300 /* clear bits 13, 9:8 (--V- --RS) */
> + bic r0, r0, #0x00000300 /* clear bits 9:8 ( --RS) */
NAK--this alters the functioning of U-Boot for many boards in ways
unpredictable. If you want to get this specific V change into ARM, then
please also add code to set V in all relevant SoCs, or (better yet IMO)
make "do not set V in cpu_init_crit" a config option and set it in the
relevant SoCs or boards.
> bic r0, r0, #0x00000087 /* clear bits 7, 2:0 (B--- -CAM) */
> orr r0, r0, #0x00000002 /* set bit 2 (A) Align */
> orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */
Amicalement,
--
Albert.
next prev parent reply other threads:[~2012-01-14 9:02 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-09 18:25 [U-Boot] [PATCH 1/2] Flush the date cache before disabling it Sughosh Ganu
2012-01-09 18:41 ` Mike Frysinger
2012-01-09 18:51 ` Sughosh Ganu
2012-01-10 18:12 ` [U-Boot] [PATCH 1/2 V2] arm926: Flush the data " Sughosh Ganu
2012-01-10 20:07 ` Marek Vasut
2012-01-11 6:20 ` Sughosh Ganu
2012-01-11 10:47 ` Marek Vasut
2012-01-11 12:11 ` Sughosh Ganu
2012-01-11 12:42 ` Marek Vasut
2012-01-11 13:31 ` Sughosh Ganu
2012-01-11 13:51 ` Marek Vasut
2012-01-11 13:52 ` Marek Vasut
2012-01-11 14:50 ` Sughosh Ganu
2012-01-11 15:01 ` Marek Vasut
2012-01-11 15:09 ` Sughosh Ganu
2012-01-11 18:50 ` Marek Vasut
2012-01-11 21:07 ` Christian Riesch
2012-01-11 22:13 ` Marek Vasut
2012-01-12 5:56 ` Christian Riesch
2012-01-12 6:29 ` Sughosh Ganu
2012-01-14 9:09 ` Albert ARIBAUD
2012-01-14 17:18 ` Christian Riesch
2012-01-12 12:03 ` Christian Riesch
2012-01-12 13:53 ` Sughosh Ganu
2012-01-12 14:04 ` Christian Riesch
2012-01-12 14:43 ` Sughosh Ganu
2012-01-14 17:20 ` Christian Riesch
2012-01-14 18:02 ` Sughosh Ganu
2012-01-13 8:06 ` Christian Riesch
2012-01-13 8:26 ` Sughosh Ganu
2012-01-13 14:41 ` Tom Rini
2012-01-13 17:23 ` Sughosh Ganu
2012-01-13 15:29 ` Heiko Schocher
2012-01-13 17:38 ` Sughosh Ganu
2012-01-13 18:19 ` Aneesh V
2012-01-14 7:45 ` Sughosh Ganu
2012-01-15 8:13 ` Heiko Schocher
2012-01-16 17:57 ` Tom Rini
2012-01-17 6:39 ` Heiko Schocher
2012-01-17 6:46 ` Sughosh Ganu
2012-01-17 15:27 ` Tom Rini
2012-01-19 6:53 ` Sughosh Ganu
2012-01-19 10:17 ` Aneesh V
2012-01-19 11:30 ` Christian Riesch
2012-01-19 11:54 ` Aneesh V
2012-01-20 7:28 ` Christian Riesch
2012-01-20 8:52 ` Aneesh V
2012-01-20 9:21 ` Christian Riesch
2012-01-20 12:13 ` Aneesh V
2012-01-20 12:48 ` Christian Riesch
2012-01-20 13:06 ` Aneesh V
2012-01-27 18:33 ` Tom Rini
2012-01-29 13:36 ` Christian Riesch
2012-01-30 6:39 ` Heiko Schocher
2012-01-30 8:10 ` Christian Riesch
2012-01-30 9:04 ` Sughosh Ganu
2012-01-30 10:38 ` Christian Riesch
2012-01-30 7:06 ` Sughosh Ganu
2012-01-30 17:03 ` Tom Rini
2012-01-31 4:09 ` Sughosh Ganu
2012-01-31 13:58 ` Christian Riesch
2012-01-20 11:56 ` Tom Rini
2012-01-13 15:06 ` Heiko Schocher
2012-01-13 17:22 ` Sughosh Ganu
2012-01-14 7:49 ` [U-Boot] [PATCH 1/2 V3] " Sughosh Ganu
2012-01-14 9:02 ` Albert ARIBAUD [this message]
2012-01-14 9:21 ` Sughosh Ganu
2012-01-14 10:34 ` Albert ARIBAUD
2012-01-14 14:02 ` [U-Boot] [PATCH 1/2 V4] " Sughosh Ganu
2012-02-18 15:41 ` Albert ARIBAUD
2012-02-18 18:51 ` [U-Boot] [PATCH 1/2 V3] " Christian Riesch
2012-02-19 8:31 ` Albert ARIBAUD
2012-01-20 9:22 ` [U-Boot] [PATCH 1/2 V2] " James W.
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F114498.7090605@aribaud.net \
--to=albert.u.boot@aribaud.net \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.