From: Matt Porter <mporter@konsulko.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V4 05/11] ARM: OMAP: Change set_pl310_ctrl_reg to be generic
Date: Thu, 5 Mar 2015 15:22:15 -0500 [thread overview]
Message-ID: <20150305202215.GK19577@beef> (raw)
In-Reply-To: <54F89711.5070303@ti.com>
On Thu, Mar 05, 2015 at 11:49:05AM -0600, Nishanth Menon wrote:
> On 03/05/2015 08:00 AM, Matt Porter wrote:
> > On Tue, Mar 03, 2015 at 04:26:22PM -0600, Nishanth Menon wrote:
> >> set_pl310_ctrl_reg does use the Secure Monitor Call (SMC) to setup
> >> PL310 control register, however, that is something that is generic
> >> enough to be used for OMAP5 generation of processors as well. The only
> >> difference being the service being invoked for the function.
> >>
> >> So, convert the service to a macro and use a generic name (same as
> >> that used in Linux for some consistency). While at that, also add a
> >> data barrier which is necessary as per recommendation.
> >>
> >> While at this, switch over to smc #0 instead of handcoded assembly.
> >> To ensure gcc compatibility, steal the strategy used by Linux kernel
> >> for sec extension builds (NOTE: we no longer use '-march=armv5' as the
> >> legacy comment claims).
> >
> > Hi Nishanth,
> >
> > I applied this series with fuzz and fixed a minor conflict on master. I
> > ran into a build issue for omap3 beagle with the sec extension scheme on
> > the gcc version 4.7.4 (Ubuntu/Linaro 4.7.4-2ubuntu1) toolchain:
> >
> > arm-linux-gnueabi-gcc
> > -Wp,-MD,arch/arm/cpu/armv7/omap3/.lowlevel_init.o.d -nostdinc -isystem
> > /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/include -Iinclude -I../include
> > -I../arch/arm/include -include ../include/linux/kconfig.h -D__KERNEL__
> > -D__UBOOT__ -DCONFIG_SYS_TEXT_BASE=0x80100000 -D__ASSEMBLY__ -g
> > -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux
> > -mword-relocations -march=armv7-a -mno-unaligned-access
> > -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float
> > -pipe -c -o arch/arm/cpu/armv7/omap3/lowlevel_init.o
> > ../arch/arm/cpu/armv7/omap3/lowlevel_init.S
> >
> > ../arch/arm/cpu/armv7/omap-common/lowlevel_init.S: Assembler messages:
> > ../arch/arm/cpu/armv7/omap-common/lowlevel_init.S:34: Error: selected
> > processor does not support ARM mode `smc #0'
> >
> > I've worked around this for the moment by placing an explicit
> > .arch_extension sec in lowlevel_init.S but hopefully you have some
> > thoughts on why those flags don't seem to be picked up. I'll continue
> > to take a look at it in the meantime.
> >
>
>
> Uggh.. this is weird. I had considered ".arch_extension sec in
> lowlevel_init.S"
Yeah, no worries, I'm not suggesting that. Just a temporary workaround.
> > +plus_sec := $(call as-instr,.arch_extension sec,+sec)
> > +AFLAGS_lowlevel_init.o :=-Wa,-march=armv7-a$(plus_sec)
>
> seems to be what we have in kernel and seems to do the job for me on
right
> $ arm-linux-gnueabi-gcc --version
> arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
>
> $ git clean -fdx; make omap3_beagle_defconfig;
> make V=1 arch/arm/cpu/armv7/omap-common/lowlevel_init.o
>
> with gcc 4.6:
> arm-linux-gnueabi-gcc
> -Wp,-MD,arch/arm/cpu/armv7/omap-common/.lowlevel_init.o.d -nostdinc
> -isystem /usr/lib/gcc/arm-linux-gnueabi/4.6/include -Iinclude
> -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__
> -D__UBOOT__ -DCONFIG_SYS_TEXT_BASE=0x80100000 -D__ASSEMBLY__ -g
> -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux
> -mword-relocations -march=armv7-a -mno-unaligned-access
> -ffunction-sections -fdata-sections -fno-common -ffixed-r9
> -msoft-float -pipe -Wa,-march=armv7-a+sec -c -o
> arch/arm/cpu/armv7/omap-common/lowlevel_init.o
> arch/arm/cpu/armv7/omap-common/lowlevel_init.S
I also succeed here..and on a gcc 4.8.2 toolchain
>
> with gcc 4.7:
> arm-linux-gnueabi-gcc
> -Wp,-MD,arch/arm/cpu/armv7/omap-common/.lowlevel_init.o.d -nostdinc
> -isystem /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/include -Iinclude
> -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__
> -D__UBOOT__ -DCONFIG_SYS_TEXT_BASE=0x80100000 -D__ASSEMBLY__ -g
> -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux
> -mword-relocations -march=armv7-a -mno-unaligned-access
> -ffunction-sections -fdata-sections -fno-common -ffixed-r9
> -msoft-float -pipe -Wa,-march=armv7-a -c -o
> arch/arm/cpu/armv7/omap-common/lowlevel_init.o
> arch/arm/cpu/armv7/omap-common/lowlevel_init.S
> arch/arm/cpu/armv7/omap-common/lowlevel_init.S: Assembler messages:
> arch/arm/cpu/armv7/omap-common/lowlevel_init.S:34: Error: selected
> processor does not support ARM mode `smc #0'
> make[1]: *** [arch/arm/cpu/armv7/omap-common/lowlevel_init.o] Error 1
> make: *** [arch/arm/cpu/armv7/omap-common/lowlevel_init.o] Error 2
>
> I thought I stole the exact code from kernel, but as you can probably
> see -march=armv7-a+sec was generated for gcc 4.6 but -march=armv7-a
> without +sec for gcc 4.7!
Yeah, so I played a bit with the low-level checks and noted the
following results.
gcc version 4.7.4 (Ubuntu/Linaro 4.7.4-2ubuntu1):
$ printf "%b\n" ".arch_extension sec" | arm-linux-gnueabi-gcc -c -x
assembler -; echo $?
{standard input}: Assembler messages:
{standard input}:1: Error: architectural extension `sec' is not allowed
for the current base architecture
1
gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-16ubuntu4)
$ printf "%b\n" ".arch_extension sec" | arm-linux-gnueabihf-gcc -c -x
assembler -; echo $?
0
My 4.7.4 toolchain's gas does support -march=armv7-a+sec however I need to
pass that architecture in specifically to make it pass:
$ printf "%b\n" ".arch_extension sec" | arm-linux-gnueabi-gcc
-Wa,-march=armv7-a+sec -c -x assembler -; echo $?
0
>
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/mach-omap2/Makefile#n44
>
> It will be nice to have a solution that works on gcc 4.4 and above..
> if we want to ignore gcc 4.4, then we can embed ".arch_extension sec
> in lowlevel_init.S"
>
> https://gcc.gnu.org/ml/gcc-help/2012-07/msg00181.html
>
>
> any suggestions?
Not sure of the best approach here. It seems if the actual check engages
the -march option for gas (on an omap build) we should build for any of
them. That's a bit hacky though. But it's just as easy to just add the
.arch_extension sec as you suggest and we have to quit supporting gcc 4.4
in either case AFAICT.
-Matt
next prev parent reply other threads:[~2015-03-05 20:22 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-03 22:26 [U-Boot] [PATCH V4 00/11] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 01/11] ARM: Introduce erratum workaround for 798870 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 02/11] ARM: Introduce erratum workaround for 454179 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 03/11] ARM: Introduce erratum workaround for 430973 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 04/11] ARM: Introduce erratum workaround for 621766 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 05/11] ARM: OMAP: Change set_pl310_ctrl_reg to be generic Nishanth Menon
2015-03-05 14:00 ` Matt Porter
2015-03-05 17:49 ` Nishanth Menon
2015-03-05 20:22 ` Matt Porter [this message]
2015-03-05 21:36 ` Tom Rini
2015-03-05 22:27 ` Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 06/11] ARM: OMAP3: Rename omap3.h to omap.h to be generic as all SoCs Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 07/11] ARM: OMAP3: Get rid of omap3_gp_romcode_call and replace with omap_smc1 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 08/11] ARM: DRA7 / OMAP5: Add workaround for ARM errata 798870 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 09/11] ARM: OMAP5 / DRA7: Setup L2 Aux Control Register with recommended configuration Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 10/11] ARM: OMAP3: Enable workaround for ARM errata 454179, 430973, 621766 Nishanth Menon
2015-03-03 22:26 ` [U-Boot] [PATCH V4 11/11] ARM: OMAP3: rx51: " Nishanth Menon
2015-03-05 16:21 ` [U-Boot] [PATCH V4 00/11] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements Matt Porter
2015-03-05 17:56 ` Nishanth Menon
2015-03-06 2:52 ` Nishanth Menon
2015-03-06 21:02 ` Matt Porter
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=20150305202215.GK19577@beef \
--to=mporter@konsulko.com \
--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.