Commit 9693a853 authored by Franck Bui-Huu's avatar Franck Bui-Huu Committed by Ralf Baechle

[MIPS] Add basic SMARTMIPS ASE support

This patch adds trivial support for SMARTMIPS extension. This extension
is currently implemented by 4KS[CD] CPUs.

Basically it saves/restores ACX register, which is part of the SMARTMIPS
ASE, when needed. This patch does *not* add any support for Smartmips MMU
features.

Futhermore this patch does not add explicit support for 4KS[CD] CPUs since
they are respectively mips32 and mips32r2 compliant.  So with the current
processor configuration, a platform that has such CPUs needs to select
both configs:

	CPU_HAS_SMARTMIPS
	SYS_HAS_CPU_MIPS32_R[12]

This is due to the processor configuration which is mixing up all the
architecture variants and the processor types.

The drawback of this, is that we currently pass '-march=mips32' option to
gcc when building a kernel instead of '-march=4ksc' for 4KSC case. This
can lead to a kernel image a little bit bigger than required.
Signed-off-by: default avatarFranck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 9654640d
......@@ -274,6 +274,7 @@ config MIPS_ATLAS
select SYS_SUPPORTS_BIG_ENDIAN
select SYS_SUPPORTS_LITTLE_ENDIAN
select SYS_SUPPORTS_MULTITHREADING if EXPERIMENTAL
select SYS_SUPPORTS_SMARTMIPS
select GENERIC_HARDIRQS_NO__DO_IRQ
help
This enables support for the MIPS Technologies Atlas evaluation
......@@ -305,6 +306,7 @@ config MIPS_MALTA
select SYS_SUPPORTS_BIG_ENDIAN
select SYS_SUPPORTS_LITTLE_ENDIAN
select SYS_SUPPORTS_MULTITHREADING
select SYS_SUPPORTS_SMARTMIPS
help
This enables support for the MIPS Technologies Malta evaluation
board.
......@@ -322,6 +324,7 @@ config MIPS_SEAD
select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
select SYS_SUPPORTS_BIG_ENDIAN
select SYS_SUPPORTS_LITTLE_ENDIAN
select SYS_SUPPORTS_SMARTMIPS
help
This enables support for the MIPS Technologies SEAD evaluation
board.
......@@ -1641,6 +1644,18 @@ config 64BIT_PHYS_ADDR
config CPU_HAS_LLSC
bool
config CPU_HAS_SMARTMIPS
depends on SYS_SUPPORTS_SMARTMIPS
bool "Support for the SmartMIPS ASE"
help
SmartMIPS is a extension of the MIPS32 architecture aimed at
increased security at both hardware and software level for
smartcards. Enabling this option will allow proper use of the
SmartMIPS instructions by Linux applications. However a kernel with
this option will not work on a MIPS core without SmartMIPS core. If
you don't know you probably don't have SmartMIPS and should say N
here.
config CPU_HAS_WB
bool
......@@ -1704,6 +1719,9 @@ config CPU_SUPPORTS_HIGHMEM
config SYS_SUPPORTS_HIGHMEM
bool
config SYS_SUPPORTS_SMARTMIPS
bool
config ARCH_FLATMEM_ENABLE
def_bool y
depends on !NUMA
......
......@@ -103,6 +103,8 @@ predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__
cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be))
cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le))
cflags-$(CONFIG_CPU_HAS_SMARTMIPS) += $(call cc-option,-msmartmips)
cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \
-fno-omit-frame-pointer
......
......@@ -139,10 +139,12 @@ CONFIG_MIPS_MT_DISABLED=y
CONFIG_SYS_SUPPORTS_MULTITHREADING=y
# CONFIG_64BIT_PHYS_ADDR is not set
CONFIG_CPU_HAS_LLSC=y
# CONFIG_CPU_HAS_SMARTMIPS is not set
CONFIG_CPU_HAS_SYNC=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_SYS_SUPPORTS_SMARTMIPS=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:35 2007
# Tue Feb 20 21:47:22 2007
#
CONFIG_MIPS=y
......@@ -417,6 +417,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -589,6 +590,7 @@ CONFIG_NET_SB1250_MAC=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -1025,7 +1027,6 @@ CONFIG_FORCED_INLINING=y
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_KGDB is not set
# CONFIG_SB1XXX_CORELIS is not set
# CONFIG_RUNTIME_DEBUG is not set
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:36 2007
# Tue Feb 20 21:47:22 2007
#
CONFIG_MIPS=y
......@@ -388,6 +388,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Mon Feb 19 14:51:58 2007
# Tue Feb 20 21:47:24 2007
#
CONFIG_MIPS=y
......@@ -425,7 +425,7 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x0
CONFIG_MTD_PHYSMAP_LEN=0
CONFIG_MTD_PHYSMAP_LEN=0x0
CONFIG_MTD_PHYSMAP_BANKWIDTH=0
# CONFIG_MTD_PLATRAM is not set
......@@ -449,7 +449,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_CAFE is not set
#
# OneNAND Flash Device Drivers
......@@ -464,6 +463,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -658,6 +658,7 @@ CONFIG_TULIP=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=y
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:39 2007
# Tue Feb 20 21:47:24 2007
#
CONFIG_MIPS=y
......@@ -548,6 +548,7 @@ CONFIG_MTD_ALCHEMY=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1103,6 +1104,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:39 2007
# Tue Feb 20 21:47:24 2007
#
CONFIG_MIPS=y
......@@ -537,6 +537,7 @@ CONFIG_MTD_ALCHEMY=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1103,6 +1104,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:40 2007
# Tue Feb 20 21:47:25 2007
#
CONFIG_MIPS=y
......@@ -541,6 +541,7 @@ CONFIG_MTD_NAND_IDS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1185,6 +1186,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE="mem=48M"
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:41 2007
# Tue Feb 20 21:47:26 2007
#
CONFIG_MIPS=y
......@@ -542,7 +542,6 @@ CONFIG_MTD_ALCHEMY=y
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_CAFE is not set
#
# OneNAND Flash Device Drivers
......@@ -557,6 +556,7 @@ CONFIG_MTD_ALCHEMY=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -715,6 +715,7 @@ CONFIG_MIPS_AU1X00_ENET=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -1145,6 +1146,7 @@ CONFIG_USB_MON=y
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
......@@ -1402,6 +1404,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:42 2007
# Tue Feb 20 21:47:27 2007
#
CONFIG_MIPS=y
......@@ -562,6 +562,7 @@ CONFIG_MTD_NAND_AU1550=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -751,6 +752,7 @@ CONFIG_MIPS_AU1X00_ENET=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -1219,6 +1221,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:43 2007
# Tue Feb 20 21:47:28 2007
#
CONFIG_MIPS=y
......@@ -386,6 +386,7 @@ CONFIG_PROC_EVENTS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -925,6 +926,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE="ip=any"
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:44 2007
# Tue Feb 20 21:47:28 2007
#
CONFIG_MIPS=y
......@@ -398,6 +398,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:44 2007
# Tue Feb 20 21:47:28 2007
#
CONFIG_MIPS=y
......@@ -294,6 +294,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
# Plug and Play support
#
# CONFIG_PNP is not set
# CONFIG_PNPACPI is not set
#
# Block devices
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:46 2007
# Tue Feb 20 21:47:29 2007
#
CONFIG_MIPS=y
......@@ -611,7 +611,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_CAFE is not set
#
# OneNAND Flash Device Drivers
......@@ -626,6 +625,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1039,6 +1039,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1029 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_ASB100 is not set
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:46 2007
# Tue Feb 20 21:47:30 2007
#
CONFIG_MIPS=y
......@@ -391,6 +391,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -520,6 +521,7 @@ CONFIG_NET_ETHERNET=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -914,6 +916,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.1.1:/mnt/disk2/fs.gal ip=192.168.1.211:192.168.1.1:::gt::"
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:47 2007
# Tue Feb 20 21:47:31 2007
#
CONFIG_MIPS=y
......@@ -451,6 +451,7 @@ CONFIG_MTD_NAND_VERIFY_WRITE=y
# CONFIG_MTD_NAND_ECC_SMC is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_BASLER_EXCITE is not set
# CONFIG_MTD_NAND_CAFE is not set
# CONFIG_MTD_NAND_NANDSIM is not set
......@@ -467,6 +468,7 @@ CONFIG_MTD_NAND_IDS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -638,6 +640,7 @@ CONFIG_NETDEVICES=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -1008,6 +1011,7 @@ CONFIG_USB_HID=m
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
......@@ -1277,6 +1281,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:48 2007
# Tue Feb 20 21:47:32 2007
#
CONFIG_MIPS=y
......@@ -620,6 +620,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:49 2007
# Tue Feb 20 21:47:32 2007
#
CONFIG_MIPS=y
......@@ -456,6 +456,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -672,6 +673,7 @@ CONFIG_SGI_IOC3_ETH=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -1060,6 +1062,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:50 2007
# Tue Feb 20 21:47:33 2007
#
CONFIG_MIPS=y
......@@ -396,6 +396,7 @@ CONFIG_PROC_EVENTS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -600,6 +601,7 @@ CONFIG_SGI_O2MACE_ETH=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=y
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:51 2007
# Tue Feb 20 21:47:33 2007
#
CONFIG_MIPS=y
......@@ -375,6 +375,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -518,9 +519,6 @@ CONFIG_EEPRO100=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_MV643XX_ETH=y
CONFIG_MV643XX_ETH_0=y
CONFIG_MV643XX_ETH_1=y
CONFIG_MV643XX_ETH_2=y
CONFIG_QLA3XXX=m
#
......@@ -833,6 +831,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
#
# Security options
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:52 2007
# Tue Feb 20 21:47:33 2007
#
CONFIG_MIPS=y
......@@ -646,6 +646,7 @@ CONFIG_PARPORT_1284=y
# Plug and Play support
#
# CONFIG_PNP is not set
# CONFIG_PNPACPI is not set
#
# Block devices
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:53 2007
# Tue Feb 20 21:47:34 2007
#
CONFIG_MIPS=y
......@@ -384,6 +384,7 @@ CONFIG_PROC_EVENTS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -513,6 +514,7 @@ CONFIG_NET_ETHERNET=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=y
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:54 2007
# Tue Feb 20 21:47:34 2007
#