This is a script and patch to merge the m68knommu arch into m68k.
The script was inspired by the script Sam Ravnborg used to merge the
includes from m68knommu. For those files common to both arches but
differing in content, the m68k version of the file is renamed to
<file>_mm.<ext> and the m68knommu version of the file is moved into the
corresponding m68k directory and renamed <file>_no.<ext> and a small
wrapper file <file>.<ext> is used to select between the two version. Files
that are common to both but don't differ are removed from the m68knommu
tree and files and directories that are unique to the m68knommu tree are
moved to the m68k tree. Finally, the arch/m68knommu tree is removed.
To select between the the versions of the files, the wrapper uses
#ifdef CONFIG_MMU
#include <file>_mm.<ext>
#else
#include <file>_no.<ext>
#endif
The patch modifies the toplevel Makefile so that ARCH=m68knommu still works
(by setting SRCARCH=m68k) and adds the m68knommu Kconfig and Makefile
to the m68k Kconfig and Makefile, using the definition of ARCH to select
which values to use.
Thus when building for either a m68k or an m68knommu target, one still
specifies either ARCH=m68k or ARCH=m68knommu and everything should
build EXACTLY as it did pre-merge. (I think).
Signed-off-by: Steven King <[email protected]>
-------------------------------------------------------------------------------
#!/bin/sh
mergefile() {
BASE=${1%.?}
EXT=${1#${BASE}}
git mv ${TARGET}/$1 ${TARGET}/${BASE}_mm${EXT}
git mv ${SOURCE}/$1 ${TARGET}/${BASE}_no${EXT}
cat <<-EOF > ${TARGET}/$1
#ifdef CONFIG_MMU
#include "${BASE}_mm${EXT}"
#else
#include "${BASE}_no${EXT}"
#endif
EOF
git add ${TARGET}/$1
}
mergedir() {
TARGET=arch/m68k/$1
SOURCE=arch/m68knommu/$1
files=${1}_MERGE_FILES
MERGE_FILES=${!files}
echo "merging files in $1"
for F in $MERGE_FILES ; do
mergefile $F
done
files=${1}_NOMERGE_FILES
NOMERGE_FILES=${!files}
echo "moving files in $1"
for F in $NOMERGE_FILES ; do
git mv ${SOURCE}/$F ${TARGET}/$F
done
files=${1}_REMOVE_FILES
REMOVE_FILES=${!files}
echo "removing common files in $1"
for F in $REMOVE_FILES ; do
git rm ${SOURCE}/$F
done
if [ -e ${SOURCE}/Makefile ]; then
git mv ${TARGET}/Makefile ${TARGET}/Makefile_mm
git mv ${SOURCE}/Makefile ${TARGET}/Makefile_no
cat <<-EOF > ${TARGET}/Makefile
ifdef CONFIG_MMU
include ${TARGET}/Makefile_mm
else
include ${TARGET}/Makefile_no
endif
EOF
git add ${TARGET}/Makefile
fi
}
configs_MERGE_FILES=""
configs_NOMERGE_FILES="m5208evb_defconfig \
m5272c3_defconfig \
m5307c3_defconfig \
m5249evb_defconfig \
m5275evb_defconfig \
m5407c3_defconfig"
configs_REMOVE_FILES=""
kernel_MERGE_FILES="asm-offsets.c \
dma.c entry.S \
m68k_ksyms.c \
module.c \
process.c \
ptrace.c \
setup.c \
signal.c \
sys_m68k.c \
time.c \
traps.c \
vmlinux.lds.S"
kernel_NOMERGE_FILES="init_task.c \
irq.c \
syscalltable.S"
kernel_REMOVE_FILES=""
lib_MERGE_FILES="checksum.c \
muldi3.c"
lib_NOMERGE_FILES="delay.c \
divsi3.S \
memcpy.c \
memset.c \
modsi3.S \
mulsi3.S \
udivsi3.S \
umodsi3.S"
lib_REMOVE_FILES="ashldi3.c \
ashrdi3.c \
lshrdi3.c"
mm_MERGE_FILES="fault.c \
init.c \
kmap.c \
memory.c"
mm_NOMERGE_FILES=""
mm_REMOVE_FILES=""
DIRS="configs kernel lib mm"
for dir in $DIRS ; do
mergedir $dir
done
echo "moving platform"
git mv arch/m68knommu/platform arch/m68k/
echo "removing remaining m68knommu dirs"
git rm -r arch/m68knommu
rm -r arch/m68knommu
exit 0
-------------------------------------------------------------------------------
diff --git a/Makefile b/Makefile
index 9425d1d..1de4c0f 100644
--- a/Makefile
+++ b/Makefile
@@ -205,13 +205,14 @@ ifeq ($(ARCH),sh64)
SRCARCH := sh
endif
-# Where to locate arch specific headers
-hdr-arch := $(SRCARCH)
-
+# Additional ARCH settings for m68k
ifeq ($(ARCH),m68knommu)
- hdr-arch := m68k
+ SRCARCH := m68k
endif
+# Where to locate arch specific headers
+hdr-arch := $(SRCARCH)
+
KCONFIG_CONFIG ?= .config
# SHELL used by kbuild
diff --git a/arch/m68k/Kconfig.debug b/arch/m68k/Kconfig.debug
index f53b6d5..cec668b 100644
--- a/arch/m68k/Kconfig.debug
+++ b/arch/m68k/Kconfig.debug
@@ -2,4 +2,37 @@ menu "Kernel hacking"
source "lib/Kconfig.debug"
+if ARCH = "m68knommu"
+
+config FULLDEBUG
+ bool "Full Symbolic/Source Debugging support"
+ help
+ Enable debugging symbols on kernel build.
+
+config HIGHPROFILE
+ bool "Use fast second timer for profiling"
+ depends on COLDFIRE
+ help
+ Use a fast secondary clock to produce profiling information.
+
+config BOOTPARAM
+ bool 'Compiled-in Kernel Boot Parameter'
+
+config BOOTPARAM_STRING
+ string 'Kernel Boot Parameter'
+ default 'console=ttyS0,19200'
+ depends on BOOTPARAM
+
+config NO_KERNEL_MSG
+ bool "Suppress Kernel BUG Messages"
+ help
+ Do not output any debug BUG messages within the kernel.
+
+config BDM_DISABLE
+ bool "Disable BDM signals"
+ depends on (EXPERIMENTAL && COLDFIRE)
+ help
+ Disable the ColdFire CPU's BDM signals.
+
+endif
endmenu
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 29dd848..7a27ca7 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -2,6 +2,8 @@
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#
+if ARCH != "m68knommu"
+
config M68K
bool
default y
@@ -64,6 +66,89 @@ config GENERIC_TIME
config ARCH_USES_GETTIMEOFFSET
def_bool y
+endif
+
+if ARCH = "m68knommu"
+
+config M68K
+ bool
+ default y
+ select HAVE_IDE
+
+config MMU
+ bool
+ default n
+
+config NO_DMA
+ bool
+ depends on !COLDFIRE
+ default y
+
+config FPU
+ bool
+ default n
+
+config ZONE_DMA
+ bool
+ default y
+
+config RWSEM_GENERIC_SPINLOCK
+ bool
+ default y
+
+config RWSEM_XCHGADD_ALGORITHM
+ bool
+ default n
+
+config ARCH_HAS_ILOG2_U32
+ bool
+ default n
+
+config ARCH_HAS_ILOG2_U64
+ bool
+ default n
+
+config GENERIC_FIND_NEXT_BIT
+ bool
+ default y
+
+config GENERIC_GPIO
+ bool
+ default n
+
+config GENERIC_HWEIGHT
+ bool
+ default y
+
+config GENERIC_HARDIRQS
+ bool
+ default y
+
+config GENERIC_CALIBRATE_DELAY
+ bool
+ default y
+
+config GENERIC_TIME
+ bool
+ default y
+
+config GENERIC_CMOS_UPDATE
+ bool
+ default y
+
+config TIME_LOW_RES
+ bool
+ default y
+
+config GENERIC_CLOCKEVENTS
+ bool
+ default n
+
+config NO_IOPORT
+ def_bool y
+
+endif
+
mainmenu "Linux/68k Kernel Configuration"
source "init/Kconfig"
@@ -72,6 +157,7 @@ source "kernel/Kconfig.freezer"
menu "Platform dependent setup"
+if ARCH != "m68knommu"
config EISA
bool
---help---
@@ -384,15 +470,638 @@ config NODES_SHIFT
int
default "3"
depends on !SINGLE_MEMORY_CHUNK
+endif
+
+
+if ARCH = "m68knommu"
+choice
+ prompt "CPU"
+ default M68EZ328
+
+config M68328
+ bool "MC68328"
+ help
+ Motorola 68328 processor support.
+
+config M68EZ328
+ bool "MC68EZ328"
+ help
+ Motorola 68EX328 processor support.
+
+config M68VZ328
+ bool "MC68VZ328"
+ help
+ Motorola 68VZ328 processor support.
+
+config M68360
+ bool "MC68360"
+ help
+ Motorola 68360 processor support.
+
+config M5206
+ bool "MCF5206"
+ help
+ Motorola ColdFire 5206 processor support.
+
+config M5206e
+ bool "MCF5206e"
+ help
+ Motorola ColdFire 5206e processor support.
+
+config M520x
+ bool "MCF520x"
+ select GENERIC_CLOCKEVENTS
+ help
+ Freescale Coldfire 5207/5208 processor support.
+
+config M523x
+ bool "MCF523x"
+ select GENERIC_CLOCKEVENTS
+ help
+ Freescale Coldfire 5230/1/2/4/5 processor support
+
+config M5249
+ bool "MCF5249"
+ help
+ Motorola ColdFire 5249 processor support.
+
+config M5271
+ bool "MCF5271"
+ help
+ Freescale (Motorola) ColdFire 5270/5271 processor support.
+
+config M5272
+ bool "MCF5272"
+ help
+ Motorola ColdFire 5272 processor support.
+
+config M5275
+ bool "MCF5275"
+ help
+ Freescale (Motorola) ColdFire 5274/5275 processor support.
+
+config M528x
+ bool "MCF528x"
+ select GENERIC_CLOCKEVENTS
+ help
+ Motorola ColdFire 5280/5282 processor support.
+
+config M5307
+ bool "MCF5307"
+ help
+ Motorola ColdFire 5307 processor support.
+
+config M532x
+ bool "MCF532x"
+ help
+ Freescale (Motorola) ColdFire 532x processor support.
+
+config M5407
+ bool "MCF5407"
+ help
+ Motorola ColdFire 5407 processor support.
+
+endchoice
+
+config M527x
+ bool
+ depends on (M5271 || M5275)
+ select GENERIC_CLOCKEVENTS
+ default y
+
+config COLDFIRE
+ bool
+ depends on (M5206 || M5206e || M520x || M523x || M5249 || M527x || M5272 || M528x || M5307 || M532x || M5407)
+ select GENERIC_GPIO
+ select ARCH_REQUIRE_GPIOLIB
+ default y
+
+config CLOCK_SET
+ bool "Enable setting the CPU clock frequency"
+ default n
+ help
+ On some CPU's you do not need to know what the core CPU clock
+ frequency is. On these you can disable clock setting. On some
+ traditional 68K parts, and on all ColdFire parts you need to set
+ the appropriate CPU clock frequency. On these devices many of the
+ onboard peripherals derive their timing from the master CPU clock
+ frequency.
+
+config CLOCK_FREQ
+ int "Set the core clock frequency"
+ default "66666666"
+ depends on CLOCK_SET
+ help
+ Define the CPU clock frequency in use. This is the core clock
+ frequency, it may or may not be the same as the external clock
+ crystal fitted to your board. Some processors have an internal
+ PLL and can have their frequency programmed at run time, others
+ use internal dividers. In general the kernel won't setup a PLL
+ if it is fitted (there are some exceptions). This value will be
+ specific to the exact CPU that you are using.
+
+config CLOCK_DIV
+ int "Set the core/bus clock divide ratio"
+ default "1"
+ depends on CLOCK_SET
+ help
+ On many SoC style CPUs the master CPU clock is also used to drive
+ on-chip peripherals. The clock that is distributed to these
+ peripherals is sometimes a fixed ratio of the master clock
+ frequency. If so then set this to the divider ratio of the
+ master clock to the peripheral clock. If not sure then select 1.
+
+config OLDMASK
+ bool "Old mask 5307 (1H55J) silicon"
+ depends on M5307
+ help
+ Build support for the older revision ColdFire 5307 silicon.
+ Specifically this is the 1H55J mask revision.
+
+comment "Platform"
+
+config PILOT3
+ bool "Pilot 1000/5000, PalmPilot Personal/Pro, or PalmIII support"
+ depends on M68328
+ help
+ Support for the Palm Pilot 1000/5000, Personal/Pro and PalmIII.
+
+config XCOPILOT_BUGS
+ bool "(X)Copilot support"
+ depends on PILOT3
+ help
+ Support the bugs of Xcopilot.
+
+config UC5272
+ bool 'Arcturus Networks uC5272 dimm board support'
+ depends on M5272
+ help
+ Support for the Arcturus Networks uC5272 dimm board.
+
+config UC5282
+ bool "Arcturus Networks uC5282 board support"
+ depends on M528x
+ help
+ Support for the Arcturus Networks uC5282 dimm board.
+
+config UCSIMM
+ bool "uCsimm module support"
+ depends on M68EZ328
+ help
+ Support for the Arcturus Networks uCsimm module.
+
+config UCDIMM
+ bool "uDsimm module support"
+ depends on M68VZ328
+ help
+ Support for the Arcturus Networks uDsimm module.
+
+config DRAGEN2
+ bool "DragenEngine II board support"
+ depends on M68VZ328
+ help
+ Support for the DragenEngine II board.
+
+config DIRECT_IO_ACCESS
+ bool "Allow user to access IO directly"
+ depends on (UCSIMM || UCDIMM || DRAGEN2)
+ help
+ Disable the CPU internal registers protection in user mode,
+ to allow a user application to read/write them.
+
+config INIT_LCD
+ bool "Initialize LCD"
+ depends on (UCSIMM || UCDIMM || DRAGEN2)
+ help
+ Initialize the LCD controller of the 68x328 processor.
+
+config MEMORY_RESERVE
+ int "Memory reservation (MiB)"
+ depends on (UCSIMM || UCDIMM)
+ help
+ Reserve certain memory regions on 68x328 based boards.
+
+config UCQUICC
+ bool "Lineo uCquicc board support"
+ depends on M68360
+ help
+ Support for the Lineo uCquicc board.
+
+config ARN5206
+ bool "Arnewsh 5206 board support"
+ depends on M5206
+ help
+ Support for the Arnewsh 5206 board.
+
+config M5206eC3
+ bool "Motorola M5206eC3 board support"
+ depends on M5206e
+ help
+ Support for the Motorola M5206eC3 board.
+
+config ELITE
+ bool "Motorola M5206eLITE board support"
+ depends on M5206e
+ help
+ Support for the Motorola M5206eLITE board.
+
+config M5208EVB
+ bool "Freescale M5208EVB board support"
+ depends on M520x
+ help
+ Support for the Freescale Coldfire M5208EVB.
+
+config M5235EVB
+ bool "Freescale M5235EVB support"
+ depends on M523x
+ help
+ Support for the Freescale M5235EVB board.
+
+config M5249C3
+ bool "Motorola M5249C3 board support"
+ depends on M5249
+ help
+ Support for the Motorola M5249C3 board.
+
+config M5271EVB
+ bool "Freescale (Motorola) M5271EVB board support"
+ depends on M5271
+ help
+ Support for the Freescale (Motorola) M5271EVB board.
+
+config M5275EVB
+ bool "Freescale (Motorola) M5275EVB board support"
+ depends on M5275
+ help
+ Support for the Freescale (Motorola) M5275EVB board.
+
+config M5272C3
+ bool "Motorola M5272C3 board support"
+ depends on M5272
+ help
+ Support for the Motorola M5272C3 board.
+
+config COBRA5272
+ bool "senTec COBRA5272 board support"
+ depends on M5272
+ help
+ Support for the senTec COBRA5272 board.
+
+config AVNET5282
+ bool "Avnet 5282 board support"
+ depends on M528x
+ help
+ Support for the Avnet 5282 board.
+
+config M5282EVB
+ bool "Motorola M5282EVB board support"
+ depends on M528x
+ help
+ Support for the Motorola M5282EVB board.
+
+config COBRA5282
+ bool "senTec COBRA5282 board support"
+ depends on M528x
+ help
+ Support for the senTec COBRA5282 board.
+
+config SOM5282EM
+ bool "EMAC.Inc SOM5282EM board support"
+ depends on M528x
+ help
+ Support for the EMAC.Inc SOM5282EM module.
+
+config WILDFIRE
+ bool "Intec Automation Inc. WildFire board support"
+ depends on M528x
+ help
+ Support for the Intec Automation Inc. WildFire.
+
+config WILDFIREMOD
+ bool "Intec Automation Inc. WildFire module support"
+ depends on M528x
+ help
+ Support for the Intec Automation Inc. WildFire module.
+
+config ARN5307
+ bool "Arnewsh 5307 board support"
+ depends on M5307
+ help
+ Support for the Arnewsh 5307 board.
+
+config M5307C3
+ bool "Motorola M5307C3 board support"
+ depends on M5307
+ help
+ Support for the Motorola M5307C3 board.
+
+config SECUREEDGEMP3
+ bool "SnapGear SecureEdge/MP3 platform support"
+ depends on M5307
+ help
+ Support for the SnapGear SecureEdge/MP3 platform.
+
+config M5329EVB
+ bool "Freescale (Motorola) M5329EVB board support"
+ depends on M532x
+ help
+ Support for the Freescale (Motorola) M5329EVB board.
+
+config COBRA5329
+ bool "senTec COBRA5329 board support"
+ depends on M532x
+ help
+ Support for the senTec COBRA5329 board.
+
+config M5407C3
+ bool "Motorola M5407C3 board support"
+ depends on M5407
+ help
+ Support for the Motorola M5407C3 board.
+
+config CLEOPATRA
+ bool "Feith CLEOPATRA board support"
+ depends on (M5307 || M5407)
+ help
+ Support for the Feith Cleopatra boards.
+
+config CANCam
+ bool "Feith CANCam board support"
+ depends on M5272
+ help
+ Support for the Feith CANCam board.
+
+config SCALES
+ bool "Feith SCALES board support"
+ depends on M5272
+ help
+ Support for the Feith SCALES board.
+
+config NETtel
+ bool "SecureEdge/NETtel board support"
+ depends on (M5206e || M5272 || M5307)
+ help
+ Support for the SnapGear NETtel/SecureEdge/SnapGear boards.
+
+config SNAPGEAR
+ bool "SnapGear router board support"
+ depends on NETtel
+ help
+ Special additional support for SnapGear router boards.
+
+config CPU16B
+ bool "Sneha Technologies S.L. Sarasvati board support"
+ depends on M5272
+ help
+ Support for the SNEHA CPU16B board.
+
+config MOD5272
+ bool "Netburner MOD-5272 board support"
+ depends on M5272
+ help
+ Support for the Netburner MOD-5272 board.
+
+config SAVANTrosie1
+ bool "Savant Rosie1 board support"
+ depends on M523x
+ help
+ Support for the Savant Rosie1 board.
+
+config ROMFS_FROM_ROM
+ bool "ROMFS image not RAM resident"
+ depends on (NETtel || SNAPGEAR)
+ help
+ The ROMfs filesystem will stay resident in the FLASH/ROM, not be
+ moved into RAM.
+
+config PILOT
+ bool
+ default y
+ depends on (PILOT3 || PILOT5)
+
+config ARNEWSH
+ bool
+ default y
+ depends on (ARN5206 || ARN5307)
+
+config FREESCALE
+ bool
+ default y
+ depends on (M5206eC3 || M5208EVB || M5235EVB || M5249C3 || M5271EVB || M5272C3 || M5275EVB || M5282EVB || M5307C3 || M5329EVB || M5407C3)
+
+config HW_FEITH
+ bool
+ default y
+ depends on (CLEOPATRA || CANCam || SCALES)
+
+config senTec
+ bool
+ default y
+ depends on (COBRA5272 || COBRA5282)
+
+config EMAC_INC
+ bool
+ default y
+ depends on (SOM5282EM)
+
+config SNEHA
+ bool
+ default y
+ depends on CPU16B
+
+config SAVANT
+ bool
+ default y
+ depends on SAVANTrosie1
+
+config AVNET
+ bool
+ default y
+ depends on (AVNET5282)
+
+config 4KSTACKS
+ bool "Use 4Kb for kernel stacks instead of 8Kb"
+ default y
+ help
+ If you say Y here the kernel will use a 4Kb stacksize for the
+ kernel stack attached to each process/thread. This facilitates
+ running more threads on a system and also reduces the pressure
+ on the VM subsystem for higher order allocations.
+
+config HZ
+ int
+ default 1000 if CLEOPATRA
+ default 100
+
+comment "RAM configuration"
+
+config RAMBASE
+ hex "Address of the base of RAM"
+ default "0"
+ help
+ Define the address that RAM starts at. On many platforms this is
+ 0, the base of the address space. And this is the default. Some
+ platforms choose to setup their RAM at other addresses within the
+ processor address space.
+
+config RAMSIZE
+ hex "Size of RAM (in bytes)"
+ default "0x400000"
+ help
+ Define the size of the system RAM. If you select 0 then the
+ kernel will try to probe the RAM size at runtime. This is not
+ supported on all CPU types.
+
+config VECTORBASE
+ hex "Address of the base of system vectors"
+ default "0"
+ help
+ Define the address of the system vectors. Commonly this is
+ put at the start of RAM, but it doesn't have to be. On ColdFire
+ platforms this address is programmed into the VBR register, thus
+ actually setting the address to use.
+
+config KERNELBASE
+ hex "Address of the base of kernel code"
+ default "0x400"
+ help
+ Typically on m68k systems the kernel will not start at the base
+ of RAM, but usually some small offset from it. Define the start
+ address of the kernel here. The most common setup will have the
+ processor vectors at the base of RAM and then the start of the
+ kernel. On some platforms some RAM is reserved for boot loaders
+ and the kernel starts after that. The 0x400 default was based on
+ a system with the RAM based at address 0, and leaving enough room
+ for the theoretical maximum number of 256 vectors.
+
+choice
+ prompt "RAM bus width"
+ default RAMAUTOBIT
+
+config RAMAUTOBIT
+ bool "AUTO"
+ help
+ Select the physical RAM data bus size. Not needed on most platforms,
+ so you can generally choose AUTO.
+
+config RAM8BIT
+ bool "8bit"
+ help
+ Configure RAM bus to be 8 bits wide.
+
+config RAM16BIT
+ bool "16bit"
+ help
+ Configure RAM bus to be 16 bits wide.
+
+config RAM32BIT
+ bool "32bit"
+ help
+ Configure RAM bus to be 32 bits wide.
+
+endchoice
+
+comment "ROM configuration"
+
+config ROM
+ bool "Specify ROM linker regions"
+ default n
+ help
+ Define a ROM region for the linker script. This creates a kernel
+ that can be stored in flash, with possibly the text, and data
+ regions being copied out to RAM at startup.
+
+config ROMBASE
+ hex "Address of the base of ROM device"
+ default "0"
+ depends on ROM
+ help
+ Define the address that the ROM region starts at. Some platforms
+ use this to set their chip select region accordingly for the boot
+ device.
+
+config ROMVEC
+ hex "Address of the base of the ROM vectors"
+ default "0"
+ depends on ROM
+ help
+ This is almost always the same as the base of the ROM. Since on all
+ 68000 type variants the vectors are at the base of the boot device
+ on system startup.
+
+config ROMVECSIZE
+ hex "Size of ROM vector region (in bytes)"
+ default "0x400"
+ depends on ROM
+ help
+ Define the size of the vector region in ROM. For most 68000
+ variants this would be 0x400 bytes in size. Set to 0 if you do
+ not want a vector region at the start of the ROM.
+
+config ROMSTART
+ hex "Address of the base of system image in ROM"
+ default "0x400"
+ depends on ROM
+ help
+ Define the start address of the system image in ROM. Commonly this
+ is strait after the ROM vectors.
+
+config ROMSIZE
+ hex "Size of the ROM device"
+ default "0x100000"
+ depends on ROM
+ help
+ Size of the ROM device. On some platforms this is used to setup
+ the chip select that controls the boot ROM device.
+
+choice
+ prompt "Kernel executes from"
+ ---help---
+ Choose the memory type that the kernel will be running in.
+
+config RAMKERNEL
+ bool "RAM"
+ help
+ The kernel will be resident in RAM when running.
+
+config ROMKERNEL
+ bool "ROM"
+ help
+ The kernel will be resident in FLASH/ROM when running. This is
+ often referred to as Execute-in-Place (XIP), since the kernel
+ code executes from the position it is stored in the FLASH/ROM.
+
+endchoice
+
+if COLDFIRE
+source "kernel/Kconfig.preempt"
+endif
+
+source "kernel/time/Kconfig"
+
+endif
source "mm/Kconfig"
endmenu
+
+if ARCH = "m68knommu"
+
+config ISA_DMA_API
+ bool
+ depends on !M5272
+ default y
+
+source "drivers/pcmcia/Kconfig"
+endif
+
menu "General setup"
source "fs/Kconfig.binfmt"
+if ARCH != "m68knommu"
+
config ZORRO
bool "Amiga Zorro (AutoConfig) bus support"
depends on AMIGA
@@ -458,12 +1167,29 @@ source "drivers/pci/Kconfig"
source "drivers/zorro/Kconfig"
+endif
+
endmenu
+if ARCH = "m68knommu"
+
+menu "Power management options"
+
+config PM
+ bool "Power Management support"
+ help
+ Support processor power management modes
+
+endmenu
+
+endif
+
source "net/Kconfig"
source "drivers/Kconfig"
+if ARCH != "m68knommu"
+
menu "Character devices"
config ATARI_MFPSER
@@ -618,6 +1344,8 @@ config SERIAL_CONSOLE
endmenu
+endif
+
source "fs/Kconfig"
source "arch/m68k/Kconfig.debug"
diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
index 570d85c..3910b46 100644
--- a/arch/m68k/Makefile
+++ b/arch/m68k/Makefile
@@ -1,3 +1,5 @@
+ifeq ($(ARCH),m68k)
+
#
# m68k/Makefile
#
@@ -120,3 +122,130 @@ archclean:
install:
sh $(srctree)/arch/m68k/install.sh $(KERNELRELEASE) vmlinux.gz System.map "$(INSTALL_PATH)"
+
+else
+
+#
+# m68knommu Makefile
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License. See the file "COPYING" in the main directory of this archive
+# for more details.
+#
+# (C) Copyright 2002, Greg Ungerer <[email protected]>
+#
+
+KBUILD_DEFCONFIG := m5208evb_defconfig
+
+platform-$(CONFIG_M68328) := 68328
+platform-$(CONFIG_M68EZ328) := 68EZ328
+platform-$(CONFIG_M68VZ328) := 68VZ328
+platform-$(CONFIG_M68360) := 68360
+platform-$(CONFIG_M5206) := 5206
+platform-$(CONFIG_M5206e) := 5206e
+platform-$(CONFIG_M520x) := 520x
+platform-$(CONFIG_M523x) := 523x
+platform-$(CONFIG_M5249) := 5249
+platform-$(CONFIG_M527x) := 527x
+platform-$(CONFIG_M5272) := 5272
+platform-$(CONFIG_M528x) := 528x
+platform-$(CONFIG_M5307) := 5307
+platform-$(CONFIG_M532x) := 532x
+platform-$(CONFIG_M5407) := 5407
+PLATFORM := $(platform-y)
+
+board-$(CONFIG_PILOT) := pilot
+board-$(CONFIG_UC5272) := UC5272
+board-$(CONFIG_UC5282) := UC5282
+board-$(CONFIG_UCSIMM) := ucsimm
+board-$(CONFIG_UCDIMM) := ucdimm
+board-$(CONFIG_UCQUICC) := uCquicc
+board-$(CONFIG_DRAGEN2) := de2
+board-$(CONFIG_ARNEWSH) := ARNEWSH
+board-$(CONFIG_FREESCALE) := FREESCALE
+board-$(CONFIG_M5235EVB) := M5235EVB
+board-$(CONFIG_M5271EVB) := M5271EVB
+board-$(CONFIG_M5275EVB) := M5275EVB
+board-$(CONFIG_M5282EVB) := M5282EVB
+board-$(CONFIG_ELITE) := eLITE
+board-$(CONFIG_NETtel) := NETtel
+board-$(CONFIG_SECUREEDGEMP3) := MP3
+board-$(CONFIG_CLEOPATRA) := CLEOPATRA
+board-$(CONFIG_senTec) := senTec
+board-$(CONFIG_SNEHA) := SNEHA
+board-$(CONFIG_M5208EVB) := M5208EVB
+board-$(CONFIG_MOD5272) := MOD5272
+board-$(CONFIG_AVNET) := AVNET
+board-$(CONFIG_SAVANT) := SAVANT
+BOARD := $(board-y)
+
+model-$(CONFIG_RAMKERNEL) := ram
+model-$(CONFIG_ROMKERNEL) := rom
+MODEL := $(model-y)
+
+#
+# Some code support is grouped together for a common cpu-subclass (for
+# example all ColdFire cpu's are very similar). Determine the sub-class
+# for the selected cpu. ONLY need to define this for the non-base member
+# of the family.
+#
+cpuclass-$(CONFIG_M5206) := coldfire
+cpuclass-$(CONFIG_M5206e) := coldfire
+cpuclass-$(CONFIG_M520x) := coldfire
+cpuclass-$(CONFIG_M523x) := coldfire
+cpuclass-$(CONFIG_M5249) := coldfire
+cpuclass-$(CONFIG_M527x) := coldfire
+cpuclass-$(CONFIG_M5272) := coldfire
+cpuclass-$(CONFIG_M528x) := coldfire
+cpuclass-$(CONFIG_M5307) := coldfire
+cpuclass-$(CONFIG_M532x) := coldfire
+cpuclass-$(CONFIG_M5407) := coldfire
+cpuclass-$(CONFIG_M68328) := 68328
+cpuclass-$(CONFIG_M68EZ328) := 68328
+cpuclass-$(CONFIG_M68VZ328) := 68328
+cpuclass-$(CONFIG_M68360) := 68360
+CPUCLASS := $(cpuclass-y)
+
+ifneq ($(CPUCLASS),$(PLATFORM))
+CLASSDIR := arch/m68k/platform/$(cpuclass-y)/
+endif
+
+export PLATFORM BOARD MODEL CPUCLASS
+
+#
+# Some CFLAG additions based on specific CPU type.
+#
+cflags-$(CONFIG_M5206) := $(call cc-option,-mcpu=5206,-m5200)
+cflags-$(CONFIG_M5206e) := $(call cc-option,-m5206e,-m5200)
+cflags-$(CONFIG_M520x) := $(call cc-option,-mcpu=5208,-m5200)
+cflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307)
+cflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200)
+cflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307)
+cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5271,-m5200)
+cflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307)
+cflags-$(CONFIG_M528x) := $(call cc-option,-m528x,-m5307)
+cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200)
+cflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307)
+cflags-$(CONFIG_M5407) := $(call cc-option,-m5407,-m5200)
+cflags-$(CONFIG_M68328) := -m68000
+cflags-$(CONFIG_M68EZ328) := -m68000
+cflags-$(CONFIG_M68VZ328) := -m68000
+cflags-$(CONFIG_M68360) := -m68332
+
+KBUILD_AFLAGS += $(cflags-y)
+
+KBUILD_CFLAGS += $(cflags-y)
+KBUILD_CFLAGS += -D__linux__
+KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
+
+head-y := arch/m68k/platform/$(cpuclass-y)/head.o
+
+core-y += arch/m68k/kernel/ \
+ arch/m68k/mm/ \
+ $(CLASSDIR) \
+ arch/m68k/platform/$(PLATFORM)/
+libs-y += arch/m68k/lib/
+
+archclean:
+
+endif
--
Steven King -- sfking at fdwdc dot com
On Sunday 18 October 2009 04:55:40 Steven King wrote:
> This is a script and patch to merge the m68knommu arch into m68k.
Ping.
>
> The script was inspired by the script Sam Ravnborg used to merge the
> includes from m68knommu. For those files common to both arches but
> differing in content, the m68k version of the file is renamed to
> <file>_mm.<ext> and the m68knommu version of the file is moved into the
> corresponding m68k directory and renamed <file>_no.<ext> and a small
> wrapper file <file>.<ext> is used to select between the two version.
> Files that are common to both but don't differ are removed from the
> m68knommu tree and files and directories that are unique to the
> m68knommu tree are moved to the m68k tree. Finally, the arch/m68knommu
> tree is removed.
>
> To select between the the versions of the files, the wrapper uses
>
> #ifdef CONFIG_MMU
> #include <file>_mm.<ext>
> #else
> #include <file>_no.<ext>
> #endif
>
> The patch modifies the toplevel Makefile so that ARCH=m68knommu still
> works (by setting SRCARCH=m68k) and adds the m68knommu Kconfig and
> Makefile to the m68k Kconfig and Makefile, using the definition of ARCH
> to select which values to use.
>
> Thus when building for either a m68k or an m68knommu target, one still
> specifies either ARCH=m68k or ARCH=m68knommu and everything should
> build EXACTLY as it did pre-merge. (I think).
>
>
> Signed-off-by: Steven King <[email protected]>
>
> ------------------------------------------------------------------------
>-------
>
> #!/bin/sh
>
>
> mergefile() {
> BASE=${1%.?}
> EXT=${1#${BASE}}
> git mv ${TARGET}/$1 ${TARGET}/${BASE}_mm${EXT}
> git mv ${SOURCE}/$1 ${TARGET}/${BASE}_no${EXT}
> cat <<-EOF > ${TARGET}/$1
> #ifdef CONFIG_MMU
> #include "${BASE}_mm${EXT}"
> #else
> #include "${BASE}_no${EXT}"
> #endif
> EOF
> git add ${TARGET}/$1
> }
>
> mergedir() {
> TARGET=arch/m68k/$1
> SOURCE=arch/m68knommu/$1
> files=${1}_MERGE_FILES
> MERGE_FILES=${!files}
>
> echo "merging files in $1"
> for F in $MERGE_FILES ; do
> mergefile $F
> done
>
> files=${1}_NOMERGE_FILES
> NOMERGE_FILES=${!files}
>
> echo "moving files in $1"
> for F in $NOMERGE_FILES ; do
> git mv ${SOURCE}/$F ${TARGET}/$F
> done
>
> files=${1}_REMOVE_FILES
> REMOVE_FILES=${!files}
>
> echo "removing common files in $1"
> for F in $REMOVE_FILES ; do
> git rm ${SOURCE}/$F
> done
>
> if [ -e ${SOURCE}/Makefile ]; then
> git mv ${TARGET}/Makefile ${TARGET}/Makefile_mm
> git mv ${SOURCE}/Makefile ${TARGET}/Makefile_no
> cat <<-EOF > ${TARGET}/Makefile
> ifdef CONFIG_MMU
> include ${TARGET}/Makefile_mm
> else
> include ${TARGET}/Makefile_no
> endif
> EOF
> git add ${TARGET}/Makefile
> fi
> }
>
> configs_MERGE_FILES=""
> configs_NOMERGE_FILES="m5208evb_defconfig \
> m5272c3_defconfig \
> m5307c3_defconfig \
> m5249evb_defconfig \
> m5275evb_defconfig \
> m5407c3_defconfig"
> configs_REMOVE_FILES=""
> kernel_MERGE_FILES="asm-offsets.c \
> dma.c entry.S \
> m68k_ksyms.c \
> module.c \
> process.c \
> ptrace.c \
> setup.c \
> signal.c \
> sys_m68k.c \
> time.c \
> traps.c \
> vmlinux.lds.S"
> kernel_NOMERGE_FILES="init_task.c \
> irq.c \
> syscalltable.S"
> kernel_REMOVE_FILES=""
> lib_MERGE_FILES="checksum.c \
> muldi3.c"
> lib_NOMERGE_FILES="delay.c \
> divsi3.S \
> memcpy.c \
> memset.c \
> modsi3.S \
> mulsi3.S \
> udivsi3.S \
> umodsi3.S"
> lib_REMOVE_FILES="ashldi3.c \
> ashrdi3.c \
> lshrdi3.c"
> mm_MERGE_FILES="fault.c \
> init.c \
> kmap.c \
> memory.c"
> mm_NOMERGE_FILES=""
> mm_REMOVE_FILES=""
>
> DIRS="configs kernel lib mm"
>
> for dir in $DIRS ; do
> mergedir $dir
> done
> echo "moving platform"
> git mv arch/m68knommu/platform arch/m68k/
> echo "removing remaining m68knommu dirs"
> git rm -r arch/m68knommu
> rm -r arch/m68knommu
> exit 0
>
> ------------------------------------------------------------------------
>-------
>
> diff --git a/Makefile b/Makefile
> index 9425d1d..1de4c0f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -205,13 +205,14 @@ ifeq ($(ARCH),sh64)
> SRCARCH := sh
> endif
>
> -# Where to locate arch specific headers
> -hdr-arch := $(SRCARCH)
> -
> +# Additional ARCH settings for m68k
> ifeq ($(ARCH),m68knommu)
> - hdr-arch := m68k
> + SRCARCH := m68k
> endif
>
> +# Where to locate arch specific headers
> +hdr-arch := $(SRCARCH)
> +
> KCONFIG_CONFIG ?= .config
>
> # SHELL used by kbuild
> diff --git a/arch/m68k/Kconfig.debug b/arch/m68k/Kconfig.debug
> index f53b6d5..cec668b 100644
> --- a/arch/m68k/Kconfig.debug
> +++ b/arch/m68k/Kconfig.debug
> @@ -2,4 +2,37 @@ menu "Kernel hacking"
>
> source "lib/Kconfig.debug"
>
> +if ARCH = "m68knommu"
> +
> +config FULLDEBUG
> + bool "Full Symbolic/Source Debugging support"
> + help
> + Enable debugging symbols on kernel build.
> +
> +config HIGHPROFILE
> + bool "Use fast second timer for profiling"
> + depends on COLDFIRE
> + help
> + Use a fast secondary clock to produce profiling information.
> +
> +config BOOTPARAM
> + bool 'Compiled-in Kernel Boot Parameter'
> +
> +config BOOTPARAM_STRING
> + string 'Kernel Boot Parameter'
> + default 'console=ttyS0,19200'
> + depends on BOOTPARAM
> +
> +config NO_KERNEL_MSG
> + bool "Suppress Kernel BUG Messages"
> + help
> + Do not output any debug BUG messages within the kernel.
> +
> +config BDM_DISABLE
> + bool "Disable BDM signals"
> + depends on (EXPERIMENTAL && COLDFIRE)
> + help
> + Disable the ColdFire CPU's BDM signals.
> +
> +endif
> endmenu
> diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
> index 29dd848..7a27ca7 100644
> --- a/arch/m68k/Kconfig
> +++ b/arch/m68k/Kconfig
> @@ -2,6 +2,8 @@
> # For a description of the syntax of this configuration file,
> # see Documentation/kbuild/kconfig-language.txt.
> #
> +if ARCH != "m68knommu"
> +
> config M68K
> bool
> default y
> @@ -64,6 +66,89 @@ config GENERIC_TIME
> config ARCH_USES_GETTIMEOFFSET
> def_bool y
>
> +endif
> +
> +if ARCH = "m68knommu"
> +
> +config M68K
> + bool
> + default y
> + select HAVE_IDE
> +
> +config MMU
> + bool
> + default n
> +
> +config NO_DMA
> + bool
> + depends on !COLDFIRE
> + default y
> +
> +config FPU
> + bool
> + default n
> +
> +config ZONE_DMA
> + bool
> + default y
> +
> +config RWSEM_GENERIC_SPINLOCK
> + bool
> + default y
> +
> +config RWSEM_XCHGADD_ALGORITHM
> + bool
> + default n
> +
> +config ARCH_HAS_ILOG2_U32
> + bool
> + default n
> +
> +config ARCH_HAS_ILOG2_U64
> + bool
> + default n
> +
> +config GENERIC_FIND_NEXT_BIT
> + bool
> + default y
> +
> +config GENERIC_GPIO
> + bool
> + default n
> +
> +config GENERIC_HWEIGHT
> + bool
> + default y
> +
> +config GENERIC_HARDIRQS
> + bool
> + default y
> +
> +config GENERIC_CALIBRATE_DELAY
> + bool
> + default y
> +
> +config GENERIC_TIME
> + bool
> + default y
> +
> +config GENERIC_CMOS_UPDATE
> + bool
> + default y
> +
> +config TIME_LOW_RES
> + bool
> + default y
> +
> +config GENERIC_CLOCKEVENTS
> + bool
> + default n
> +
> +config NO_IOPORT
> + def_bool y
> +
> +endif
> +
> mainmenu "Linux/68k Kernel Configuration"
>
> source "init/Kconfig"
> @@ -72,6 +157,7 @@ source "kernel/Kconfig.freezer"
>
> menu "Platform dependent setup"
>
> +if ARCH != "m68knommu"
> config EISA
> bool
> ---help---
> @@ -384,15 +470,638 @@ config NODES_SHIFT
> int
> default "3"
> depends on !SINGLE_MEMORY_CHUNK
> +endif
> +
> +
> +if ARCH = "m68knommu"
> +choice
> + prompt "CPU"
> + default M68EZ328
> +
> +config M68328
> + bool "MC68328"
> + help
> + Motorola 68328 processor support.
> +
> +config M68EZ328
> + bool "MC68EZ328"
> + help
> + Motorola 68EX328 processor support.
> +
> +config M68VZ328
> + bool "MC68VZ328"
> + help
> + Motorola 68VZ328 processor support.
> +
> +config M68360
> + bool "MC68360"
> + help
> + Motorola 68360 processor support.
> +
> +config M5206
> + bool "MCF5206"
> + help
> + Motorola ColdFire 5206 processor support.
> +
> +config M5206e
> + bool "MCF5206e"
> + help
> + Motorola ColdFire 5206e processor support.
> +
> +config M520x
> + bool "MCF520x"
> + select GENERIC_CLOCKEVENTS
> + help
> + Freescale Coldfire 5207/5208 processor support.
> +
> +config M523x
> + bool "MCF523x"
> + select GENERIC_CLOCKEVENTS
> + help
> + Freescale Coldfire 5230/1/2/4/5 processor support
> +
> +config M5249
> + bool "MCF5249"
> + help
> + Motorola ColdFire 5249 processor support.
> +
> +config M5271
> + bool "MCF5271"
> + help
> + Freescale (Motorola) ColdFire 5270/5271 processor support.
> +
> +config M5272
> + bool "MCF5272"
> + help
> + Motorola ColdFire 5272 processor support.
> +
> +config M5275
> + bool "MCF5275"
> + help
> + Freescale (Motorola) ColdFire 5274/5275 processor support.
> +
> +config M528x
> + bool "MCF528x"
> + select GENERIC_CLOCKEVENTS
> + help
> + Motorola ColdFire 5280/5282 processor support.
> +
> +config M5307
> + bool "MCF5307"
> + help
> + Motorola ColdFire 5307 processor support.
> +
> +config M532x
> + bool "MCF532x"
> + help
> + Freescale (Motorola) ColdFire 532x processor support.
> +
> +config M5407
> + bool "MCF5407"
> + help
> + Motorola ColdFire 5407 processor support.
> +
> +endchoice
> +
> +config M527x
> + bool
> + depends on (M5271 || M5275)
> + select GENERIC_CLOCKEVENTS
> + default y
> +
> +config COLDFIRE
> + bool
> + depends on (M5206 || M5206e || M520x || M523x || M5249 || M527x ||
> M5272 || M528x || M5307 || M532x || M5407) + select GENERIC_GPIO
> + select ARCH_REQUIRE_GPIOLIB
> + default y
> +
> +config CLOCK_SET
> + bool "Enable setting the CPU clock frequency"
> + default n
> + help
> + On some CPU's you do not need to know what the core CPU clock
> + frequency is. On these you can disable clock setting. On some
> + traditional 68K parts, and on all ColdFire parts you need to set
> + the appropriate CPU clock frequency. On these devices many of the
> + onboard peripherals derive their timing from the master CPU clock
> + frequency.
> +
> +config CLOCK_FREQ
> + int "Set the core clock frequency"
> + default "66666666"
> + depends on CLOCK_SET
> + help
> + Define the CPU clock frequency in use. This is the core clock
> + frequency, it may or may not be the same as the external clock
> + crystal fitted to your board. Some processors have an internal
> + PLL and can have their frequency programmed at run time, others
> + use internal dividers. In general the kernel won't setup a PLL
> + if it is fitted (there are some exceptions). This value will be
> + specific to the exact CPU that you are using.
> +
> +config CLOCK_DIV
> + int "Set the core/bus clock divide ratio"
> + default "1"
> + depends on CLOCK_SET
> + help
> + On many SoC style CPUs the master CPU clock is also used to drive
> + on-chip peripherals. The clock that is distributed to these
> + peripherals is sometimes a fixed ratio of the master clock
> + frequency. If so then set this to the divider ratio of the
> + master clock to the peripheral clock. If not sure then select 1.
> +
> +config OLDMASK
> + bool "Old mask 5307 (1H55J) silicon"
> + depends on M5307
> + help
> + Build support for the older revision ColdFire 5307 silicon.
> + Specifically this is the 1H55J mask revision.
> +
> +comment "Platform"
> +
> +config PILOT3
> + bool "Pilot 1000/5000, PalmPilot Personal/Pro, or PalmIII support"
> + depends on M68328
> + help
> + Support for the Palm Pilot 1000/5000, Personal/Pro and PalmIII.
> +
> +config XCOPILOT_BUGS
> + bool "(X)Copilot support"
> + depends on PILOT3
> + help
> + Support the bugs of Xcopilot.
> +
> +config UC5272
> + bool 'Arcturus Networks uC5272 dimm board support'
> + depends on M5272
> + help
> + Support for the Arcturus Networks uC5272 dimm board.
> +
> +config UC5282
> + bool "Arcturus Networks uC5282 board support"
> + depends on M528x
> + help
> + Support for the Arcturus Networks uC5282 dimm board.
> +
> +config UCSIMM
> + bool "uCsimm module support"
> + depends on M68EZ328
> + help
> + Support for the Arcturus Networks uCsimm module.
> +
> +config UCDIMM
> + bool "uDsimm module support"
> + depends on M68VZ328
> + help
> + Support for the Arcturus Networks uDsimm module.
> +
> +config DRAGEN2
> + bool "DragenEngine II board support"
> + depends on M68VZ328
> + help
> + Support for the DragenEngine II board.
> +
> +config DIRECT_IO_ACCESS
> + bool "Allow user to access IO directly"
> + depends on (UCSIMM || UCDIMM || DRAGEN2)
> + help
> + Disable the CPU internal registers protection in user mode,
> + to allow a user application to read/write them.
> +
> +config INIT_LCD
> + bool "Initialize LCD"
> + depends on (UCSIMM || UCDIMM || DRAGEN2)
> + help
> + Initialize the LCD controller of the 68x328 processor.
> +
> +config MEMORY_RESERVE
> + int "Memory reservation (MiB)"
> + depends on (UCSIMM || UCDIMM)
> + help
> + Reserve certain memory regions on 68x328 based boards.
> +
> +config UCQUICC
> + bool "Lineo uCquicc board support"
> + depends on M68360
> + help
> + Support for the Lineo uCquicc board.
> +
> +config ARN5206
> + bool "Arnewsh 5206 board support"
> + depends on M5206
> + help
> + Support for the Arnewsh 5206 board.
> +
> +config M5206eC3
> + bool "Motorola M5206eC3 board support"
> + depends on M5206e
> + help
> + Support for the Motorola M5206eC3 board.
> +
> +config ELITE
> + bool "Motorola M5206eLITE board support"
> + depends on M5206e
> + help
> + Support for the Motorola M5206eLITE board.
> +
> +config M5208EVB
> + bool "Freescale M5208EVB board support"
> + depends on M520x
> + help
> + Support for the Freescale Coldfire M5208EVB.
> +
> +config M5235EVB
> + bool "Freescale M5235EVB support"
> + depends on M523x
> + help
> + Support for the Freescale M5235EVB board.
> +
> +config M5249C3
> + bool "Motorola M5249C3 board support"
> + depends on M5249
> + help
> + Support for the Motorola M5249C3 board.
> +
> +config M5271EVB
> + bool "Freescale (Motorola) M5271EVB board support"
> + depends on M5271
> + help
> + Support for the Freescale (Motorola) M5271EVB board.
> +
> +config M5275EVB
> + bool "Freescale (Motorola) M5275EVB board support"
> + depends on M5275
> + help
> + Support for the Freescale (Motorola) M5275EVB board.
> +
> +config M5272C3
> + bool "Motorola M5272C3 board support"
> + depends on M5272
> + help
> + Support for the Motorola M5272C3 board.
> +
> +config COBRA5272
> + bool "senTec COBRA5272 board support"
> + depends on M5272
> + help
> + Support for the senTec COBRA5272 board.
> +
> +config AVNET5282
> + bool "Avnet 5282 board support"
> + depends on M528x
> + help
> + Support for the Avnet 5282 board.
> +
> +config M5282EVB
> + bool "Motorola M5282EVB board support"
> + depends on M528x
> + help
> + Support for the Motorola M5282EVB board.
> +
> +config COBRA5282
> + bool "senTec COBRA5282 board support"
> + depends on M528x
> + help
> + Support for the senTec COBRA5282 board.
> +
> +config SOM5282EM
> + bool "EMAC.Inc SOM5282EM board support"
> + depends on M528x
> + help
> + Support for the EMAC.Inc SOM5282EM module.
> +
> +config WILDFIRE
> + bool "Intec Automation Inc. WildFire board support"
> + depends on M528x
> + help
> + Support for the Intec Automation Inc. WildFire.
> +
> +config WILDFIREMOD
> + bool "Intec Automation Inc. WildFire module support"
> + depends on M528x
> + help
> + Support for the Intec Automation Inc. WildFire module.
> +
> +config ARN5307
> + bool "Arnewsh 5307 board support"
> + depends on M5307
> + help
> + Support for the Arnewsh 5307 board.
> +
> +config M5307C3
> + bool "Motorola M5307C3 board support"
> + depends on M5307
> + help
> + Support for the Motorola M5307C3 board.
> +
> +config SECUREEDGEMP3
> + bool "SnapGear SecureEdge/MP3 platform support"
> + depends on M5307
> + help
> + Support for the SnapGear SecureEdge/MP3 platform.
> +
> +config M5329EVB
> + bool "Freescale (Motorola) M5329EVB board support"
> + depends on M532x
> + help
> + Support for the Freescale (Motorola) M5329EVB board.
> +
> +config COBRA5329
> + bool "senTec COBRA5329 board support"
> + depends on M532x
> + help
> + Support for the senTec COBRA5329 board.
> +
> +config M5407C3
> + bool "Motorola M5407C3 board support"
> + depends on M5407
> + help
> + Support for the Motorola M5407C3 board.
> +
> +config CLEOPATRA
> + bool "Feith CLEOPATRA board support"
> + depends on (M5307 || M5407)
> + help
> + Support for the Feith Cleopatra boards.
> +
> +config CANCam
> + bool "Feith CANCam board support"
> + depends on M5272
> + help
> + Support for the Feith CANCam board.
> +
> +config SCALES
> + bool "Feith SCALES board support"
> + depends on M5272
> + help
> + Support for the Feith SCALES board.
> +
> +config NETtel
> + bool "SecureEdge/NETtel board support"
> + depends on (M5206e || M5272 || M5307)
> + help
> + Support for the SnapGear NETtel/SecureEdge/SnapGear boards.
> +
> +config SNAPGEAR
> + bool "SnapGear router board support"
> + depends on NETtel
> + help
> + Special additional support for SnapGear router boards.
> +
> +config CPU16B
> + bool "Sneha Technologies S.L. Sarasvati board support"
> + depends on M5272
> + help
> + Support for the SNEHA CPU16B board.
> +
> +config MOD5272
> + bool "Netburner MOD-5272 board support"
> + depends on M5272
> + help
> + Support for the Netburner MOD-5272 board.
> +
> +config SAVANTrosie1
> + bool "Savant Rosie1 board support"
> + depends on M523x
> + help
> + Support for the Savant Rosie1 board.
> +
> +config ROMFS_FROM_ROM
> + bool "ROMFS image not RAM resident"
> + depends on (NETtel || SNAPGEAR)
> + help
> + The ROMfs filesystem will stay resident in the FLASH/ROM, not be
> + moved into RAM.
> +
> +config PILOT
> + bool
> + default y
> + depends on (PILOT3 || PILOT5)
> +
> +config ARNEWSH
> + bool
> + default y
> + depends on (ARN5206 || ARN5307)
> +
> +config FREESCALE
> + bool
> + default y
> + depends on (M5206eC3 || M5208EVB || M5235EVB || M5249C3 || M5271EVB ||
> M5272C3 || M5275EVB || M5282EVB || M5307C3 || M5329EVB || M5407C3) +
> +config HW_FEITH
> + bool
> + default y
> + depends on (CLEOPATRA || CANCam || SCALES)
> +
> +config senTec
> + bool
> + default y
> + depends on (COBRA5272 || COBRA5282)
> +
> +config EMAC_INC
> + bool
> + default y
> + depends on (SOM5282EM)
> +
> +config SNEHA
> + bool
> + default y
> + depends on CPU16B
> +
> +config SAVANT
> + bool
> + default y
> + depends on SAVANTrosie1
> +
> +config AVNET
> + bool
> + default y
> + depends on (AVNET5282)
> +
> +config 4KSTACKS
> + bool "Use 4Kb for kernel stacks instead of 8Kb"
> + default y
> + help
> + If you say Y here the kernel will use a 4Kb stacksize for the
> + kernel stack attached to each process/thread. This facilitates
> + running more threads on a system and also reduces the pressure
> + on the VM subsystem for higher order allocations.
> +
> +config HZ
> + int
> + default 1000 if CLEOPATRA
> + default 100
> +
> +comment "RAM configuration"
> +
> +config RAMBASE
> + hex "Address of the base of RAM"
> + default "0"
> + help
> + Define the address that RAM starts at. On many platforms this is
> + 0, the base of the address space. And this is the default. Some
> + platforms choose to setup their RAM at other addresses within the
> + processor address space.
> +
> +config RAMSIZE
> + hex "Size of RAM (in bytes)"
> + default "0x400000"
> + help
> + Define the size of the system RAM. If you select 0 then the
> + kernel will try to probe the RAM size at runtime. This is not
> + supported on all CPU types.
> +
> +config VECTORBASE
> + hex "Address of the base of system vectors"
> + default "0"
> + help
> + Define the address of the system vectors. Commonly this is
> + put at the start of RAM, but it doesn't have to be. On ColdFire
> + platforms this address is programmed into the VBR register, thus
> + actually setting the address to use.
> +
> +config KERNELBASE
> + hex "Address of the base of kernel code"
> + default "0x400"
> + help
> + Typically on m68k systems the kernel will not start at the base
> + of RAM, but usually some small offset from it. Define the start
> + address of the kernel here. The most common setup will have the
> + processor vectors at the base of RAM and then the start of the
> + kernel. On some platforms some RAM is reserved for boot loaders
> + and the kernel starts after that. The 0x400 default was based on
> + a system with the RAM based at address 0, and leaving enough room
> + for the theoretical maximum number of 256 vectors.
> +
> +choice
> + prompt "RAM bus width"
> + default RAMAUTOBIT
> +
> +config RAMAUTOBIT
> + bool "AUTO"
> + help
> + Select the physical RAM data bus size. Not needed on most platforms,
> + so you can generally choose AUTO.
> +
> +config RAM8BIT
> + bool "8bit"
> + help
> + Configure RAM bus to be 8 bits wide.
> +
> +config RAM16BIT
> + bool "16bit"
> + help
> + Configure RAM bus to be 16 bits wide.
> +
> +config RAM32BIT
> + bool "32bit"
> + help
> + Configure RAM bus to be 32 bits wide.
> +
> +endchoice
> +
> +comment "ROM configuration"
> +
> +config ROM
> + bool "Specify ROM linker regions"
> + default n
> + help
> + Define a ROM region for the linker script. This creates a kernel
> + that can be stored in flash, with possibly the text, and data
> + regions being copied out to RAM at startup.
> +
> +config ROMBASE
> + hex "Address of the base of ROM device"
> + default "0"
> + depends on ROM
> + help
> + Define the address that the ROM region starts at. Some platforms
> + use this to set their chip select region accordingly for the boot
> + device.
> +
> +config ROMVEC
> + hex "Address of the base of the ROM vectors"
> + default "0"
> + depends on ROM
> + help
> + This is almost always the same as the base of the ROM. Since on all
> + 68000 type variants the vectors are at the base of the boot device
> + on system startup.
> +
> +config ROMVECSIZE
> + hex "Size of ROM vector region (in bytes)"
> + default "0x400"
> + depends on ROM
> + help
> + Define the size of the vector region in ROM. For most 68000
> + variants this would be 0x400 bytes in size. Set to 0 if you do
> + not want a vector region at the start of the ROM.
> +
> +config ROMSTART
> + hex "Address of the base of system image in ROM"
> + default "0x400"
> + depends on ROM
> + help
> + Define the start address of the system image in ROM. Commonly this
> + is strait after the ROM vectors.
> +
> +config ROMSIZE
> + hex "Size of the ROM device"
> + default "0x100000"
> + depends on ROM
> + help
> + Size of the ROM device. On some platforms this is used to setup
> + the chip select that controls the boot ROM device.
> +
> +choice
> + prompt "Kernel executes from"
> + ---help---
> + Choose the memory type that the kernel will be running in.
> +
> +config RAMKERNEL
> + bool "RAM"
> + help
> + The kernel will be resident in RAM when running.
> +
> +config ROMKERNEL
> + bool "ROM"
> + help
> + The kernel will be resident in FLASH/ROM when running. This is
> + often referred to as Execute-in-Place (XIP), since the kernel
> + code executes from the position it is stored in the FLASH/ROM.
> +
> +endchoice
> +
> +if COLDFIRE
> +source "kernel/Kconfig.preempt"
> +endif
> +
> +source "kernel/time/Kconfig"
> +
> +endif
>
> source "mm/Kconfig"
>
> endmenu
>
> +
> +if ARCH = "m68knommu"
> +
> +config ISA_DMA_API
> + bool
> + depends on !M5272
> + default y
> +
> +source "drivers/pcmcia/Kconfig"
> +endif
> +
> menu "General setup"
>
> source "fs/Kconfig.binfmt"
>
> +if ARCH != "m68knommu"
> +
> config ZORRO
> bool "Amiga Zorro (AutoConfig) bus support"
> depends on AMIGA
> @@ -458,12 +1167,29 @@ source "drivers/pci/Kconfig"
>
> source "drivers/zorro/Kconfig"
>
> +endif
> +
> endmenu
>
> +if ARCH = "m68knommu"
> +
> +menu "Power management options"
> +
> +config PM
> + bool "Power Management support"
> + help
> + Support processor power management modes
> +
> +endmenu
> +
> +endif
> +
> source "net/Kconfig"
>
> source "drivers/Kconfig"
>
> +if ARCH != "m68knommu"
> +
> menu "Character devices"
>
> config ATARI_MFPSER
> @@ -618,6 +1344,8 @@ config SERIAL_CONSOLE
>
> endmenu
>
> +endif
> +
> source "fs/Kconfig"
>
> source "arch/m68k/Kconfig.debug"
> diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile
> index 570d85c..3910b46 100644
> --- a/arch/m68k/Makefile
> +++ b/arch/m68k/Makefile
> @@ -1,3 +1,5 @@
> +ifeq ($(ARCH),m68k)
> +
> #
> # m68k/Makefile
> #
> @@ -120,3 +122,130 @@ archclean:
>
> install:
> sh $(srctree)/arch/m68k/install.sh $(KERNELRELEASE) vmlinux.gz
> System.map "$(INSTALL_PATH)" +
> +else
> +
> +#
> +# m68knommu Makefile
> +#
> +# This file is subject to the terms and conditions of the GNU General
> Public +# License. See the file "COPYING" in the main directory of this
> archive +# for more details.
> +#
> +# (C) Copyright 2002, Greg Ungerer <[email protected]>
> +#
> +
> +KBUILD_DEFCONFIG := m5208evb_defconfig
> +
> +platform-$(CONFIG_M68328) := 68328
> +platform-$(CONFIG_M68EZ328) := 68EZ328
> +platform-$(CONFIG_M68VZ328) := 68VZ328
> +platform-$(CONFIG_M68360) := 68360
> +platform-$(CONFIG_M5206) := 5206
> +platform-$(CONFIG_M5206e) := 5206e
> +platform-$(CONFIG_M520x) := 520x
> +platform-$(CONFIG_M523x) := 523x
> +platform-$(CONFIG_M5249) := 5249
> +platform-$(CONFIG_M527x) := 527x
> +platform-$(CONFIG_M5272) := 5272
> +platform-$(CONFIG_M528x) := 528x
> +platform-$(CONFIG_M5307) := 5307
> +platform-$(CONFIG_M532x) := 532x
> +platform-$(CONFIG_M5407) := 5407
> +PLATFORM := $(platform-y)
> +
> +board-$(CONFIG_PILOT) := pilot
> +board-$(CONFIG_UC5272) := UC5272
> +board-$(CONFIG_UC5282) := UC5282
> +board-$(CONFIG_UCSIMM) := ucsimm
> +board-$(CONFIG_UCDIMM) := ucdimm
> +board-$(CONFIG_UCQUICC) := uCquicc
> +board-$(CONFIG_DRAGEN2) := de2
> +board-$(CONFIG_ARNEWSH) := ARNEWSH
> +board-$(CONFIG_FREESCALE) := FREESCALE
> +board-$(CONFIG_M5235EVB) := M5235EVB
> +board-$(CONFIG_M5271EVB) := M5271EVB
> +board-$(CONFIG_M5275EVB) := M5275EVB
> +board-$(CONFIG_M5282EVB) := M5282EVB
> +board-$(CONFIG_ELITE) := eLITE
> +board-$(CONFIG_NETtel) := NETtel
> +board-$(CONFIG_SECUREEDGEMP3) := MP3
> +board-$(CONFIG_CLEOPATRA) := CLEOPATRA
> +board-$(CONFIG_senTec) := senTec
> +board-$(CONFIG_SNEHA) := SNEHA
> +board-$(CONFIG_M5208EVB) := M5208EVB
> +board-$(CONFIG_MOD5272) := MOD5272
> +board-$(CONFIG_AVNET) := AVNET
> +board-$(CONFIG_SAVANT) := SAVANT
> +BOARD := $(board-y)
> +
> +model-$(CONFIG_RAMKERNEL) := ram
> +model-$(CONFIG_ROMKERNEL) := rom
> +MODEL := $(model-y)
> +
> +#
> +# Some code support is grouped together for a common cpu-subclass (for
> +# example all ColdFire cpu's are very similar). Determine the sub-class
> +# for the selected cpu. ONLY need to define this for the non-base
> member +# of the family.
> +#
> +cpuclass-$(CONFIG_M5206) := coldfire
> +cpuclass-$(CONFIG_M5206e) := coldfire
> +cpuclass-$(CONFIG_M520x) := coldfire
> +cpuclass-$(CONFIG_M523x) := coldfire
> +cpuclass-$(CONFIG_M5249) := coldfire
> +cpuclass-$(CONFIG_M527x) := coldfire
> +cpuclass-$(CONFIG_M5272) := coldfire
> +cpuclass-$(CONFIG_M528x) := coldfire
> +cpuclass-$(CONFIG_M5307) := coldfire
> +cpuclass-$(CONFIG_M532x) := coldfire
> +cpuclass-$(CONFIG_M5407) := coldfire
> +cpuclass-$(CONFIG_M68328) := 68328
> +cpuclass-$(CONFIG_M68EZ328) := 68328
> +cpuclass-$(CONFIG_M68VZ328) := 68328
> +cpuclass-$(CONFIG_M68360) := 68360
> +CPUCLASS := $(cpuclass-y)
> +
> +ifneq ($(CPUCLASS),$(PLATFORM))
> +CLASSDIR := arch/m68k/platform/$(cpuclass-y)/
> +endif
> +
> +export PLATFORM BOARD MODEL CPUCLASS
> +
> +#
> +# Some CFLAG additions based on specific CPU type.
> +#
> +cflags-$(CONFIG_M5206) := $(call cc-option,-mcpu=5206,-m5200)
> +cflags-$(CONFIG_M5206e) := $(call cc-option,-m5206e,-m5200)
> +cflags-$(CONFIG_M520x) := $(call cc-option,-mcpu=5208,-m5200)
> +cflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307)
> +cflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200)
> +cflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307)
> +cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5271,-m5200)
> +cflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307)
> +cflags-$(CONFIG_M528x) := $(call cc-option,-m528x,-m5307)
> +cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200)
> +cflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307)
> +cflags-$(CONFIG_M5407) := $(call cc-option,-m5407,-m5200)
> +cflags-$(CONFIG_M68328) := -m68000
> +cflags-$(CONFIG_M68EZ328) := -m68000
> +cflags-$(CONFIG_M68VZ328) := -m68000
> +cflags-$(CONFIG_M68360) := -m68332
> +
> +KBUILD_AFLAGS += $(cflags-y)
> +
> +KBUILD_CFLAGS += $(cflags-y)
> +KBUILD_CFLAGS += -D__linux__
> +KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
> +
> +head-y := arch/m68k/platform/$(cpuclass-y)/head.o
> +
> +core-y += arch/m68k/kernel/ \
> + arch/m68k/mm/ \
> + $(CLASSDIR) \
> + arch/m68k/platform/$(PLATFORM)/
> +libs-y += arch/m68k/lib/
> +
> +archclean:
> +
> +endif
On Mon, Oct 19, 2009 at 00:55, Steven King <[email protected]> wrote:
> This is a script and patch to merge the m68knommu arch into m68k.
Thanks, nice!
> The script was inspired by the script Sam Ravnborg used to merge the
> includes from m68knommu. For those files common to both arches but
> differing in content, the m68k version of the file is renamed to
> <file>_mm.<ext> and the m68knommu version of the file is moved into the
> corresponding m68k directory and renamed <file>_no.<ext> and a small
> wrapper file <file>.<ext> is used to select between the two version. Files
> that are common to both but don't differ are removed from the m68knommu
> tree and files and directories that are unique to the m68knommu tree are
> moved to the m68k tree. Finally, the arch/m68knommu tree is removed.
>
> To select between the the versions of the files, the wrapper uses
>
> #ifdef CONFIG_MMU
> #include <file>_mm.<ext>
> #else
> #include <file>_no.<ext>
> #endif
>
> The patch modifies the toplevel Makefile so that ARCH=m68knommu still works
> (by setting SRCARCH=m68k) and adds the m68knommu Kconfig and Makefile
> to the m68k Kconfig and Makefile, using the definition of ARCH to select
> which values to use.
(still dreaming of my pet Amiga-nommu project) I prefer to use
CONFIG_MMU as the selector...
> Thus when building for either a m68k or an m68knommu target, one still
> specifies either ARCH=m68k or ARCH=m68knommu and everything should
> build EXACTLY as it did pre-merge. (I think).
... using CONFIG_MMU would change this?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Wednesday 18 November 2009 01:32:25 Geert Uytterhoeven wrote:
> > The patch modifies the toplevel Makefile so that ARCH=m68knommu still
> > works (by setting SRCARCH=m68k) and adds the m68knommu Kconfig and
> > Makefile to the m68k Kconfig and Makefile, using the definition of ARCH
> > to select which values to use.
>
> (still dreaming of my pet Amiga-nommu project) I prefer to use
> CONFIG_MMU as the selector...
CONFIG_MMU is used as the selector elsewhere, but for Kconfig and the
Makefiles something else was needed.
>
> > Thus when building for either a m68k or an m68knommu target, one still
> > specifies either ARCH=m68k or ARCH=m68knommu and everything should
> > build EXACTLY as it did pre-merge. (I think).
>
> ... using CONFIG_MMU would change this?
Yes; originally I tried using CONFIG_MMU to choose between the mmu and nommu
portions of the Kconfig and Makefile, but that broke the defconfigs. Rather
than patch the defconfigs or make a more elaborate patch for the Kconfig, for
this initial patch I wanted to keep it as simple and as un-invasive as
possible so that it would be trivial (?) to verify the merged kernel tree
produces a kernel that is the same as the pre-merged kernel tree, thus
providing a baseline for bisecting any problems with the subsequent patches
that do the real merging of the individual files. A later patch will do a
better job of merging the Kconfigs and Makefiles. Then you'd be able to have
your Amiga-nommu and I can have my Coldfire 5484 either as mmu or nommu...
--
Steven King -- sfking at fdwdc dot com
Hi Steven,
Steven King wrote:
> On Sunday 18 October 2009 04:55:40 Steven King wrote:
>> This is a script and patch to merge the m68knommu arch into m68k.
>
> Ping.
Sorry, I have just not had time to look at this yet.
Promise to find some time soon to have a closer look soon :-)
Regards
Greg
>> The script was inspired by the script Sam Ravnborg used to merge the
>> includes from m68knommu. For those files common to both arches but
>> differing in content, the m68k version of the file is renamed to
>> <file>_mm.<ext> and the m68knommu version of the file is moved into the
>> corresponding m68k directory and renamed <file>_no.<ext> and a small
>> wrapper file <file>.<ext> is used to select between the two version.
>> Files that are common to both but don't differ are removed from the
>> m68knommu tree and files and directories that are unique to the
>> m68knommu tree are moved to the m68k tree. Finally, the arch/m68knommu
>> tree is removed.
>>
>> To select between the the versions of the files, the wrapper uses
>>
>> #ifdef CONFIG_MMU
>> #include <file>_mm.<ext>
>> #else
>> #include <file>_no.<ext>
>> #endif
>>
>> The patch modifies the toplevel Makefile so that ARCH=m68knommu still
>> works (by setting SRCARCH=m68k) and adds the m68knommu Kconfig and
>> Makefile to the m68k Kconfig and Makefile, using the definition of ARCH
>> to select which values to use.
>>
>> Thus when building for either a m68k or an m68knommu target, one still
>> specifies either ARCH=m68k or ARCH=m68knommu and everything should
>> build EXACTLY as it did pre-merge. (I think).
>>
>>
>> Signed-off-by: Steven King <[email protected]>
--
------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: [email protected]
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
On Thursday 03 December 2009 8:47:56 Greg Ungerer wrote:
> Hi Steven,
>
> Steven King wrote:
> > On Sunday 18 October 2009 04:55:40 Steven King wrote:
> >> This is a script and patch to merge the m68knommu arch into m68k.
> >
> > Ping.
>
> Sorry, I have just not had time to look at this yet.
> Promise to find some time soon to have a closer look soon :-)
Cool, I should have some more patches to post soon ;-)