* [U-Boot] [PATCH 0/2] pxa: fix memory coherency problem after relocation @ 2013-06-21 16:12 Mike Dunn 2013-06-21 16:12 ` [U-Boot] [PATCH 1/2] pxa: use -mcpu=xscale compiler option Mike Dunn 2013-06-21 16:12 ` [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation Mike Dunn 0 siblings, 2 replies; 6+ messages in thread From: Mike Dunn @ 2013-06-21 16:12 UTC (permalink / raw) To: u-boot These patches fix a memory coherency problem that sometimes occurs on xscale after code relocation. The first patch changes the options passed to the compiler so that the __XSCALE__ macro is defined. This is used in the second patch to limit the change to xscale cores, where the necessary cache operations are performed before jumping to the relocated code. Whether other cores need a similiar operation after code relocation remains an open question. Thanks Albert. Mike Dunn (2): pxa: use -mcpu=xscale compiler option pxa: fix memory coherency problem after relocation arch/arm/cpu/pxa/config.mk | 2 +- arch/arm/lib/relocate.S | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletions(-) -- 1.7.8.6 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 1/2] pxa: use -mcpu=xscale compiler option 2013-06-21 16:12 [U-Boot] [PATCH 0/2] pxa: fix memory coherency problem after relocation Mike Dunn @ 2013-06-21 16:12 ` Mike Dunn 2013-06-22 2:29 ` Marek Vasut 2013-06-21 16:12 ` [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation Mike Dunn 1 sibling, 1 reply; 6+ messages in thread From: Mike Dunn @ 2013-06-21 16:12 UTC (permalink / raw) To: u-boot Pass '-mcpu=xscale' to the compiler instead of march and mtune. This will cause gcc to define the __XSCALE__ macro. Signed-off-by: Mike Dunn <mikedunn@newsguy.com> --- arch/arm/cpu/pxa/config.mk | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/arm/cpu/pxa/config.mk b/arch/arm/cpu/pxa/config.mk index 0bbe295..ea55859 100644 --- a/arch/arm/cpu/pxa/config.mk +++ b/arch/arm/cpu/pxa/config.mk @@ -24,7 +24,7 @@ PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float -PLATFORM_CPPFLAGS += -march=armv5te -mtune=xscale +PLATFORM_CPPFLAGS += -mcpu=xscale # ========================================================================= # # Supply options according to compiler version -- 1.7.8.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 1/2] pxa: use -mcpu=xscale compiler option 2013-06-21 16:12 ` [U-Boot] [PATCH 1/2] pxa: use -mcpu=xscale compiler option Mike Dunn @ 2013-06-22 2:29 ` Marek Vasut 0 siblings, 0 replies; 6+ messages in thread From: Marek Vasut @ 2013-06-22 2:29 UTC (permalink / raw) To: u-boot Dear Mike Dunn, > Pass '-mcpu=xscale' to the compiler instead of march and mtune. This will > cause gcc to define the __XSCALE__ macro. > > Signed-off-by: Mike Dunn <mikedunn@newsguy.com> > --- > arch/arm/cpu/pxa/config.mk | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/cpu/pxa/config.mk b/arch/arm/cpu/pxa/config.mk > index 0bbe295..ea55859 100644 > --- a/arch/arm/cpu/pxa/config.mk > +++ b/arch/arm/cpu/pxa/config.mk > @@ -24,7 +24,7 @@ > > PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float > > -PLATFORM_CPPFLAGS += -march=armv5te -mtune=xscale > +PLATFORM_CPPFLAGS += -mcpu=xscale > # > ========================================================================= > # > # Supply options according to compiler version Acked-by: Marek Vasut <marex@denx.de> Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation 2013-06-21 16:12 [U-Boot] [PATCH 0/2] pxa: fix memory coherency problem after relocation Mike Dunn 2013-06-21 16:12 ` [U-Boot] [PATCH 1/2] pxa: use -mcpu=xscale compiler option Mike Dunn @ 2013-06-21 16:12 ` Mike Dunn 2013-06-22 2:29 ` Marek Vasut 1 sibling, 1 reply; 6+ messages in thread From: Mike Dunn @ 2013-06-21 16:12 UTC (permalink / raw) To: u-boot On the xscale, the icache must be invalidated and the write buffers drained after writing code over the data bus, even if the caches are disabled. Tested on the pxa270. Signed-off-by: Mike Dunn <mikedunn@newsguy.com> --- arch/arm/lib/relocate.S | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/arch/arm/lib/relocate.S b/arch/arm/lib/relocate.S index 4446da9..eedf314 100644 --- a/arch/arm/lib/relocate.S +++ b/arch/arm/lib/relocate.S @@ -92,6 +92,15 @@ fixnext: relocate_done: +#ifdef __XSCALE__ + /* + * On xscale, icache must be invalidated and write buffers drained, + * even with cache disabled - 4.2.7 of xscale core developer's manual + */ + mcr p15, 0, r0, c7, c7, 0 /* invalidate icache */ + mcr p15, 0, r0, c7, c10, 4 /* drain write buffer */ +#endif + /* ARMv4- don't know bx lr but the assembler fails to see that */ #ifdef __ARM_ARCH_4__ -- 1.7.8.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation 2013-06-21 16:12 ` [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation Mike Dunn @ 2013-06-22 2:29 ` Marek Vasut 2013-06-22 5:23 ` Albert ARIBAUD 0 siblings, 1 reply; 6+ messages in thread From: Marek Vasut @ 2013-06-22 2:29 UTC (permalink / raw) To: u-boot Dear Mike Dunn, > On the xscale, the icache must be invalidated and the write buffers drained > after writing code over the data bus, even if the caches are disabled. > Tested on the pxa270. > > Signed-off-by: Mike Dunn <mikedunn@newsguy.com> > --- > arch/arm/lib/relocate.S | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/lib/relocate.S b/arch/arm/lib/relocate.S > index 4446da9..eedf314 100644 > --- a/arch/arm/lib/relocate.S > +++ b/arch/arm/lib/relocate.S > @@ -92,6 +92,15 @@ fixnext: > > relocate_done: > > +#ifdef __XSCALE__ > + /* > + * On xscale, icache must be invalidated and write buffers drained, > + * even with cache disabled - 4.2.7 of xscale core developer's manual > + */ > + mcr p15, 0, r0, c7, c7, 0 /* invalidate icache */ > + mcr p15, 0, r0, c7, c10, 4 /* drain write buffer */ > +#endif > + > /* ARMv4- don't know bx lr but the assembler fails to see that */ > > #ifdef __ARM_ARCH_4__ Acked-by: Marek Vasut <marex@denx.de> Albert, do you want me to pick these or will you? Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation 2013-06-22 2:29 ` Marek Vasut @ 2013-06-22 5:23 ` Albert ARIBAUD 0 siblings, 0 replies; 6+ messages in thread From: Albert ARIBAUD @ 2013-06-22 5:23 UTC (permalink / raw) To: u-boot Hi Marek, On Sat, 22 Jun 2013 04:29:56 +0200, Marek Vasut <marex@denx.de> wrote: > Albert, do you want me to pick these or will you? Pick them and PR me. > Best regards, > Marek Vasut Amicalement, -- Albert. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-06-22 5:23 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-06-21 16:12 [U-Boot] [PATCH 0/2] pxa: fix memory coherency problem after relocation Mike Dunn 2013-06-21 16:12 ` [U-Boot] [PATCH 1/2] pxa: use -mcpu=xscale compiler option Mike Dunn 2013-06-22 2:29 ` Marek Vasut 2013-06-21 16:12 ` [U-Boot] [PATCH 2/2] pxa: fix memory coherency problem after relocation Mike Dunn 2013-06-22 2:29 ` Marek Vasut 2013-06-22 5:23 ` Albert ARIBAUD
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox