On Fri, Apr 27, 2012 at 3:06 PM, Greg Ungerer <gerg@xxxxxxxxxxxx> wrote:
Hi Luis,
On 04/27/2012 09:08 AM, Luis Alves wrote:
This is the first of a pack of patches to support the original 68000 cpu.
This adds:
-MC68000 cpu as a choice in the config menu.
-Alcetronics M68K board (uses this cpu).
What I have changed:
-CONFIG_M68000 was being used by 68328 CPUs.
Renamed to CONFIG_M68XXX. Now the 68000 and all CPU32 CPUs use this flag
for common configurations.
-Modified all 68[VZ|EZ]328 to select CONFIG_MCPU32
-Modified CONFIG_MCPU32 to select CONFIG_M68XXX.
-Modified CONFIG_M68360 to select CONFIG_M68XXX (I think it was missing
some settings).
-Modified some files to use CONFIG_M68XXX instead of
CONFIG_M68000/CONFIG_MCPU32
Thinking on this a little more, you probably don't want most of
these changes. Certainly as Brad points out CPU32 and 68000 are
quite different, and they need to remain as separate config options.
I can see you will end up with a arch/m68k/platform/68000 with
some new code. Is any of that common with what is currently in
arch/m68k/platform/68328? I would expect we want to move the
common 68000 code into that platform/68000 directory. Longer
term we may want to do away with 68328/68EZ328/68VZ328 directories
all together. All the code may go in a platform/68000. (Still
thinking this one over though, but I am planning on doing away
with the separate 5xxx ColdFire directories real soon now).
I think this is a good idea. Do you suggest putting all together in the
same file and use #ifdef's for cpu specific options? I could do that.
Also, how to deal with board specific configuration files?
As I referred in the previous mail, the 68000 has zero on-chip peripherals
so the initial setup and configuration is a lot 'board-dependent'.
Regards,
Luis
Regards
Greg
---
arch/m68k/Kconfig.cpu | 29 ++++++++++++++++++-----------
arch/m68k/Kconfig.machine | 6 ++++++
arch/m68k/Makefile | 9 ++++++---
arch/m68k/include/asm/bitops.h | 2 +-
arch/m68k/include/asm/delay.h | 2 +-
arch/m68k/lib/memcpy.c | 4 ++--
arch/m68k/lib/memset.c | 2 +-
arch/m68k/lib/muldi3.c | 2 +-
8 files changed, 36 insertions(+), 20 deletions(-)
diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index 8a9c767..2abac0f 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -32,26 +32,33 @@ endchoice
if M68KCLASSIC
-config M68000
+
+config M68XXX
bool
select CPU_HAS_NO_BITFIELDS
select CPU_HAS_NO_MULDIV64
select GENERIC_CSUM
help
- The Freescale (was Motorola) 68000 CPU is the first generation
of
- the well known M68K family of processors. The CPU core as well
as
- being available as a stand alone CPU was also used in many
- System-On-Chip devices (eg 68328, 68302, etc). It does not
contain
- a paging MMU.
+ Common features for the first generation of M68K CPUs. It
+ includes the original MC68000 and CPU32 core.
+
config MCPU32
bool
- select CPU_HAS_NO_BITFIELDS
+ select M68XXX
help
The Freescale (was then Motorola) CPU32 is a CPU core that is
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 M68000
+ bool "MC68000"
+ select M68XXX
+ help
+ The Freescale (was Motorola) 68000 CPU is the first generation
of
+ the well known M68K family of processors. It does not contain
+ a paging MMU.
+
config M68020
bool "68020 support"
depends on MMU
@@ -96,28 +103,28 @@ config M68060
config M68328
bool "MC68328"
depends on !MMU
- select M68000
+ select MCPU32
help
Motorola 68328 processor support.
config M68EZ328
bool "MC68EZ328"
depends on !MMU
- select M68000
+ select MCPU32
help
Motorola 68EX328 processor support.
config M68VZ328
bool "MC68VZ328"
depends on !MMU
- select M68000
+ select MCPU32
help
Motorola 68VZ328 processor support.
config M68360
bool "MC68360"
depends on !MMU
- select MCPU32
+ select M68XXX
help
Motorola 68360 processor support.
diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine
index 7cdf6b0..25ce143 100644
--- a/arch/m68k/Kconfig.machine
+++ b/arch/m68k/Kconfig.machine
@@ -134,6 +134,12 @@ config SUN3
endif # M68KCLASSIC
+config ALCE68K
+ bool "Alcetronics M68K board support"
+ depends on M68000
+ help
+ Support for the Alcetronics M68K board.
+
config PILOT
bool
diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
index cf318f2..d1d7343 100644
--- a/arch/m68k/Makefile
+++ b/arch/m68k/Makefile
@@ -32,8 +32,9 @@ cpuflags-$(CONFIG_M68040) := -m68040
endif
cpuflags-$(CONFIG_M68030) :=
cpuflags-$(CONFIG_M68020) :=
-cpuflags-$(CONFIG_M68360) := -m68332
cpuflags-$(CONFIG_M68000) := -m68000
+cpuflags-$(CONFIG_MCPU32) := -m68000
+cpuflags-$(CONFIG_M68360) := -m68332
cpuflags-$(CONFIG_M54xx) := $(call cc-option,-mcpu=5475,-m5200)
cpuflags-$(CONFIG_M5407) := $(call cc-option,-mcpu=5407,-m5200)
cpuflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307)
@@ -88,8 +89,9 @@ endif
#
head-y := arch/m68k/kernel/head.o
head-$(CONFIG_SUN3) := arch/m68k/kernel/sun3-head.o
+head-$(CONFIG_M68000) := arch/m68k/platform/68000/head.o
head-$(CONFIG_M68360) := arch/m68k/platform/68360/head.o
-head-$(CONFIG_M68000) := arch/m68k/platform/68328/head.o
+head-$(CONFIG_MCPU32) := arch/m68k/platform/68328/head.o
head-$(CONFIG_COLDFIRE) :=
arch/m68k/platform/coldfire/head.o
core-y += arch/m68k/kernel/
arch/m68k/mm/
@@ -111,7 +113,8 @@ core-$(CONFIG_M68040) +=
arch/m68k/fpsp040/
core-$(CONFIG_M68060) += arch/m68k/ifpsp060/
core-$(CONFIG_M68KFPU_EMU) += arch/m68k/math-emu/
core-$(CONFIG_M68360) += arch/m68k/platform/68360/
-core-$(CONFIG_M68000) += arch/m68k/platform/68328/
+core-$(CONFIG_M68000) += arch/m68k/platform/68000/
+core-$(CONFIG_MCPU32) += arch/m68k/platform/68328/
core-$(CONFIG_M68EZ328) += arch/m68k/platform/68EZ328/
core-$(CONFIG_M68VZ328) += arch/m68k/platform/68VZ328/
core-$(CONFIG_COLDFIRE) += arch/m68k/platform/coldfire/
diff --git a/arch/m68k/include/asm/bitops.h
b/arch/m68k/include/asm/bitops.h
index c6baa91..93b944d 100644
--- a/arch/m68k/include/asm/bitops.h
+++ b/arch/m68k/include/asm/bitops.h
@@ -457,7 +457,7 @@ static inline unsigned long ffz(unsigned long word)
* generic functions for those.
*/
#if (defined(__mcfisaaplus__) || defined(__mcfisac__))&& \
- !defined(CONFIG_M68000)&& !defined(CONFIG_MCPU32)
+ !defined(CONFIG_M68XXX)
static inline int __ffs(int x)
{
__asm__ __volatile__ ("bitrev %0; ff1 %0"
diff --git a/arch/m68k/include/asm/delay.h b/arch/m68k/include/asm/delay.h
index 9c09bec..8e58c2a 100644
--- a/arch/m68k/include/asm/delay.h
+++ b/arch/m68k/include/asm/delay.h
@@ -43,7 +43,7 @@ static inline void __delay(unsigned long loops)
extern void __bad_udelay(void);
-#if defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)
+#if defined(CONFIG_M68XXX) || defined(CONFIG_COLDFIRE)
/*
* The simpler m68k and ColdFire processors do not have a 32*32->64
* multiply instruction. So we need to handle them a little differently.
diff --git a/arch/m68k/lib/memcpy.c b/arch/m68k/lib/memcpy.c
index 10ca051..c0a1ae8 100644
--- a/arch/m68k/lib/memcpy.c
+++ b/arch/m68k/lib/memcpy.c
@@ -22,7 +22,7 @@ void *memcpy(void *to, const void *from, size_t n)
from = cfrom;
n--;
}
-#if defined(CONFIG_M68000)
+#if defined(CONFIG_M68XXX)
if ((long)from& 1) {
char *cto = to;
const char *cfrom = from;
@@ -43,7 +43,7 @@ void *memcpy(void *to, const void *from, size_t n)
if (temp) {
long *lto = to;
const long *lfrom = from;
-#if defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)
+#if defined(CONFIG_M68XXX) || defined(CONFIG_COLDFIRE)
for (; temp; temp--)
*lto++ = *lfrom++;
#else
diff --git a/arch/m68k/lib/memset.c b/arch/m68k/lib/memset.c
index 8a7639f..6196f39 100644
--- a/arch/m68k/lib/memset.c
+++ b/arch/m68k/lib/memset.c
@@ -32,7 +32,7 @@ void *memset(void *s, int c, size_t count)
temp = count>> 2;
if (temp) {
long *ls = s;
-#if defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)
+#if defined(CONFIG_M68XXX) || defined(CONFIG_COLDFIRE)
for (; temp; temp--)
*ls++ = c;
#else
diff --git a/arch/m68k/lib/muldi3.c b/arch/m68k/lib/muldi3.c
index 79e928a..1cd9ba4 100644
--- a/arch/m68k/lib/muldi3.c
+++ b/arch/m68k/lib/muldi3.c
@@ -19,7 +19,7 @@ along with GNU CC; see the file COPYING. If not, write
to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#if defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)
+#if defined(CONFIG_M68XXX) || defined(CONFIG_COLDFIRE)
#define SI_TYPE_SIZE 32
#define __BITS4 (SI_TYPE_SIZE / 4)
--
------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: gerg@xxxxxxxxxxxx
SnapGear Group, McAfee PHONE: +61 7 3435 2888
8 Gardner Close, FAX: +61 7 3891 3630
Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html