linux_dsm_epyc7002/arch/m68k/Kconfig.nommu
Greg Ungerer 171d809df1 m68k: merge mmu and non-mmu bitops.h
The following patch merges the mmu and non-mmu versions of the m68k
bitops.h files. Now there is a good deal of difference between the two
files, but none of it is actually an mmu specific difference. It is
all about the specific m68k/coldfire varient we are targeting. So it
makes an awful lot of sense to merge these into a single bitops.h.

There is a number of ways I can see to factor this code. The approach
I have taken here is to keep the various versions of each macro/function
type together. This means that there is some ifdefery with each to handle
each CPU type.

I have added some comments in a couple of appropriate places to try
and make it clear what the differences we are dealing with are.
Specifically the instruction and addressing mode differences we have
to deal with.

The merged form keeps the same underlying optimizations for each CPU
type for all the general bit clear/set/change and find bit operations.
It does switch to using the generic le operations though, instead of
any local varients.

Build tested on ColdFire, 68328, 68360 (which is cpu32) and 68020+.
Run tested on ColdFire and ARAnyM.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
2011-07-25 11:20:40 +10:00

788 lines
17 KiB
Plaintext

config FPU
bool
default n
config GENERIC_GPIO
bool
default n
config GENERIC_CMOS_UPDATE
bool
default y
config GENERIC_CLOCKEVENTS
bool
default n
config M68000
bool
select CPU_HAS_NO_BITFIELDS
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.
config MCPU32
bool
select CPU_HAS_NO_BITFIELDS
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 COLDFIRE
bool
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
select CPU_HAS_NO_BITFIELDS
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 COLDFIRE_SW_A7
bool
default n
config HAVE_CACHE_SPLIT
bool
config HAVE_CACHE_CB
bool
config HAVE_MBAR
bool
config HAVE_IPSBAR
bool
choice
prompt "CPU"
default M68EZ328
config M68328
bool "MC68328"
select M68000
help
Motorola 68328 processor support.
config M68EZ328
bool "MC68EZ328"
select M68000
help
Motorola 68EX328 processor support.
config M68VZ328
bool "MC68VZ328"
select M68000
help
Motorola 68VZ328 processor support.
config M68360
bool "MC68360"
select MCPU32
help
Motorola 68360 processor support.
config M5206
bool "MCF5206"
select COLDFIRE
select COLDFIRE_SW_A7
select HAVE_MBAR
help
Motorola ColdFire 5206 processor support.
config M5206e
bool "MCF5206e"
select COLDFIRE
select COLDFIRE_SW_A7
select HAVE_MBAR
help
Motorola ColdFire 5206e processor support.
config M520x
bool "MCF520x"
select COLDFIRE
select GENERIC_CLOCKEVENTS
select HAVE_CACHE_SPLIT
help
Freescale Coldfire 5207/5208 processor support.
config M523x
bool "MCF523x"
select COLDFIRE
select GENERIC_CLOCKEVENTS
select HAVE_CACHE_SPLIT
select HAVE_IPSBAR
help
Freescale Coldfire 5230/1/2/4/5 processor support
config M5249
bool "MCF5249"
select COLDFIRE
select COLDFIRE_SW_A7
select HAVE_MBAR
help
Motorola ColdFire 5249 processor support.
config M5271
bool "MCF5271"
select COLDFIRE
select HAVE_CACHE_SPLIT
select HAVE_IPSBAR
help
Freescale (Motorola) ColdFire 5270/5271 processor support.
config M5272
bool "MCF5272"
select COLDFIRE
select COLDFIRE_SW_A7
select HAVE_MBAR
help
Motorola ColdFire 5272 processor support.
config M5275
bool "MCF5275"
select COLDFIRE
select HAVE_CACHE_SPLIT
select HAVE_IPSBAR
help
Freescale (Motorola) ColdFire 5274/5275 processor support.
config M528x
bool "MCF528x"
select COLDFIRE
select GENERIC_CLOCKEVENTS
select HAVE_CACHE_SPLIT
select HAVE_IPSBAR
help
Motorola ColdFire 5280/5282 processor support.
config M5307
bool "MCF5307"
select COLDFIRE
select COLDFIRE_SW_A7
select HAVE_CACHE_CB
select HAVE_MBAR
help
Motorola ColdFire 5307 processor support.
config M532x
bool "MCF532x"
select COLDFIRE
select HAVE_CACHE_CB
help
Freescale (Motorola) ColdFire 532x processor support.
config M5407
bool "MCF5407"
select COLDFIRE
select COLDFIRE_SW_A7
select HAVE_CACHE_CB
select HAVE_MBAR
help
Motorola ColdFire 5407 processor support.
config M547x
bool "MCF547x"
select COLDFIRE
select HAVE_CACHE_CB
select HAVE_MBAR
help
Freescale ColdFire 5470/5471/5472/5473/5474/5475 processor support.
config M548x
bool "MCF548x"
select COLDFIRE
select HAVE_CACHE_CB
select HAVE_MBAR
help
Freescale ColdFire 5480/5481/5482/5483/5484/5485 processor support.
endchoice
config M527x
bool
depends on (M5271 || M5275)
select GENERIC_CLOCKEVENTS
default y
config M54xx
bool
depends on (M548x || M547x)
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 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.
if HAVE_CACHE_SPLIT
choice
prompt "Split Cache Configuration"
default CACHE_I
config CACHE_I
bool "Instruction"
help
Use all of the ColdFire CPU cache memory as an instruction cache.
config CACHE_D
bool "Data"
help
Use all of the ColdFire CPU cache memory as a data cache.
config CACHE_BOTH
bool "Both"
help
Split the ColdFire CPU cache, and use half as an instruction cache
and half as a data cache.
endchoice
endif
if HAVE_CACHE_CB
choice
prompt "Data cache mode"
default CACHE_WRITETHRU
config CACHE_WRITETHRU
bool "Write-through"
help
The ColdFire CPU cache is set into Write-through mode.
config CACHE_COPYBACK
bool "Copy-back"
help
The ColdFire CPU cache is set into Copy-back mode.
endchoice
endif
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 FIREBEE
bool "FireBee board support"
depends on M547x
help
Support for the FireBee ColdFire 5475 based 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 UBOOT
bool "Support for U-Boot command line parameters"
help
If you say Y here kernel will try to collect command
line parameters from the initial u-boot stack.
default n
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.
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), or 0 for automatic"
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 MBAR
hex "Address of the MBAR (internal peripherals)"
default "0x10000000"
depends on HAVE_MBAR
help
Define the address of the internal system peripherals. This value
is set in the processors MBAR register. This is generally setup by
the boot loader, and will not be written by the kernel. By far most
ColdFire boards use the default 0x10000000 value, so if unsure then
use this.
config IPSBAR
hex "Address of the IPSBAR (internal peripherals)"
default "0x40000000"
depends on HAVE_IPSBAR
help
Define the address of the internal system peripherals. This value
is set in the processors IPSBAR register. This is generally setup by
the boot loader, and will not be written by the kernel. By far most
ColdFire boards use the default 0x40000000 value, so if unsure then
use this.
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"
config ISA_DMA_API
bool
depends on !M5272
default y
source "drivers/pcmcia/Kconfig"