Re: [PATCH 35/35] m68k: allow ColdFire 547x and 548x CPUs to be built with MMU enabled

Greg Ungerer
2011-12-28T01:35:57Z

Hi Geert,

On 27/12/11 05:32, Geert Uytterhoeven wrote:
> Hi Greg,
>
> On Fri, 23 Dec 2011, gerg@snapgear.com wrote:
>> From: Greg Ungerer<gerg@uclinux.org>
>>
>> The ColdFire 547x and 548x CPUs have internal MMU hardware. All code
>> to support this is now in, so we can build kernels with it enabled.
>>
>> Signed-off-by: Greg Ungerer<gerg@uclinux.org>
>> Acked-by: Geert Uytterhoeven<geert@linux-m68k.org>
>> Acked-by: Matt Waddel<mwaddel@yahoo.com>
>> Acked-by: Kurt Mahan<kmahan@xmission.com>
>> ---
>> arch/m68k/Kconfig.cpu | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
>> index 5ae1d63..a4c75ad 100644
>> --- a/arch/m68k/Kconfig.cpu
>> +++ b/arch/m68k/Kconfig.cpu
>> @@ -226,8 +226,8 @@ config M54xx
>>
>> config M547x
>> bool "MCF547x"
>> - depends on !MMU
>> select COLDFIRE
>> + select MMU_COLDFIRE if MMU
>> select M54xx
>> select HAVE_CACHE_CB
>> select HAVE_MBAR
>> @@ -236,8 +236,8 @@ config M547x
>>
>> config M548x
>> bool "MCF548x"
>> - depends on !MMU
>> select COLDFIRE
>> + select MMU_COLDFIRE if MMU
>> select M54xx
>> select HAVE_CACHE_CB
>> select HAVE_MBAR
>
> This breaks allmodconfig, which now tries to build a hybrid classic/coldfire
> kernel, which is not supported.
>
> In addition, M54xx kernels with e.g. Amiga or Atari support won't build
> neither (I think, I haven't tried --- We may want to reconsider later as
> there do exist Coldfire accelerator cards for some machines).
>
> At first I tried to fix it transparently by introducing CONFIG_M68KCLASSIC and
> using a combination of select and depends, cfr. Sun3 MMU support, but that
> failed due to a circular Kconfig dependency.
>
> So I came up with the patch below. Note that some defconfigs must be
> regenerated, as they may create configs without CPU support.

Yep, that makes sense. I had considered during development of these
patches if we needed something like a M68KCLASSIC define. Looks like
we do :-)

I applied this patch before the the 0035 patch that created this problem.
So that should keep everything able to build (and bisectable) with
allmodconfig. I also squashed the change to use "choice" into this
patch as well.

When I get another minute I'll look at updating the defconfigs based on
this too.

Thanks!
Greg

> from c56cfe6a186f45a88ffc3e628be4649ae51e61ad Mon Sep 17 00:00:00 2001
> From: Geert Uytterhoeven<geert@linux-m68k.org>
> Date: Mon, 26 Dec 2011 19:57:33 +0100
> Subject: [PATCH] m68k/Kconfig: Separate classic m68k and coldfire early
>
> While you can build multiplatform kernels for machines with classic
> m68k processors, you cannot mix support for classic m68k and coldfire
> processors. To avoid such hybrid kernels, introduce CONFIG_M68KCLASSIC
> as an antipole for CONFIG_COLDFIRE, and make all specific processor
> support depend on one of them.
> All classic m68k machine support also needs to depend on this.
>
> The defaults (CONFIG_M68KCLASSIC if MMU, CONFIG_COLDFIRE if !MMU) are
> chosen such to make most of the existing configs build and work.
>
> Signed-off-by: Geert Uytterhoeven<geert@linux-m68k.org>
> ---
> arch/m68k/Kconfig.cpu | 63 +++++++++++++++++++++++++--------------------
> arch/m68k/Kconfig.machine | 4 +++
> 2 files changed, 39 insertions(+), 28 deletions(-)
>
> diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
> index a4c75ad..58d4b52 100644
> --- a/arch/m68k/Kconfig.cpu
> +++ b/arch/m68k/Kconfig.cpu
> @@ -1,5 +1,34 @@
> comment "Processor Type"
>
> +config M68KCLASSIC
> + bool "Classic M68K CPU family support"
> + default y if MMU
> + help
> + The Freescale (was Motorola) M68K family of processors implements
> + the full 68000 processor instruction set.
> + If you anticipate running this kernel on a computer with a classic
> + MC68xxx processor, say Y. Otherwise, say N.
> +
> +config COLDFIRE
> + bool "Coldfire CPU family support"
> + depends on !M68KCLASSIC
> + select GENERIC_GPIO
> + select ARCH_REQUIRE_GPIOLIB
> + select CPU_HAS_NO_BITFIELDS
> + select CPU_HAS_NO_MULDIV64
> + select GENERIC_CSUM
> + default y if !MMU
> + help
> + The Freescale ColdFire family of processors is a modern derivitive
> + of the 68000 processor family. They are mainly targeted at embedded
> + applications, and are all System-On-Chip (SOC) devices, as opposed
> + to stand alone CPUs. They implement a subset of the original 68000
> + processor instruction set.
> + If you anticipate running this kernel on a computer with a ColdFire
> + processor, say Y. Otherwise, say N.
> +
> +if M68KCLASSIC
> +
> config M68000
> bool
> select CPU_HAS_NO_BITFIELDS
> @@ -20,20 +49,6 @@ config MCPU32
> based on the 68020 processor. For the most part it is used in
> System-On-Chip parts, and does not contain a paging MMU.
>
> -config COLDFIRE
> - bool
> - select GENERIC_GPIO
> - select ARCH_REQUIRE_GPIOLIB
> - select CPU_HAS_NO_BITFIELDS
> - select CPU_HAS_NO_MULDIV64
> - select GENERIC_CSUM
> - help
> - The Freescale ColdFire family of processors is a modern derivitive
> - of the 68000 processor family. They are mainly targeted at embedded
> - applications, and are all System-On-Chip (SOC) devices, as opposed
> - to stand alone CPUs. They implement a subset of the original 68000
> - processor instruction set.
> -
> config M68020
> bool "68020 support"
> depends on MMU
> @@ -103,10 +118,13 @@ config M68360
> help
> Motorola 68360 processor support.
>
> +endif # M68KCLASSIC
> +
> +if COLDFIRE
> +
> config M5206
> bool "MCF5206"
> depends on !MMU
> - select COLDFIRE
> select COLDFIRE_SW_A7
> select HAVE_MBAR
> help
> @@ -115,7 +133,6 @@ config M5206
> config M5206e
> bool "MCF5206e"
> depends on !MMU
> - select COLDFIRE
> select COLDFIRE_SW_A7
> select HAVE_MBAR
> help
> @@ -124,7 +141,6 @@ config M5206e
> config M520x
> bool "MCF520x"
> depends on !MMU
> - select COLDFIRE
> select GENERIC_CLOCKEVENTS
> select HAVE_CACHE_SPLIT
> help
> @@ -133,7 +149,6 @@ config M520x
> config M523x
> bool "MCF523x"
> depends on !MMU
> - select COLDFIRE
> select GENERIC_CLOCKEVENTS
> select HAVE_CACHE_SPLIT
> select HAVE_IPSBAR
> @@ -143,7 +158,6 @@ config M523x
> config M5249
> bool "MCF5249"
> depends on !MMU
> - select COLDFIRE
> select COLDFIRE_SW_A7
> select HAVE_MBAR
> help
> @@ -155,7 +169,6 @@ config M527x
> config M5271
> bool "MCF5271"
> depends on !MMU
> - select COLDFIRE
> select M527x
> select HAVE_CACHE_SPLIT
> select HAVE_IPSBAR
> @@ -166,7 +179,6 @@ config M5271
> config M5272
> bool "MCF5272"
> depends on !MMU
> - select COLDFIRE
> select COLDFIRE_SW_A7
> select HAVE_MBAR
> help
> @@ -175,7 +187,6 @@ config M5272
> config M5275
> bool "MCF5275"
> depends on !MMU
> - select COLDFIRE
> select M527x
> select HAVE_CACHE_SPLIT
> select HAVE_IPSBAR
> @@ -186,7 +197,6 @@ config M5275
> config M528x
> bool "MCF528x"
> depends on !MMU
> - select COLDFIRE
> select GENERIC_CLOCKEVENTS
> select HAVE_CACHE_SPLIT
> select HAVE_IPSBAR
> @@ -196,7 +206,6 @@ config M528x
> config M5307
> bool "MCF5307"
> depends on !MMU
> - select COLDFIRE
> select COLDFIRE_SW_A7
> select HAVE_CACHE_CB
> select HAVE_MBAR
> @@ -206,7 +215,6 @@ config M5307
> config M532x
> bool "MCF532x"
> depends on !MMU
> - select COLDFIRE
> select HAVE_CACHE_CB
> help
> Freescale (Motorola) ColdFire 532x processor support.
> @@ -214,7 +222,6 @@ config M532x
> config M5407
> bool "MCF5407"
> depends on !MMU
> - select COLDFIRE
> select COLDFIRE_SW_A7
> select HAVE_CACHE_CB
> select HAVE_MBAR
> @@ -226,7 +233,6 @@ config M54xx
>
> config M547x
> bool "MCF547x"
> - select COLDFIRE
> select MMU_COLDFIRE if MMU
> select M54xx
> select HAVE_CACHE_CB
> @@ -236,7 +242,6 @@ config M547x
>
> config M548x
> bool "MCF548x"
> - select COLDFIRE
> select MMU_COLDFIRE if MMU
> select M54xx
> select HAVE_CACHE_CB
> @@ -244,6 +249,8 @@ config M548x
> help
> Freescale ColdFire 5480/5481/5482/5483/5484/5485 processor support.
>
> +endif # COLDFIRE
> +
>
> comment "Processor Specific Options"
>
> diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine
> index ef4a26a..7cdf6b0 100644
> --- a/arch/m68k/Kconfig.machine
> +++ b/arch/m68k/Kconfig.machine
> @@ -1,5 +1,7 @@
> comment "Machine Types"
>
> +if M68KCLASSIC
> +
> config AMIGA
> bool "Amiga support"
> depends on MMU
> @@ -130,6 +132,8 @@ config SUN3
>
> If you don't want to compile a kernel exclusively for a Sun 3, say N.
>
> +endif # M68KCLASSIC
> +
> config PILOT
> bool
>

--
------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: gerg@snapgear.com
SnapGear Group, McAfee PHONE: +61 7 3435 2888
8 Gardner Close FAX: +61 7 3217 5323
Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com