Message ID | 20220827133900.16634-1-pali@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] powerpc/boot: Don't always pass -mcpu=powerpc when building 32-bit uImage | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/github-powerpc_selftests | success | Successfully ran 10 jobs. |
snowpatch_ozlabs/github-powerpc_ppctests | success | Successfully ran 10 jobs. |
snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 6 jobs. |
snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 23 jobs. |
Le 27/08/2022 à 15:39, Pali Rohár a écrit : > For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes > following compiler error when building kernel with powerpc e500 SPE capable > cross compilers: > > BOOTAS arch/powerpc/boot/crt0.o > powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ > powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native > make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 > > For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no > change. > > Similar change was already introduced for the main powerpc Makefile in > commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the > compiler"). > > Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") > Cc: stable@vger.kernel.org > Signed-off-by: Pali Rohár <pali@kernel.org> > --- > arch/powerpc/boot/Makefile | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > index a9cd2ea4a861..f56a5f90a5d8 100644 > --- a/arch/powerpc/boot/Makefile > +++ b/arch/powerpc/boot/Makefile > @@ -44,8 +44,16 @@ else > BOOTCFLAGS += -m64 -mcpu=powerpc64 > endif > else > +ifdef CONFIG_PPC32 > +ifdef CONFIG_TARGET_CPU_BOOL > +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) > +else > +BOOTCFLAGS += -m32 -mcpu=powerpc You can't do that. You get here only if user has selected TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case CONFIG_TARGET_CPU_BOOL is set as well. > +endif > +else > BOOTCFLAGS += -m32 -mcpu=powerpc Same, for PPC64 I think you don't want that either, unless the CONFIG_GENERIC_CPU has been selected in which case CONFIG_TARGET_CPU_BOOL is not set. When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want -mcpu=$(CONFIG_TARGET_CPU) > endif > +endif > > BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) >
On Saturday 27 August 2022 17:31:10 Christophe Leroy wrote: > Le 27/08/2022 à 15:39, Pali Rohár a écrit : > > For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes > > following compiler error when building kernel with powerpc e500 SPE capable > > cross compilers: > > > > BOOTAS arch/powerpc/boot/crt0.o > > powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ > > powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native > > make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 > > > > For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no > > change. > > > > Similar change was already introduced for the main powerpc Makefile in > > commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the > > compiler"). > > > > Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") > > Cc: stable@vger.kernel.org > > Signed-off-by: Pali Rohár <pali@kernel.org> > > --- > > arch/powerpc/boot/Makefile | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > > index a9cd2ea4a861..f56a5f90a5d8 100644 > > --- a/arch/powerpc/boot/Makefile > > +++ b/arch/powerpc/boot/Makefile > > @@ -44,8 +44,16 @@ else > > BOOTCFLAGS += -m64 -mcpu=powerpc64 > > endif > > else > > +ifdef CONFIG_PPC32 > > +ifdef CONFIG_TARGET_CPU_BOOL > > +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) > > +else > > +BOOTCFLAGS += -m32 -mcpu=powerpc > > You can't do that. You get here only if user has selected > TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. So do I understand it correctly that in this branch I should omit -mcpu=powerpc? > -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case > CONFIG_TARGET_CPU_BOOL is set as well. > > > +endif > > +else > > BOOTCFLAGS += -m32 -mcpu=powerpc > > Same, for PPC64 I think you don't want that either, unless the > CONFIG_GENERIC_CPU has been selected in which case > CONFIG_TARGET_CPU_BOOL is not set. > > When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want > -mcpu=$(CONFIG_TARGET_CPU) I understand that this branch is called for PPC64 build with 32-bit uImage wrapper. So in this case should not be used TARGET_CPU as it would be 64-bit and not 32-bit as requited for 32-bit uImage wrapper. Anyway, in this change I'm touching only PPC32 build, so all PPC64 stay as it was before. > > endif > > +endif > > > > BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) > >
Le 27/08/2022 à 19:36, Pali Rohár a écrit : > On Saturday 27 August 2022 17:31:10 Christophe Leroy wrote: >> Le 27/08/2022 à 15:39, Pali Rohár a écrit : >>> For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes >>> following compiler error when building kernel with powerpc e500 SPE capable >>> cross compilers: >>> >>> BOOTAS arch/powerpc/boot/crt0.o >>> powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ >>> powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native >>> make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 >>> >>> For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no >>> change. >>> >>> Similar change was already introduced for the main powerpc Makefile in >>> commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the >>> compiler"). >>> >>> Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") >>> Cc: stable@vger.kernel.org >>> Signed-off-by: Pali Rohár <pali@kernel.org> >>> --- >>> arch/powerpc/boot/Makefile | 8 ++++++++ >>> 1 file changed, 8 insertions(+) >>> >>> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile >>> index a9cd2ea4a861..f56a5f90a5d8 100644 >>> --- a/arch/powerpc/boot/Makefile >>> +++ b/arch/powerpc/boot/Makefile >>> @@ -44,8 +44,16 @@ else >>> BOOTCFLAGS += -m64 -mcpu=powerpc64 >>> endif >>> else >>> +ifdef CONFIG_PPC32 >>> +ifdef CONFIG_TARGET_CPU_BOOL >>> +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) >>> +else >>> +BOOTCFLAGS += -m32 -mcpu=powerpc >> >> You can't do that. You get here only if user has selected >> TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. > > So do I understand it correctly that in this branch I should omit -mcpu=powerpc? Correct. > >> -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case >> CONFIG_TARGET_CPU_BOOL is set as well. >> >>> +endif >>> +else >>> BOOTCFLAGS += -m32 -mcpu=powerpc >> >> Same, for PPC64 I think you don't want that either, unless the >> CONFIG_GENERIC_CPU has been selected in which case >> CONFIG_TARGET_CPU_BOOL is not set. >> >> When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want >> -mcpu=$(CONFIG_TARGET_CPU) > > I understand that this branch is called for PPC64 build with 32-bit > uImage wrapper. So in this case should not be used TARGET_CPU as it > would be 64-bit and not 32-bit as requited for 32-bit uImage wrapper. Why ? -mcpu=e6500 -m32 works as far as I can see. > > Anyway, in this change I'm touching only PPC32 build, so all PPC64 stay > as it was before. > >>> endif >>> +endif >>> >>> BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) >>>
On Saturday 27 August 2022 18:32:42 Christophe Leroy wrote: > Le 27/08/2022 à 19:36, Pali Rohár a écrit : > > On Saturday 27 August 2022 17:31:10 Christophe Leroy wrote: > >> Le 27/08/2022 à 15:39, Pali Rohár a écrit : > >>> For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes > >>> following compiler error when building kernel with powerpc e500 SPE capable > >>> cross compilers: > >>> > >>> BOOTAS arch/powerpc/boot/crt0.o > >>> powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ > >>> powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native > >>> make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 > >>> > >>> For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no > >>> change. > >>> > >>> Similar change was already introduced for the main powerpc Makefile in > >>> commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the > >>> compiler"). > >>> > >>> Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") > >>> Cc: stable@vger.kernel.org > >>> Signed-off-by: Pali Rohár <pali@kernel.org> > >>> --- > >>> arch/powerpc/boot/Makefile | 8 ++++++++ > >>> 1 file changed, 8 insertions(+) > >>> > >>> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > >>> index a9cd2ea4a861..f56a5f90a5d8 100644 > >>> --- a/arch/powerpc/boot/Makefile > >>> +++ b/arch/powerpc/boot/Makefile > >>> @@ -44,8 +44,16 @@ else > >>> BOOTCFLAGS += -m64 -mcpu=powerpc64 > >>> endif > >>> else > >>> +ifdef CONFIG_PPC32 > >>> +ifdef CONFIG_TARGET_CPU_BOOL > >>> +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) > >>> +else > >>> +BOOTCFLAGS += -m32 -mcpu=powerpc > >> > >> You can't do that. You get here only if user has selected > >> TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. > > > > So do I understand it correctly that in this branch I should omit -mcpu=powerpc? > > Correct. Ok, I will fix it in v3. > > > >> -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case > >> CONFIG_TARGET_CPU_BOOL is set as well. > >> > >>> +endif > >>> +else > >>> BOOTCFLAGS += -m32 -mcpu=powerpc > >> > >> Same, for PPC64 I think you don't want that either, unless the > >> CONFIG_GENERIC_CPU has been selected in which case > >> CONFIG_TARGET_CPU_BOOL is not set. > >> > >> When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want > >> -mcpu=$(CONFIG_TARGET_CPU) > > > > I understand that this branch is called for PPC64 build with 32-bit > > uImage wrapper. So in this case should not be used TARGET_CPU as it > > would be 64-bit and not 32-bit as requited for 32-bit uImage wrapper. > > Why ? > > -mcpu=e6500 -m32 works as far as I can see. Hm... I did not know that. Ok, if you want I will put it into -m32 -mcpu=$(CONFIG_TARGET_CPU) branch too. > > > > Anyway, in this change I'm touching only PPC32 build, so all PPC64 stay > > as it was before. > > > >>> endif > >>> +endif > >>> > >>> BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) > >>>
On Saturday 27 August 2022 20:36:08 Pali Rohár wrote: > On Saturday 27 August 2022 18:32:42 Christophe Leroy wrote: > > Le 27/08/2022 à 19:36, Pali Rohár a écrit : > > > On Saturday 27 August 2022 17:31:10 Christophe Leroy wrote: > > >> Le 27/08/2022 à 15:39, Pali Rohár a écrit : > > >>> For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes > > >>> following compiler error when building kernel with powerpc e500 SPE capable > > >>> cross compilers: > > >>> > > >>> BOOTAS arch/powerpc/boot/crt0.o > > >>> powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ > > >>> powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native > > >>> make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 > > >>> > > >>> For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no > > >>> change. > > >>> > > >>> Similar change was already introduced for the main powerpc Makefile in > > >>> commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the > > >>> compiler"). > > >>> > > >>> Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") > > >>> Cc: stable@vger.kernel.org > > >>> Signed-off-by: Pali Rohár <pali@kernel.org> > > >>> --- > > >>> arch/powerpc/boot/Makefile | 8 ++++++++ > > >>> 1 file changed, 8 insertions(+) > > >>> > > >>> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > > >>> index a9cd2ea4a861..f56a5f90a5d8 100644 > > >>> --- a/arch/powerpc/boot/Makefile > > >>> +++ b/arch/powerpc/boot/Makefile > > >>> @@ -44,8 +44,16 @@ else > > >>> BOOTCFLAGS += -m64 -mcpu=powerpc64 > > >>> endif > > >>> else > > >>> +ifdef CONFIG_PPC32 > > >>> +ifdef CONFIG_TARGET_CPU_BOOL > > >>> +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) > > >>> +else > > >>> +BOOTCFLAGS += -m32 -mcpu=powerpc > > >> > > >> You can't do that. You get here only if user has selected > > >> TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. > > > > > > So do I understand it correctly that in this branch I should omit -mcpu=powerpc? > > > > Correct. > > Ok, I will fix it in v3. > > > > > > >> -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case > > >> CONFIG_TARGET_CPU_BOOL is set as well. > > >> > > >>> +endif > > >>> +else > > >>> BOOTCFLAGS += -m32 -mcpu=powerpc > > >> > > >> Same, for PPC64 I think you don't want that either, unless the > > >> CONFIG_GENERIC_CPU has been selected in which case > > >> CONFIG_TARGET_CPU_BOOL is not set. > > >> > > >> When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want > > >> -mcpu=$(CONFIG_TARGET_CPU) > > > > > > I understand that this branch is called for PPC64 build with 32-bit > > > uImage wrapper. So in this case should not be used TARGET_CPU as it > > > would be 64-bit and not 32-bit as requited for 32-bit uImage wrapper. > > > > Why ? > > > > -mcpu=e6500 -m32 works as far as I can see. > > Hm... I did not know that. Ok, if you want I will put it into > -m32 -mcpu=$(CONFIG_TARGET_CPU) branch too. And when CONFIG_TARGET_CPU_BOOL is not set but CONFIG_PPC64_BOOT_WRAPPER is, should be -mcpu=powerpc64le or -mcpu=powerpc64 still passed? > > > > > > Anyway, in this change I'm touching only PPC32 build, so all PPC64 stay > > > as it was before. > > > > > >>> endif > > >>> +endif > > >>> > > >>> BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) > > >>>
Le 27/08/2022 à 21:00, Pali Rohár a écrit : > On Saturday 27 August 2022 20:36:08 Pali Rohár wrote: >> On Saturday 27 August 2022 18:32:42 Christophe Leroy wrote: >>> Le 27/08/2022 à 19:36, Pali Rohár a écrit : >>>> On Saturday 27 August 2022 17:31:10 Christophe Leroy wrote: >>>>> Le 27/08/2022 à 15:39, Pali Rohár a écrit : >>>>>> For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes >>>>>> following compiler error when building kernel with powerpc e500 SPE capable >>>>>> cross compilers: >>>>>> >>>>>> BOOTAS arch/powerpc/boot/crt0.o >>>>>> powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ >>>>>> powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native >>>>>> make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 >>>>>> >>>>>> For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no >>>>>> change. >>>>>> >>>>>> Similar change was already introduced for the main powerpc Makefile in >>>>>> commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the >>>>>> compiler"). >>>>>> >>>>>> Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") >>>>>> Cc: stable@vger.kernel.org >>>>>> Signed-off-by: Pali Rohár <pali@kernel.org> >>>>>> --- >>>>>> arch/powerpc/boot/Makefile | 8 ++++++++ >>>>>> 1 file changed, 8 insertions(+) >>>>>> >>>>>> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile >>>>>> index a9cd2ea4a861..f56a5f90a5d8 100644 >>>>>> --- a/arch/powerpc/boot/Makefile >>>>>> +++ b/arch/powerpc/boot/Makefile >>>>>> @@ -44,8 +44,16 @@ else >>>>>> BOOTCFLAGS += -m64 -mcpu=powerpc64 >>>>>> endif >>>>>> else >>>>>> +ifdef CONFIG_PPC32 >>>>>> +ifdef CONFIG_TARGET_CPU_BOOL >>>>>> +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) >>>>>> +else >>>>>> +BOOTCFLAGS += -m32 -mcpu=powerpc >>>>> >>>>> You can't do that. You get here only if user has selected >>>>> TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. >>>> >>>> So do I understand it correctly that in this branch I should omit -mcpu=powerpc? >>> >>> Correct. >> >> Ok, I will fix it in v3. >> >>>> >>>>> -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case >>>>> CONFIG_TARGET_CPU_BOOL is set as well. >>>>> >>>>>> +endif >>>>>> +else >>>>>> BOOTCFLAGS += -m32 -mcpu=powerpc >>>>> >>>>> Same, for PPC64 I think you don't want that either, unless the >>>>> CONFIG_GENERIC_CPU has been selected in which case >>>>> CONFIG_TARGET_CPU_BOOL is not set. >>>>> >>>>> When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want >>>>> -mcpu=$(CONFIG_TARGET_CPU) >>>> >>>> I understand that this branch is called for PPC64 build with 32-bit >>>> uImage wrapper. So in this case should not be used TARGET_CPU as it >>>> would be 64-bit and not 32-bit as requited for 32-bit uImage wrapper. >>> >>> Why ? >>> >>> -mcpu=e6500 -m32 works as far as I can see. >> >> Hm... I did not know that. Ok, if you want I will put it into >> -m32 -mcpu=$(CONFIG_TARGET_CPU) branch too. > > And when CONFIG_TARGET_CPU_BOOL is not set but CONFIG_PPC64_BOOT_WRAPPER > is, should be -mcpu=powerpc64le or -mcpu=powerpc64 still passed? Not sure, so keep it like that, will change later if needed. > >>>> >>>> Anyway, in this change I'm touching only PPC32 build, so all PPC64 stay >>>> as it was before. >>>> >>>>>> endif >>>>>> +endif >>>>>> >>>>>> BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) >>>>>>
On Sunday 28 August 2022 07:23:39 Christophe Leroy wrote: > Le 27/08/2022 à 21:00, Pali Rohár a écrit : > > On Saturday 27 August 2022 20:36:08 Pali Rohár wrote: > >> On Saturday 27 August 2022 18:32:42 Christophe Leroy wrote: > >>> Le 27/08/2022 à 19:36, Pali Rohár a écrit : > >>>> On Saturday 27 August 2022 17:31:10 Christophe Leroy wrote: > >>>>> Le 27/08/2022 à 15:39, Pali Rohár a écrit : > >>>>>> For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes > >>>>>> following compiler error when building kernel with powerpc e500 SPE capable > >>>>>> cross compilers: > >>>>>> > >>>>>> BOOTAS arch/powerpc/boot/crt0.o > >>>>>> powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ > >>>>>> powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native > >>>>>> make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 > >>>>>> > >>>>>> For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no > >>>>>> change. > >>>>>> > >>>>>> Similar change was already introduced for the main powerpc Makefile in > >>>>>> commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the > >>>>>> compiler"). > >>>>>> > >>>>>> Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") > >>>>>> Cc: stable@vger.kernel.org > >>>>>> Signed-off-by: Pali Rohár <pali@kernel.org> > >>>>>> --- > >>>>>> arch/powerpc/boot/Makefile | 8 ++++++++ > >>>>>> 1 file changed, 8 insertions(+) > >>>>>> > >>>>>> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile > >>>>>> index a9cd2ea4a861..f56a5f90a5d8 100644 > >>>>>> --- a/arch/powerpc/boot/Makefile > >>>>>> +++ b/arch/powerpc/boot/Makefile > >>>>>> @@ -44,8 +44,16 @@ else > >>>>>> BOOTCFLAGS += -m64 -mcpu=powerpc64 > >>>>>> endif > >>>>>> else > >>>>>> +ifdef CONFIG_PPC32 > >>>>>> +ifdef CONFIG_TARGET_CPU_BOOL > >>>>>> +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) > >>>>>> +else > >>>>>> +BOOTCFLAGS += -m32 -mcpu=powerpc > >>>>> > >>>>> You can't do that. You get here only if user has selected > >>>>> TOOLCHAIN_DEFAULT_CPU, in which case you don't want to for -mcpu=powerpc. > >>>> > >>>> So do I understand it correctly that in this branch I should omit -mcpu=powerpc? > >>> > >>> Correct. > >> > >> Ok, I will fix it in v3. > >> > >>>> > >>>>> -mcpu=powerpc is set when user selects CONFIG_POWERPC_CPU, in which case > >>>>> CONFIG_TARGET_CPU_BOOL is set as well. > >>>>> > >>>>>> +endif > >>>>>> +else > >>>>>> BOOTCFLAGS += -m32 -mcpu=powerpc > >>>>> > >>>>> Same, for PPC64 I think you don't want that either, unless the > >>>>> CONFIG_GENERIC_CPU has been selected in which case > >>>>> CONFIG_TARGET_CPU_BOOL is not set. > >>>>> > >>>>> When CONFIG_TARGET_CPU_BOOL is set for PPC64 you also want > >>>>> -mcpu=$(CONFIG_TARGET_CPU) > >>>> > >>>> I understand that this branch is called for PPC64 build with 32-bit > >>>> uImage wrapper. So in this case should not be used TARGET_CPU as it > >>>> would be 64-bit and not 32-bit as requited for 32-bit uImage wrapper. > >>> > >>> Why ? > >>> > >>> -mcpu=e6500 -m32 works as far as I can see. > >> > >> Hm... I did not know that. Ok, if you want I will put it into > >> -m32 -mcpu=$(CONFIG_TARGET_CPU) branch too. > > > > And when CONFIG_TARGET_CPU_BOOL is not set but CONFIG_PPC64_BOOT_WRAPPER > > is, should be -mcpu=powerpc64le or -mcpu=powerpc64 still passed? > > Not sure, so keep it like that, will change later if needed. Ok! Will prepare new version. > > > >>>> > >>>> Anyway, in this change I'm touching only PPC32 build, so all PPC64 stay > >>>> as it was before. > >>>> > >>>>>> endif > >>>>>> +endif > >>>>>> > >>>>>> BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include) > >>>>>>
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index a9cd2ea4a861..f56a5f90a5d8 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -44,8 +44,16 @@ else BOOTCFLAGS += -m64 -mcpu=powerpc64 endif else +ifdef CONFIG_PPC32 +ifdef CONFIG_TARGET_CPU_BOOL +BOOTCFLAGS += -m32 -mcpu=$(CONFIG_TARGET_CPU) +else +BOOTCFLAGS += -m32 -mcpu=powerpc +endif +else BOOTCFLAGS += -m32 -mcpu=powerpc endif +endif BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
For 32-bit uImage try to use CONFIG_TARGET_CPU option for -mcpu. This fixes following compiler error when building kernel with powerpc e500 SPE capable cross compilers: BOOTAS arch/powerpc/boot/crt0.o powerpc-linux-gnuspe-gcc: error: unrecognized argument in option ‘-mcpu=powerpc’ powerpc-linux-gnuspe-gcc: note: valid arguments to ‘-mcpu=’ are: 8540 8548 native make[1]: *** [arch/powerpc/boot/Makefile:231: arch/powerpc/boot/crt0.o] Error 1 For 64-bit uImage and 64-bit kernels with 32-bit uImage wrapper there is no change. Similar change was already introduced for the main powerpc Makefile in commit 446cda1b21d9 ("powerpc/32: Don't always pass -mcpu=powerpc to the compiler"). Fixes: 40a75584e526 ("powerpc/boot: Build wrapper for an appropriate CPU") Cc: stable@vger.kernel.org Signed-off-by: Pali Rohár <pali@kernel.org> --- arch/powerpc/boot/Makefile | 8 ++++++++ 1 file changed, 8 insertions(+)