Hi Marek, On 20 March 2016 at 10:15, Marek Vasut <ma...@denx.de> wrote: > Import unified.h from Linux kernel 4.4.6 , commit > 0d1912303e54ed1b2a371be0bba51c384dd57326 . This header file contains > macros used in libgcc functions in Linux kernel on ARM and will be > needed for the libgcc sync. > > Since unified.h defines the W(instr) macro, we must drop this from > the macro from memcpy.S , otherwise this triggers a warning about > symbol redefinition. In order to keep the changes to unified.h to > the minimum, tweak arch/arm/lib/Makefile such that it defines new > CONFIG_THUMB2_KERNEL macro, which is already checked by unified.h, > only if Thumb build is enabled, but the target does not support > Thumb2 . This way we can remove ad-hoc -DMEMSET_NO_THUMB_BUILD and > -DMEMCPY_NO_THUMB_BUILD and we do not change the logic. > > Signed-off-by: Marek Vasut <ma...@denx.de> > Cc: Albert Aribaud <albert.u.b...@aribaud.net> > Cc: Masahiro Yamada <yamada.masah...@socionext.com> > Cc: Simon Glass <s...@chromium.org> > Cc: Tom Rini <tr...@konsulko.com> > --- > arch/arm/include/asm/assembler.h | 1 + > arch/arm/include/asm/unified.h | 140 > +++++++++++++++++++++++++++++++++++++++ > arch/arm/lib/Makefile | 6 +- > arch/arm/lib/memcpy.S | 6 -- > 4 files changed, 144 insertions(+), 9 deletions(-) > create mode 100644 arch/arm/include/asm/unified.h
Reviewed-by: Simon Glass <s...@chromium.org> Can we use SPDX? > > diff --git a/arch/arm/include/asm/assembler.h > b/arch/arm/include/asm/assembler.h > index 11b80fb..ae1e42f 100644 > --- a/arch/arm/include/asm/assembler.h > +++ b/arch/arm/include/asm/assembler.h > @@ -15,6 +15,7 @@ > */ > > #include <config.h> > +#include <asm/unified.h> > > /* > * Endian independent macros for shifting bytes within registers. > diff --git a/arch/arm/include/asm/unified.h b/arch/arm/include/asm/unified.h > new file mode 100644 > index 0000000..a91ae49 > --- /dev/null > +++ b/arch/arm/include/asm/unified.h > @@ -0,0 +1,140 @@ > +/* > + * include/asm-arm/unified.h - Unified Assembler Syntax helper macros > + * > + * Copyright (C) 2008 ARM Limited > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +#ifndef __ASM_UNIFIED_H > +#define __ASM_UNIFIED_H > + > +#if defined(__ASSEMBLY__) && defined(CONFIG_ARM_ASM_UNIFIED) > + .syntax unified > +#endif > + > +#ifdef CONFIG_CPU_V7M > +#define AR_CLASS(x...) > +#define M_CLASS(x...) x > +#else > +#define AR_CLASS(x...) x > +#define M_CLASS(x...) > +#endif > + > +#ifdef CONFIG_THUMB2_KERNEL > + > +#if __GNUC__ < 4 > +#error Thumb-2 kernel requires gcc >= 4 > +#endif > + > +/* The CPSR bit describing the instruction set (Thumb) */ > +#define PSR_ISETSTATE PSR_T_BIT > + > +#define ARM(x...) > +#define THUMB(x...) x > +#ifdef __ASSEMBLY__ > +#define W(instr) instr.w > +#else > +#define WASM(instr) #instr ".w" > +#endif > + > +#else /* !CONFIG_THUMB2_KERNEL */ > + > +/* The CPSR bit describing the instruction set (ARM) */ > +#define PSR_ISETSTATE 0 > + > +#define ARM(x...) x > +#define THUMB(x...) > +#ifdef __ASSEMBLY__ > +#define W(instr) instr > +#else > +#define WASM(instr) #instr > +#endif > + > +#endif /* CONFIG_THUMB2_KERNEL */ > + > +#ifndef CONFIG_ARM_ASM_UNIFIED > + > +/* > + * If the unified assembly syntax isn't used (in ARM mode), these > + * macros expand to an empty string > + */ > +#ifdef __ASSEMBLY__ > + .macro it, cond > + .endm > + .macro itt, cond > + .endm > + .macro ite, cond > + .endm > + .macro ittt, cond > + .endm > + .macro itte, cond > + .endm > + .macro itet, cond > + .endm > + .macro itee, cond > + .endm > + .macro itttt, cond > + .endm > + .macro ittte, cond > + .endm > + .macro ittet, cond > + .endm > + .macro ittee, cond > + .endm > + .macro itett, cond > + .endm > + .macro itete, cond > + .endm > + .macro iteet, cond > + .endm > + .macro iteee, cond > + .endm > +#else /* !__ASSEMBLY__ */ > +__asm__( > +" .macro it, cond\n" > +" .endm\n" > +" .macro itt, cond\n" > +" .endm\n" > +" .macro ite, cond\n" > +" .endm\n" > +" .macro ittt, cond\n" > +" .endm\n" > +" .macro itte, cond\n" > +" .endm\n" > +" .macro itet, cond\n" > +" .endm\n" > +" .macro itee, cond\n" > +" .endm\n" > +" .macro itttt, cond\n" > +" .endm\n" > +" .macro ittte, cond\n" > +" .endm\n" > +" .macro ittet, cond\n" > +" .endm\n" > +" .macro ittee, cond\n" > +" .endm\n" > +" .macro itett, cond\n" > +" .endm\n" > +" .macro itete, cond\n" > +" .endm\n" > +" .macro iteet, cond\n" > +" .endm\n" > +" .macro iteee, cond\n" > +" .endm\n"); > +#endif /* __ASSEMBLY__ */ > + > +#endif /* CONFIG_ARM_ASM_UNIFIED */ > + > +#endif /* !__ASM_UNIFIED_H */ > diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile > index 7a0fb58..a930744 100644 > --- a/arch/arm/lib/Makefile > +++ b/arch/arm/lib/Makefile > @@ -80,8 +80,8 @@ CFLAGS_cache-cp15.o := -marm > > AFLAGS_REMOVE_memset.o := -mthumb -mthumb-interwork > AFLAGS_REMOVE_memcpy.o := -mthumb -mthumb-interwork > -AFLAGS_memset.o := -DMEMSET_NO_THUMB_BUILD > -AFLAGS_memcpy.o := -DMEMCPY_NO_THUMB_BUILD > - > +else > +AFLAGS_memset.o := -DCONFIG_THUMB2_KERNEL > +AFLAGS_memcpy.o := -DCONFIG_THUMB2_KERNEL > endif > endif > diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S > index 7d9fc0f..00602e9 100644 > --- a/arch/arm/lib/memcpy.S > +++ b/arch/arm/lib/memcpy.S > @@ -13,12 +13,6 @@ > #include <linux/linkage.h> > #include <asm/assembler.h> > > -#if defined(CONFIG_SYS_THUMB_BUILD) && !defined(MEMCPY_NO_THUMB_BUILD) > -#define W(instr) instr.w > -#else > -#define W(instr) instr > -#endif > - > #define LDR1W_SHIFT 0 > #define STR1W_SHIFT 0 > > -- > 2.7.0 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot