I just realised that you are building TPL.
For this you will need a TPL_SYS_THUMB_BUILD symbol now (with the 
CONFIG_IS_ENABLED knowing about the difference between TPL and SPL).

Here’s the test output from my commandline:

ptomsich@android:~/rk3399-spl/u-boot$ 
~/x-tools/arm-unknown-eabi/bin/arm-unknown-eabi-gcc -nostdinc -Iinclude    
-I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ 
-D__UBOOT__ -DCONFIG_SPL_BUILD -DCONFIG_TPL_BUILD -DCONFIG_TPL_SYS_THUMB_BUILD 
-D__ASSEMBLY__ -g -DCONFIG_THUMB2_KERNEL -D__ARM__ -Wa,-mimplicit-it=always 
-mthumb -mthumb-interwork -mabi=aapcs-linux -mno-unaligned-access 
-ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe 
-march=armv7-a -D__LINUX_ARM_ARCH__=7 -I./arch/arm/mach-rockchip/include -c -o 
/tmp/test.o arch/arm/lib/memcpy.S && echo 'GREAT SUCCESS'
GREAT SUCCESS

Note that this is a 'gcc version 6.3.0’ built from source.

> On 30 Aug 2017, at 11:27, Kever Yang <kever.y...@rock-chips.com> wrote:
> 
> Philipp,
> 
> On 08/30/2017 04:59 PM, Dr. Philipp Tomsich wrote:
>> Kever,
>> 
>> I took a quick look and this seems to be an issue with CONFIG macros.
>> This is failing, because the assembly (after preprocessing) requests regular 
>> ARM mode and
>> supplies Thumb mnemonics (e.g. nop.w).
>> 
>> The trigger seems to be the following CONFIG_IS_ENABLED check in 
>> arch/arm/lib/memcpy.S:
>>      #if CONFIG_IS_ENABLED(SYS_THUMB_BUILD) && 
>> !defined(MEMCPY_NO_THUMB_BUILD)
>>             .thumb
>>             .thumb_func
>>      #endif
> 
> This is the first point I checked, and I'm sure .thunb and .thumb_func are 
> there.
> Both and the SPL_SYS_THUMB_BUILD and SYS_THUMB_BUILD are defined, they are 
> enabled
> by default in armv7.
> 
>> 
>> I checked that this compiles correctly, if I supply 
>> -DCONFIG_SPL_SYS_THUMB_BUILD on the
>> commandline. Works as expected.
> 
> I check with command below and the error still there.
> arm-linux-gnueabihf-gcc -Wp,-MD,tpl/arch/arm/lib/.memcpy.o.d  -nostdinc 
> -isystem /usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/include -Iinclude    
> -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ 
> -D__UBOOT__ -DCONFIG_SPL_BUILD -DCONFIG_TPL_BUILD 
> -DCONFIG_SPL_SYS_THUMB_BUILD -D__ASSEMBLY__ -g -DCONFIG_THUMB2_KERNEL 
> -D__ARM__ -Wa,-mimplicit-it=always -mthumb -mthumb-interwork 
> -mabi=aapcs-linux -mno-unaligned-access -ffunction-sections -fdata-sections 
> -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a 
> -D__LINUX_ARM_ARCH__=7 -I./arch/arm/mach-rockchip/include   -c -o 
> tpl/arch/arm/lib/memcpy.o arch/arm/lib/memcpy.S
> 
> Thanks,
> - Kever
>> So, you’ll just have to enable SPL_SYS_THUMB_BUILD for you configuration 
>> (see also Tom’s
>> commit message in commit 3a649407a49b041ceb826d55b5919dc8297f8965).
>> 
>> Regards,
>> Philipp.
>> 
>>> On 30 Aug 2017, at 10:33, Kever Yang <kever.y...@rock-chips.com> 
>>> <mailto:kever.y...@rock-chips.com> wrote:
>>> 
>>> Hi 
>>> I get build error when I try to enable TPL for a new armv7 chip, the error 
>>> happen when I build arch/arm/lib/memcpy.S,
>>> 
>>> the file can pass the build for SPL but failed in TPL build, the log is 
>>> here:
>>> 
>>> The build can success if I remove the '-DCONFIT_TPL_BUILD' in red, any 
>>> people can help on this?
>>> arm-linux-gnueabihf-gcc -Wp,-MD,tpl/arch/arm/lib/.memcpy.o.d  -nostdinc 
>>> -isystem /usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/include -Iinclude    
>>> -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ 
>>> -D__UBOOT__ -DCONFIG_SPL_BUILD -DCONFIG_TPL_BUILD -D__ASSEMBLY__ -g 
>>> -DCONFIG_THUMB2_KERNEL -D__ARM__ -Wa,-mimplicit-it=always -mthumb 
>>> -mthumb-interwork -mabi=aapcs-linux -mno-unaligned-access 
>>> -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float 
>>> -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7 
>>> -I./arch/arm/mach-rockchip/include   -c -o tpl/arch/arm/lib/memcpy.o 
>>> arch/arm/lib/memcpy.S
>>> arch/arm/lib/memcpy.S: Assembler messages:
>>> arch/arm/lib/memcpy.S:114: Error: width suffixes are invalid in ARM mode -- 
>>> `nop.w'
>>> arch/arm/lib/memcpy.S:115: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w r3,[r1],#4'
>>> arch/arm/lib/memcpy.S:116: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w r4,[r1],#4'
>>> arch/arm/lib/memcpy.S:117: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w r5,[r1],#4'
>>> arch/arm/lib/memcpy.S:118: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w r6,[r1],#4'
>>> arch/arm/lib/memcpy.S:119: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w r7,[r1],#4'
>>> arch/arm/lib/memcpy.S:120: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w r8,[r1],#4'
>>> arch/arm/lib/memcpy.S:121: Error: width suffixes are invalid in ARM mode -- 
>>> `ldr.w lr,[r1],#4'
>>> ...
>>> 
>>> Thanks,
>>> - Kever
>> 
> 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to