All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Ungerer <gerg@snapgear.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-m68k@vger.kernel.org, uclinux-dev@uclinux.org,
	Greg Ungerer <gerg@uclinux.org>
Subject: Re: [PATCH 35/35] m68k: allow ColdFire 547x and 548x CPUs to be built with MMU enabled
Date: Thu, 29 Dec 2011 14:52:17 +1000	[thread overview]
Message-ID: <4EFBF201.7090201@snapgear.com> (raw)
In-Reply-To: <4EFA726C.6040406@snapgear.com>

Hi Geert,

On 28/12/11 11:35, Greg Ungerer wrote:
> On 27/12/11 05:32, Geert Uytterhoeven wrote:
>> 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.

Ran through all the defconfigs again, and with the choice change none
of them needed updating. They all build with the correct CPU choices
in place.

Nice work :-)

Regards
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

  reply	other threads:[~2011-12-29  4:52 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-23  3:15 [PATCH 00/35 v4] m68k: ColdFire MMU support gerg
2011-12-23  3:15 ` [PATCH 01/35] m68k: add machine and CPU definitions for ColdFire cores gerg
2011-12-23  3:15 ` [PATCH 02/35] m68k: show ColdFire CPU/FPU/MMU type gerg
2011-12-23  3:15 ` [PATCH 03/35] m68k: definitions for the ColdFire V4e MMU hardware gerg
2011-12-23  3:15 ` [PATCH 04/35] m68k: make interrupt definitions conditional on correct CPU types gerg
2011-12-23  3:15 ` [PATCH 05/35] m68k: add TASK definitions for ColdFires running with MMU gerg
2011-12-23  3:15 ` [PATCH 06/35] m68k: modify user space access functions to support ColdFire CPUs gerg
2011-12-25 19:56   ` Geert Uytterhoeven
2011-12-23  3:15 ` [PATCH 07/35] m68k: use addr_limit checking for m68k CPUs that do no support address spaces gerg
2011-12-25 20:01   ` Geert Uytterhoeven
2011-12-27 12:30     ` Greg Ungerer
2011-12-23  3:15 ` [PATCH 08/35] m68k: init the MMU hardware for the 54xx ColdFire gerg
2011-12-23  3:15 ` [PATCH 09/35] m68k: add ColdFire 54xx CPU MMU memory init code gerg
2011-12-25 20:05   ` Geert Uytterhoeven
2011-12-23  3:15 ` [PATCH 10/35] m68k: set register a2 to current if MMU enabled on ColdFire gerg
2011-12-25 20:09   ` Geert Uytterhoeven
2011-12-23  3:15 ` [PATCH 11/35] m68k: page table support definitions and code for ColdFire MMU gerg
2011-12-23  3:15 ` [PATCH 12/35] m68k: add page table size definitions for ColdFire V4e MMU gerg
2011-12-23  3:15 ` [PATCH 13/35] m68k: add ColdFire paging exception handling code gerg
2011-12-23  3:15 ` [PATCH 14/35] m68k: add cache support for V4e ColdFire cores running with MMU enabled gerg
2011-12-23  3:15 ` [PATCH 15/35] m68k: modify ColdFire 54xx cache support for " gerg
2011-12-23  3:15 ` [PATCH 16/35] m68k: add TLB flush support for the ColdFire V4e MMU hardware gerg
2011-12-23  3:15 ` [PATCH 17/35] m68k: define PAGE_OFFSET_RAW for ColdFire CPU with MMU enabled gerg
2011-12-25 20:15   ` Geert Uytterhoeven
2011-12-27 12:08     ` Greg Ungerer
2011-12-23  3:15 ` [PATCH 18/35] m68k: set ColdFire MMU page size gerg
2011-12-23  3:15 ` [PATCH 19/35] m68k: MMU enabled ColdFire needs 8k ELF alignment gerg
2011-12-23  3:15 ` [PATCH 20/35] m68k: ColdFire V4e MMU context support code gerg
2011-12-23  3:15 ` [PATCH 21/35] m68k: use tracehook_report_syscall_entry/exit for ColdFire MMU ptrace path gerg
2011-12-23  3:15 ` [PATCH 22/35] m68k: modify cache push and clear code for ColdFire with MMU enable gerg
2011-12-23  3:15 ` [PATCH 23/35] m68k: use ColdFire MMU read/write bit flags when ioremapping gerg
2011-12-25 20:23   ` Geert Uytterhoeven
2011-12-23  3:15 ` [PATCH 24/35] m68k: ColdFire V4e MMU paging init code and miss handler gerg
2011-12-23  3:15 ` [PATCH 25/35] m68k: compile appropriate mm arch files for ColdFire MMU support gerg
2011-12-23  3:15 ` [PATCH 26/35] m68k: create ColdFire MMU pgalloc code gerg
2011-12-23  3:15 ` [PATCH 27/35] m68k: use non-MMU entry.S code when compiling for ColdFire CPU gerg
2011-12-23  3:15 ` [PATCH 28/35] m68k: add code to setup a ColdFire 54xx platform when MMU enabled gerg
2011-12-23  3:15 ` [PATCH 29/35] m68k: ColdFire with MMU enabled uses same clocking code as non-MMU gerg
2011-12-25 20:24   ` Geert Uytterhoeven
2011-12-23  3:15 ` [PATCH 30/35] m68k: use non-MMU linker script for ColdFire MMU builds gerg
2011-12-23  3:15 ` [PATCH 31/35] m68k: adjustments to stack frame for ColdFire with MMU enabled gerg
2011-12-23  3:15 ` [PATCH 32/35] m68k: add ColdFire FPU support for the V4e ColdFire CPU's gerg
2011-12-24 19:38   ` Geert Uytterhoeven
2011-12-27 12:36     ` Greg Ungerer
2011-12-28  5:53     ` Greg Ungerer
2011-12-28 10:06       ` Geert Uytterhoeven
2011-12-28 12:32         ` Greg Ungerer
2011-12-28 12:47           ` Andreas Schwab
2011-12-28 11:17       ` Joshua Juran
2011-12-28 12:57         ` Greg Ungerer
2011-12-23  3:15 ` [PATCH 33/35] m68k: do not use m68k startup or interrupt code for " gerg
2011-12-25 20:33   ` Geert Uytterhoeven
2011-12-27 12:24     ` Greg Ungerer
2011-12-27 18:30       ` Geert Uytterhoeven
2011-12-28  0:22         ` Greg Ungerer
2011-12-28 10:09           ` Geert Uytterhoeven
2011-12-29  2:01             ` Greg Ungerer
2011-12-23  3:15 ` [PATCH 34/35] m68k: add ColdFire with MMU enabled support to the m68k mem init code gerg
2011-12-23  3:15 ` [PATCH 35/35] m68k: allow ColdFire 547x and 548x CPUs to be built with MMU enabled gerg
2011-12-26 19:32   ` Geert Uytterhoeven
2011-12-26 19:33     ` Geert Uytterhoeven
2011-12-28  1:35     ` Greg Ungerer
2011-12-29  4:52       ` Greg Ungerer [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-12-16 12:35 [PATCH 00/35 v3] m68k: ColdFire MMU support gerg
2011-12-16 12:36 ` [PATCH 35/35] m68k: allow ColdFire 547x and 548x CPUs to be built with MMU enabled gerg
2011-11-25  3:40 [PATCH 00/35 v2] m68k: ColdFire MMU support gerg
2011-11-25  3:41 ` [PATCH 35/35] m68k: allow ColdFire 547x and 548x CPUs to be built with MMU enabled gerg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EFBF201.7090201@snapgear.com \
    --to=gerg@snapgear.com \
    --cc=geert@linux-m68k.org \
    --cc=gerg@uclinux.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=uclinux-dev@uclinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.