On Thu, Apr 9, 2020 at 8:49 PM Heinrich Schuchardt <xypron.g...@gmx.de> wrote: > > On 2020-04-08 17:39, Sicris wrote: > > This patch fixes the typo error in Makefile where > > -I$(srctree)/arch/$(ARCH)/thumb1/include is not picked up > > in the compiler flag when compiling for thumb2. > > END > > > > Signed-off-by: Sicris <sicris.em...@gmail.com> > > --- > > > > Makefile | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/Makefile b/Makefile > > index 8de5ff6d94..503b30392d 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -704,7 +704,7 @@ UBOOTINCLUDE := \ > > -Iinclude \ > > $(if $(KBUILD_SRC), -I$(srctree)/include) \ > > $(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \ > > - $(if $(CONFIG_HAS_THUMB2),, \ > > + $(if $(CONFIG_HAS_THUMB2), \ > > -I$(srctree)/arch/$(ARCH)/thumb1/include),) \ > > This patch relates to > https://stackoverflow.com/questions/61097841/error-selected-processor-does-not-support-requested-special-purpose-register > > The original problem was using the wrong compiler as discussed on > Stackoverflow.
Sorry, I was not very clear on the problem that I've encountered. I tried the M-profile as suggested in the stackoverflow comment from Frant. However, I still get the same error with CONFIG_CMD_UBI=y. {standard input}:757: Error: selected processor does not support requested special purpose register – msr cpsr_c,r3 This is due to the assembly inline function local_irq_save() / local_irq_restore. On closer inspection, the wrong header for local_irq_save / local_irq_restore was picked up by the compiler. Wrong Header: /arch/arm/include/asm/proc-armv/system.h (Closest i can find) Correct Header: /arch/arm/thumb1/include/asm/proc-armv/system.h > > Compiling stm32f769-disco_defconfig works fine using the Debian Bullseye > package gcc-arm-linux-gnueabi without this patch. Can you help me check if this compiles using Debian Bullseye with CONFIG_CMD_UBI=y? > > The current logic is: > If it is thumb and not thumb2, include the thumb1 directory. > If it is thumb and thumb2, do not include the thumb1 directory. > > You are inverting the logic with your patch: > > If it is thumb and thumb2, include the thumb1 directory. > If it is thumb and not thumb2, do not include the thumb1 directory. > > This does not make much sense to me. > Does this suggestion make sense? $(if $(CONFIG_HAS_THUMB2), \ -I$(srctree)/arch/$(ARCH)/thumb2/include), -I$(srctree)/arch/$(ARCH)/thumb1/include),) \ with thumb2/include contains the same thumb1/include contents. > For understanding the if-statement I found the following Makefile useful: > > ---- > all: > $(if ,,echo 1) > $(if ,echo 2) > $(if 1,,echo 3) > $(if 1,echo 4) > --- > > The output contains 1 and 4. > > Best regards > > Heinrich > > > > -I$(srctree)/arch/$(ARCH)/include \ > > -include $(srctree)/include/linux/kconfig.h > > > cheers, Sicris Rey