Commit 63ae0e5b authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  [MIPS] Fix port 0 mac address for mips mv6434x platforms
  [SERIAL] serial_txx9 driver update
  Revert "[PATCH] Generic ioremap_page_range: mips conversion"
  [MIPS] Cobalt: Rename "Colo" MTD partition to "firmware".
  [MIPS] SMP: Get smp_tune_scheduling to do something useful.
  [MIPS] Add basic SMARTMIPS ASE support
parents a22a0fab 2e8e2d49
......@@ -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
......
......@@ -24,7 +24,7 @@
static struct mtd_partition cobalt_mtd_partitions[] = {
{
.name = "Colo",
.name = "firmware",
.offset = 0x0,
.size = 0x80000,
},
......
......@@ -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
#
CONFIG_MIPS=y
......@@ -454,7 +454,6 @@ CONFIG_MTD_LASAT=y
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_CAFE is not set
#
# OneNAND Flash Device Drivers
......@@ -469,6 +468,7 @@ CONFIG_MTD_LASAT=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -654,6 +654,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)
......
......@@ -145,6 +145,7 @@ CONFIG_SYS_SUPPORTS_MULTITHREADING=y
CONFIG_MIPS_MT_FPAFF=y
# CONFIG_64BIT_PHYS_ADDR is not set
CONFIG_CPU_HAS_LLSC=y
# CONFIG_CPU_HAS_SMARTMIPS is not set
CONFIG_CPU_MIPSR2_IRQ_VI=y
CONFIG_CPU_MIPSR2_SRS=y
CONFIG_CPU_HAS_SYNC=y
......@@ -152,6 +153,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_IRQ_PER_CPU=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:56 2007
# Tue Feb 20 21:47:35 2007
#
CONFIG_MIPS=y
......@@ -436,6 +436,7 @@ CONFIG_FIB_RULES=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -878,7 +879,6 @@ CONFIG_FORCED_INLINING=y
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE="nfsroot=192.168.192.169:/u1/mipsel,timeo=20 ip=dhcp"
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_KGDB is not set
# CONFIG_RUNTIME_DEBUG is not set
# CONFIG_MIPS_UNCACHED is not set
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:56 2007
# Tue Feb 20 21:47:35 2007
#
CONFIG_MIPS=y
......@@ -405,6 +405,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -531,6 +532,7 @@ CONFIG_MII=m
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -883,6 +885,7 @@ CONFIG_USB_PEGASUS=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
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:58 2007
# Tue Feb 20 21:47:35 2007
#
CONFIG_MIPS=y
......@@ -496,6 +496,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -713,9 +714,6 @@ CONFIG_E100=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
# CONFIG_ATL1 is not set
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:58 2007
# Tue Feb 20 21:47:36 2007
#
CONFIG_MIPS=y
......@@ -393,6 +393,7 @@ CONFIG_PROC_EVENTS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -523,6 +524,7 @@ CONFIG_NET_ETHERNET=y
# CONFIG_BNX2 is not set
# CONFIG_MV643XX_ETH 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:59 2007
# Tue Feb 20 21:47:36 2007
#
CONFIG_MIPS=y
......@@ -390,6 +390,7 @@ CONFIG_PROC_EVENTS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -854,6 +855,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:28:00 2007
# Tue Feb 20 21:47:36 2007
#
CONFIG_MIPS=y
......@@ -392,6 +392,7 @@ CONFIG_PROC_EVENTS=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -522,6 +523,7 @@ CONFIG_GALILEO_64240_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:28:01 2007
# Tue Feb 20 21:47:37 2007
#
CONFIG_MIPS=y
......@@ -549,6 +549,7 @@ CONFIG_MTD_ALCHEMY=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1096,6 +1097,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:28:02 2007
# Tue Feb 20 21:47:37 2007
#
CONFIG_MIPS=y
......@@ -541,7 +541,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
......@@ -556,6 +555,7 @@ CONFIG_MTD_ALCHEMY=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -745,6 +745,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)
......@@ -1213,6 +1214,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:28:03 2007
# Tue Feb 20 21:47:37 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
......@@ -746,6 +746,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)
......@@ -1206,6 +1207,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:28:04 2007
# Tue Feb 20 21:47:38 2007
#
CONFIG_MIPS=y
......@@ -389,6 +389,7 @@ CONFIG_FW_LOADER=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -962,6 +963,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
......@@ -1229,6 +1231,7 @@ CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE="console=ttyS1,38400n8 kgdb=ttyS0 root=/dev/nfs ip=bootp"
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_KGDB is not set
CONFIG_SYS_SUPPORTS_KGDB=y
# CONFIG_RUNTIME_DEBUG is not set
# CONFIG_MIPS_UNCACHED is not set
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:28:04 2007
# Tue Feb 20 21:47:38 2007
#
CONFIG_MIPS=y
......@@ -386,6 +386,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -952,6 +953,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
......@@ -1219,6 +1221,7 @@ CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE="console=ttyS1,38400n8 kgdb=ttyS0 root=/dev/nfs ip=bootp"
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_KGDB is not set
CONFIG_SYS_SUPPORTS_KGDB=y
# CONFIG_RUNTIME_DEBUG is not set
# CONFIG_MIPS_UNCACHED is not set
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:28:06 2007
# Tue Feb 20 21:47:39 2007
#
CONFIG_MIPS=y
......@@ -474,6 +474,7 @@ CONFIG_FW_LOADER=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -987,6 +988,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
......@@ -1209,6 +1211,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
......@@ -1466,6 +1469,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:28:06 2007
# Tue Feb 20 21:47:39 2007
#
CONFIG_MIPS=y
......@@ -348,6 +348,7 @@ CONFIG_PROC_EVENTS=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:28:07 2007
# Tue Feb 20 21:47:39 2007
#
CONFIG_MIPS=y
......@@ -560,7 +560,6 @@ CONFIG_MTD_CFI_UTIL=y
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_CAFE is not set
#
# OneNAND Flash Device Drivers
......@@ -576,6 +575,7 @@ CONFIG_MTD_CFI_UTIL=y
# Plug and Play support
#
# CONFIG_PNP is not set
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1191,6 +1191,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
......@@ -1462,6 +1463,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:28:09 2007
# Tue Feb 20 21:47:40 2007
#
CONFIG_MIPS=y
......@@ -661,6 +661,7 @@ CONFIG_PARPORT_NOT_PC=y
# Plug and Play support
#
# CONFIG_PNP is not set
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -1397,6 +1398,7 @@ CONFIG_USB_AUERSWALD=m
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=m
# CONFIG_USB_BERRY_CHARGE is not set
CONFIG_USB_LED=m
# CONFIG_USB_CYPRESS_CY7C63 is not set
CONFIG_USB_CYTHERM=m
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:28:09 2007
# Tue Feb 20 21:47:40 2007
#
CONFIG_MIPS=y
......@@ -424,6 +424,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -581,6 +582,7 @@ CONFIG_NET_SB1250_MAC=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -945,6 +947,7 @@ CONFIG_ENABLE_MUST_CHECK=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
CONFIG_SYS_SUPPORTS_KGDB=y
# CONFIG_SB1XXX_CORELIS is not set
#
......
......@@ -129,10 +129,12 @@ CONFIG_MIPS_MT_DISABLED=y
# CONFIG_MIPS_VPE_LOADER is not set
# 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:28:11 2007
# Tue Feb 20 21:47:41 2007
#
CONFIG_MIPS=y
......@@ -396,6 +396,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -920,6 +921,7 @@ CONFIG_USB_STORAGE=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
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:28:12 2007
# Tue Feb 20 21:47:41 2007
#
CONFIG_MIPS=y
......@@ -397,6 +397,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -530,6 +531,7 @@ CONFIG_R8169=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
CONFIG_QLA3XXX=m
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -819,6 +821,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
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:28:13 2007
# Tue Feb 20 21:47:41 2007
#
CONFIG_MIPS=y
......@@ -409,6 +409,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -675,6 +676,7 @@ CONFIG_R8169=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
#
# Ethernet (10000 Mbit)
......@@ -1016,6 +1018,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
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:28:13 2007
# Tue Feb 20 21:47:42 2007
#
CONFIG_MIPS=y
......@@ -396,6 +396,7 @@ CONFIG_CONNECTOR=m
# 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:28:14 2007
# Tue Feb 20 21:47:42 2007
#
CONFIG_MIPS=y
......@@ -400,6 +400,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
#
# 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:28:15 2007
# Tue Feb 20 21:47:42 2007
#
CONFIG_MIPS=y
......@@ -381,6 +381,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......@@ -841,6 +842,7 @@ CONFIG_CROSSCOMPILE=y
CONFIG_CMDLINE=""
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_KGDB is not set
CONFIG_SYS_SUPPORTS_KGDB=y
# CONFIG_RUNTIME_DEBUG is not set
#
......
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
# Sun Feb 18 21:27:34 2007
# Tue Feb 20 21:47:14 2007
#
CONFIG_MIPS=y
......@@ -620,6 +620,7 @@ CONFIG_CONNECTOR=m
#
# Plug and Play support
#
# CONFIG_PNPACPI is not set
#
# Block devices
......
......@@ -64,6 +64,9 @@ void output_ptreg_defines(void)
offset("#define PT_R31 ", struct pt_regs, regs[31]);
offset("#define PT_LO ", struct pt_regs, lo);
offset("#define PT_HI ", struct pt_regs, hi);
#ifdef CONFIG_CPU_HAS_SMARTMIPS
offset("#define PT_ACX ", struct pt_regs, acx);
#endif
offset("#define PT_EPC ", struct pt_regs, cp0_epc);
offset("#define PT_BVADDR ", struct pt_regs, cp0_badvaddr);
offset("#define PT_STATUS ", struct pt_regs, cp0_status);
......@@ -246,6 +249,7 @@ void output_sc_defines(void)
text("/* Linux sigcontext offsets. */");
offset("#define SC_REGS ", struct sigcontext, sc_regs);
offset("#define SC_FPREGS ", struct sigcontext, sc_fpregs);
offset("#define SC_ACX ", struct sigcontext, sc_acx);
offset("#define SC_MDHI ", struct sigcontext, sc_mdhi);
offset("#define SC_MDLO ", struct sigcontext, sc_mdlo);
offset("#define SC_PC ", struct sigcontext, sc_pc);
......
......@@ -236,6 +236,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
case MMLO:
tmp = regs->lo;
break;
#ifdef CONFIG_CPU_HAS_SMARTMIPS
case ACX:
tmp = regs->acx;
break;
#endif
case FPC_CSR:
tmp = child->thread.fpu.fcr31;
break;
......@@ -362,6 +367,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
case MMLO:
regs->lo = data;
break;
#ifdef CONFIG_CPU_HAS_SMARTMIPS
case ACX:
regs->acx = data;
break;
#endif
case FPC_CSR:
child->thread.fpu.fcr31 = data;
break;
......
......@@ -89,6 +89,9 @@ int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
for (i = 1; i < 32; i++)
err |= __put_user(regs->regs[i], &sc->sc_regs[i]);
#ifdef CONFIG_CPU_HAS_SMARTMIPS
err |= __put_user(regs->acx, &sc->sc_acx);
#endif
err |= __put_user(regs->hi, &sc->sc_mdhi);
err |= __put_user(regs->lo, &sc->sc_mdlo);
if (cpu_has_dsp) {
......@@ -132,6 +135,10 @@ int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
current_thread_info()->restart_block.fn = do_no_restart_syscall;
err |= __get_user(regs->cp0_epc, &sc->sc_pc);
#ifdef CONFIG_CPU_HAS_SMARTMIPS
err |= __get_user(regs->acx, &sc->sc_acx);
#endif
err |= __get_user(regs->hi, &sc->sc_mdhi);
err |= __get_user(regs->lo, &sc->sc_mdlo);
if (cpu_has_dsp) {
......
......@@ -51,31 +51,14 @@ int __cpu_logical_map[NR_CPUS]; /* Map logical to physical */
EXPORT_SYMBOL(phys_cpu_present_map);
EXPORT_SYMBOL(cpu_online_map);
/* This happens early in bootup, can't really do it better */
static void smp_tune_scheduling (void)
{
struct cache_desc *cd = &current_cpu_data.scache;
unsigned long cachesize; /* kB */
unsigned long cpu_khz;
unsigned long cachesize = cd->linesz * cd->sets * cd->ways;
/*
* Crude estimate until we actually meassure ...
*/
cpu_khz = loops_per_jiffy * 2 * HZ / 1000;
/*
* Rough estimation for SMP scheduling, this is the number of
* cycles it takes for a fully memory-limited process to flush
* the SMP-local cache.
*
* (For a P5 this pretty much means we will choose another idle
* CPU almost always at wakeup time (this is due to the small
* L1 cache), on PIIs it's around 50-100 usecs, depending on
* the cache size)
*/
if (!cpu_khz)
return;
cachesize = cd->linesz * cd->sets * cd->ways;
if (cachesize > max_cache_size)
max_cache_size = cachesize;
}
extern void __init calibrate_delay(void);
......
......@@ -229,6 +229,9 @@ void show_regs(struct pt_regs *regs)
printk("\n");
}
#ifdef CONFIG_CPU_HAS_SMARTMIPS
printk("Acx : %0*lx\n", field, regs->acx);
#endif
printk("Hi : %0*lx\n", field, regs->hi);
printk("Lo : %0*lx\n", field, regs->lo);
......
......@@ -6,13 +6,98 @@
* (C) Copyright 1995 1996 Linus Torvalds
* (C) Copyright 2001, 2002 Ralf Baechle
*/
#include <linux/mm.h>
#include <linux/module.h>
#include <asm/addrspace.h>
#include <asm/byteorder.h>
#include <linux/vmalloc.h>
#include <linux/io.h>
#include <asm/cacheflush.h>
#include <asm/io.h>
#include <asm/tlbflush.h>
static inline void remap_area_pte(pte_t * pte, unsigned long address,
phys_t size, phys_t phys_addr, unsigned long flags)
{
phys_t end;
unsigned long pfn;
pgprot_t pgprot = __pgprot(_PAGE_GLOBAL | _PAGE_PRESENT | __READABLE
| __WRITEABLE | flags);
address &= ~PMD_MASK;
end = address + size;
if (end > PMD_SIZE)
end = PMD_SIZE;
if (address >= end)
BUG();
pfn = phys_addr >> PAGE_SHIFT;
do {
if (!pte_none(*pte)) {
printk("remap_area_pte: page already exists\n");
BUG();
}
set_pte(pte, pfn_pte(pfn, pgprot));
address += PAGE_SIZE;
pfn++;
pte++;
} while (address && (address < end));
}
static inline int remap_area_pmd(pmd_t * pmd, unsigned long address,
phys_t size, phys_t phys_addr, unsigned long flags)
{
phys_t end;
address &= ~PGDIR_MASK;
end = address + size;
if (end > PGDIR_SIZE)
end = PGDIR_SIZE;
phys_addr -= address;
if (address >= end)
BUG();
do {
pte_t * pte = pte_alloc_kernel(pmd, address);
if (!pte)
return -ENOMEM;
remap_area_pte(pte, address, end - address, address + phys_addr, flags);
address = (address + PMD_SIZE) & PMD_MASK;
pmd++;
} while (address && (address < end));
return 0;
}
static int remap_area_pages(unsigned long address, phys_t phys_addr,
phys_t size, unsigned long flags)
{
int error;
pgd_t * dir;
unsigned long end = address + size;
phys_addr -= address;
dir = pgd_offset(&init_mm, address);
flush_cache_all();
if (address >= end)
BUG();
do {
pud_t *pud;
pmd_t *pmd;
error = -ENOMEM;
pud = pud_alloc(&init_mm, dir, address);
if (!pud)
break;
pmd = pmd_alloc(&init_mm, pud, address);
if (!pmd)
break;
if (remap_area_pmd(pmd, address, end - address,
phys_addr + address, flags))
break;
error = 0;
address = (address + PGDIR_SIZE) & PGDIR_MASK;
dir++;
} while (address && (address < end));
flush_tlb_all();
return error;
}
/*
* Generic mapping function (not visible outside):
......@@ -36,7 +121,6 @@ void __iomem * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
unsigned long offset;
phys_t last_addr;
void * addr;
pgprot_t pgprot;
phys_addr = fixup_bigphys_addr(phys_addr, size);
......@@ -68,9 +152,6 @@ void __iomem * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
return NULL;
}
pgprot = __pgprot(_PAGE_GLOBAL | _PAGE_PRESENT | __READABLE
| __WRITEABLE | flags);
/*
* Mappings have to be page-aligned
*/
......@@ -85,8 +166,7 @@ void __iomem * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
if (!area)
return NULL;
addr = area->addr;
if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size,
phys_addr, pgprot)) {
if (remap_area_pages((unsigned long) addr, phys_addr, size, flags)) {
vunmap(addr);
return NULL;
}
......
......@@ -200,7 +200,7 @@ static int __init mv643xx_eth_add_pds(void)
int ret;
get_mac(mac);
eth_mac_add(eth1_mac_addr, mac, 0);
eth_mac_add(eth0_mac_addr, mac, 0);
eth_mac_add(eth1_mac_addr, mac, 1);
eth_mac_add(eth2_mac_addr, mac, 2);
ret = platform_add_devices(mv643xx_eth_pd_devs,
......
......@@ -200,7 +200,7 @@ static int __init mv643xx_eth_add_pds(void)
int ret;
get_mac(mac);
eth_mac_add(eth1_mac_addr, mac, 0);
eth_mac_add(eth0_mac_addr, mac, 0);
eth_mac_add(eth1_mac_addr, mac, 1);
eth_mac_add(eth2_mac_addr, mac, 2);
ret = platform_add_devices(mv643xx_eth_pd_devs,
......
......@@ -174,7 +174,7 @@ static int __init mv643xx_eth_add_pds(void)
int ret;
get_mac(mac);
eth_mac_add(eth1_mac_addr, mac, 0);
eth_mac_add(eth0_mac_addr, mac, 0);
eth_mac_add(eth1_mac_addr, mac, 1);
ret = platform_add_devices(mv643xx_eth_pd_devs,
ARRAY_SIZE(mv643xx_eth_pd_devs));
......
......@@ -38,6 +38,8 @@
* Fix some spin_locks.
* Do not call uart_add_one_port for absent ports.
* 1.07 Use CONFIG_SERIAL_TXX9_NR_UARTS. Cleanup.
* 1.08 Use platform_device.
* Fix and cleanup suspend/resume/initialization codes.
*/
#if defined(CONFIG_SERIAL_TXX9_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
......@@ -50,7 +52,7 @@
#include <linux/console.h>
#include <linux/sysrq.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/tty.h>
#include <linux/tty_flip.h>
......@@ -60,7 +62,7 @@
#include <asm/io.h>
static char *serial_version = "1.07";
static char *serial_version = "1.08";
static char *serial_name = "TX39/49 Serial driver";
#define PASS_LIMIT 256
......@@ -94,12 +96,7 @@ static char *serial_name = "TX39/49 Serial driver";
struct uart_txx9_port {
struct uart_port port;
/*
* We provide a per-port pm hook.
*/
void (*pm)(struct uart_port *port,
unsigned int state, unsigned int old);
/* No additional info for now */
};
#define TXX9_REGION_SIZE 0x24
......@@ -277,6 +274,31 @@ static void serial_txx9_enable_ms(struct uart_port *port)
/* TXX9-SIO can not control DTR... */
}
static void serial_txx9_initialize(struct uart_port *port)
{
struct uart_txx9_port *up = (struct uart_txx9_port *)port;
unsigned int tmout = 10000;
sio_out(up, TXX9_SIFCR, TXX9_SIFCR_SWRST);
/* TX4925 BUG WORKAROUND. Accessing SIOC register
* immediately after soft reset causes bus error. */
mmiowb();
udelay(1);
while ((sio_in(up, TXX9_SIFCR) & TXX9_SIFCR_SWRST) && --tmout)
udelay(1);
/* TX Int by FIFO Empty, RX Int by Receiving 1 char. */
sio_set(up, TXX9_SIFCR,
TXX9_SIFCR_TDIL_MAX | TXX9_SIFCR_RDIL_1);
/* initial settings */
sio_out(up, TXX9_SILCR,
TXX9_SILCR_UMODE_8BIT | TXX9_SILCR_USBL_1BIT |
((up->port.flags & UPF_TXX9_USE_SCLK) ?
TXX9_SILCR_SCS_SCLK_BG : TXX9_SILCR_SCS_IMCLK_BG));
sio_quot_set(up, uart_get_divisor(port, 9600));
sio_out(up, TXX9_SIFLCR, TXX9_SIFLCR_RTSTL_MAX /* 15 */);
sio_out(up, TXX9_SIDICR, 0);
}
static inline void
receive_chars(struct uart_txx9_port *up, unsigned int *status)
{
......@@ -657,9 +679,8 @@ static void
serial_txx9_pm(struct uart_port *port, unsigned int state,
unsigned int oldstate)
{
struct uart_txx9_port *up = (struct uart_txx9_port *)port;
if (up->pm)
up->pm(port, state, oldstate);
if (state == 0)
serial_txx9_initialize(port);
}
static int serial_txx9_request_resource(struct uart_txx9_port *up)
......@@ -732,7 +753,6 @@ static int serial_txx9_request_port(struct uart_port *port)
static void serial_txx9_config_port(struct uart_port *port, int uflags)
{
struct uart_txx9_port *up = (struct uart_txx9_port *)port;
unsigned long flags;
int ret;
/*
......@@ -749,30 +769,7 @@ static void serial_txx9_config_port(struct uart_port *port, int uflags)
if (up->port.line == up->port.cons->index)
return;
#endif
spin_lock_irqsave(&up->port.lock, flags);
/*
* Reset the UART.
*/
sio_out(up, TXX9_SIFCR, TXX9_SIFCR_SWRST);
#ifdef CONFIG_CPU_TX49XX
/* TX4925 BUG WORKAROUND. Accessing SIOC register
* immediately after soft reset causes bus error. */
iob();
udelay(1);
#endif
while (sio_in(up, TXX9_SIFCR) & TXX9_SIFCR_SWRST)
;
/* TX Int by FIFO Empty, RX Int by Receiving 1 char. */
sio_set(up, TXX9_SIFCR,
TXX9_SIFCR_TDIL_MAX | TXX9_SIFCR_RDIL_1);
/* initial settings */
sio_out(up, TXX9_SILCR,
TXX9_SILCR_UMODE_8BIT | TXX9_SILCR_USBL_1BIT |
((up->port.flags & UPF_TXX9_USE_SCLK) ?
TXX9_SILCR_SCS_SCLK_BG : TXX9_SILCR_SCS_IMCLK_BG));
sio_quot_set(up, uart_get_divisor(port, 9600));
sio_out(up, TXX9_SIFLCR, TXX9_SIFLCR_RTSTL_MAX /* 15 */);
spin_unlock_irqrestore(&up->port.lock, flags);
serial_txx9_initialize(port);
}
static int
......@@ -818,7 +815,8 @@ static struct uart_ops serial_txx9_pops = {
static struct uart_txx9_port serial_txx9_ports[UART_NR];
static void __init serial_txx9_register_ports(struct uart_driver *drv)
static void __init serial_txx9_register_ports(struct uart_driver *drv,
struct device *dev)
{
int i;
......@@ -827,6 +825,7 @@ static void __init serial_txx9_register_ports(struct uart_driver *drv)
up->port.line = i;
up->port.ops = &serial_txx9_pops;
up->port.dev = dev;
if (up->port.iobase || up->port.mapbase)
uart_add_one_port(drv, &up->port);
}
......@@ -898,7 +897,7 @@ serial_txx9_console_write(struct console *co, const char *s, unsigned int count)
sio_out(up, TXX9_SIDICR, ier);
}
static int serial_txx9_console_setup(struct console *co, char *options)
static int __init serial_txx9_console_setup(struct console *co, char *options)
{
struct uart_port *port;
struct uart_txx9_port *up;
......@@ -919,17 +918,7 @@ static int serial_txx9_console_setup(struct console *co, char *options)
if (!port->ops)
return -ENODEV;
/*
* Disable UART interrupts, set DTR and RTS high
* and set speed.
*/
sio_out(up, TXX9_SIDICR, 0);
/* initial settings */
sio_out(up, TXX9_SILCR,
TXX9_SILCR_UMODE_8BIT | TXX9_SILCR_USBL_1BIT |
((port->flags & UPF_TXX9_USE_SCLK) ?
TXX9_SILCR_SCS_SCLK_BG : TXX9_SILCR_SCS_IMCLK_BG));
sio_out(up, TXX9_SIFLCR, TXX9_SIFLCR_RTSTL_MAX /* 15 */);
serial_txx9_initialize(&up->port);
if (options)
uart_parse_options(options, &baud, &parity, &bits, &flow);
......@@ -981,31 +970,6 @@ int __init early_serial_txx9_setup(struct uart_port *port)
return 0;
}
#ifdef ENABLE_SERIAL_TXX9_PCI
#ifdef CONFIG_PM
/**
* serial_txx9_suspend_port - suspend one serial port
* @line: serial line number
*
* Suspend one serial port.
*/
static void serial_txx9_suspend_port(int line)
{
uart_suspend_port(&serial_txx9_reg, &serial_txx9_ports[line].port);
}
/**
* serial_txx9_resume_port - resume one serial port
* @line: serial line number
*
* Resume one serial port.
*/
static void serial_txx9_resume_port(int line)
{
uart_resume_port(&serial_txx9_reg, &serial_txx9_ports[line].port);
}
#endif
static DEFINE_MUTEX(serial_txx9_mutex);
/**
......@@ -1028,8 +992,18 @@ static int __devinit serial_txx9_register_port(struct uart_port *port)
mutex_lock(&serial_txx9_mutex);
for (i = 0; i < UART_NR; i++) {
uart = &serial_txx9_ports[i];
if (!(uart->port.iobase || uart->port.mapbase))
if (uart_match_port(&uart->port, port)) {
uart_remove_one_port(&serial_txx9_reg, &uart->port);
break;
}
}
if (i == UART_NR) {
/* Find unused port */
for (i = 0; i < UART_NR; i++) {
uart = &serial_txx9_ports[i];
if (!(uart->port.iobase || uart->port.mapbase))
break;
}
}
if (i < UART_NR) {
uart->port.iobase = port->iobase;
......@@ -1071,6 +1045,95 @@ static void __devexit serial_txx9_unregister_port(int line)
mutex_unlock(&serial_txx9_mutex);
}
/*
* Register a set of serial devices attached to a platform device.
*/
static int __devinit serial_txx9_probe(struct platform_device *dev)
{
struct uart_port *p = dev->dev.platform_data;
struct uart_port port;
int ret, i;
memset(&port, 0, sizeof(struct uart_port));
for (i = 0; p && p->uartclk != 0; p++, i++) {
port.iobase = p->iobase;
port.membase = p->membase;
port.irq = p->irq;
port.uartclk = p->uartclk;
port.iotype = p->iotype;
port.flags = p->flags;
port.mapbase = p->mapbase;
port.dev = &dev->dev;
ret = serial_txx9_register_port(&port);
if (ret < 0) {
dev_err(&dev->dev, "unable to register port at index %d "
"(IO%x MEM%lx IRQ%d): %d\n", i,
p->iobase, p->mapbase, p->irq, ret);
}
}
return 0;
}
/*
* Remove serial ports registered against a platform device.
*/
static int __devexit serial_txx9_remove(struct platform_device *dev)
{
int i;
for (i = 0; i < UART_NR; i++) {
struct uart_txx9_port *up = &serial_txx9_ports[i];
if (up->port.dev == &dev->dev)
serial_txx9_unregister_port(i);
}
return 0;
}
#ifdef CONFIG_PM
static int serial_txx9_suspend(struct platform_device *dev, pm_message_t state)
{
int i;
for (i = 0; i < UART_NR; i++) {
struct uart_txx9_port *up = &serial_txx9_ports[i];
if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev)
uart_suspend_port(&serial_txx9_reg, &up->port);
}
return 0;
}
static int serial_txx9_resume(struct platform_device *dev)
{
int i;
for (i = 0; i < UART_NR; i++) {
struct uart_txx9_port *up = &serial_txx9_ports[i];
if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev)
uart_resume_port(&serial_txx9_reg, &up->port);
}
return 0;
}
#endif
static struct platform_driver serial_txx9_plat_driver = {
.probe = serial_txx9_probe,
.remove = __devexit_p(serial_txx9_remove),
#ifdef CONFIG_PM
.suspend = serial_txx9_suspend,
.resume = serial_txx9_resume,
#endif
.driver = {
.name = "serial_txx9",
.owner = THIS_MODULE,
},
};
#ifdef ENABLE_SERIAL_TXX9_PCI
/*
* Probe one serial board. Unfortunately, there is no rhyme nor reason
* to the arrangement of serial ports on a PCI card.
......@@ -1097,20 +1160,22 @@ pciserial_txx9_init_one(struct pci_dev *dev, const struct pci_device_id *ent)
line = serial_txx9_register_port(&port);
if (line < 0) {
printk(KERN_WARNING "Couldn't register serial port %s: %d\n", pci_name(dev), line);
pci_disable_device(dev);
return line;
}
pci_set_drvdata(dev, (void *)(long)line);
pci_set_drvdata(dev, &serial_txx9_ports[line]);
return 0;
}
static void __devexit pciserial_txx9_remove_one(struct pci_dev *dev)
{
int line = (int)(long)pci_get_drvdata(dev);
struct uart_txx9_port *up = pci_get_drvdata(dev);
pci_set_drvdata(dev, NULL);
if (line) {
serial_txx9_unregister_port(line);
if (up) {
serial_txx9_unregister_port(up->port.line);
pci_disable_device(dev);
}
}
......@@ -1118,10 +1183,10 @@ static void __devexit pciserial_txx9_remove_one(struct pci_dev *dev)
#ifdef CONFIG_PM
static int pciserial_txx9_suspend_one(struct pci_dev *dev, pm_message_t state)
{
int line = (int)(long)pci_get_drvdata(dev);
struct uart_txx9_port *up = pci_get_drvdata(dev);
if (line)
serial_txx9_suspend_port(line);
if (up)
uart_suspend_port(&serial_txx9_reg, &up->port);
pci_save_state(dev);
pci_set_power_state(dev, pci_choose_state(dev, state));
return 0;
......@@ -1129,15 +1194,12 @@ static int pciserial_txx9_suspend_one(struct pci_dev *dev, pm_message_t state)
static int pciserial_txx9_resume_one(struct pci_dev *dev)
{
int line = (int)(long)pci_get_drvdata(dev);
struct uart_txx9_port *up = pci_get_drvdata(dev);
pci_set_power_state(dev, PCI_D0);
pci_restore_state(dev);
if (line) {
pci_enable_device(dev);
serial_txx9_resume_port(line);
}
if (up)
uart_resume_port(&serial_txx9_reg, &up->port);
return 0;
}
#endif
......@@ -1161,6 +1223,8 @@ static struct pci_driver serial_txx9_pci_driver = {
MODULE_DEVICE_TABLE(pci, serial_txx9_pci_tbl);
#endif /* ENABLE_SERIAL_TXX9_PCI */
static struct platform_device *serial_txx9_plat_devs;
static int __init serial_txx9_init(void)
{
int ret;
......@@ -1168,13 +1232,39 @@ static int __init serial_txx9_init(void)
printk(KERN_INFO "%s version %s\n", serial_name, serial_version);
ret = uart_register_driver(&serial_txx9_reg);
if (ret >= 0) {
serial_txx9_register_ports(&serial_txx9_reg);
if (ret)
goto out;
serial_txx9_plat_devs = platform_device_alloc("serial_txx9", -1);
if (!serial_txx9_plat_devs) {
ret = -ENOMEM;
goto unreg_uart_drv;
}
ret = platform_device_add(serial_txx9_plat_devs);
if (ret)
goto put_dev;
serial_txx9_register_ports(&serial_txx9_reg,
&serial_txx9_plat_devs->dev);
ret = platform_driver_register(&serial_txx9_plat_driver);
if (ret)
goto del_dev;
#ifdef ENABLE_SERIAL_TXX9_PCI
ret = pci_register_driver(&serial_txx9_pci_driver);
ret = pci_register_driver(&serial_txx9_pci_driver);
#endif
}
if (ret == 0)
goto out;
del_dev:
platform_device_del(serial_txx9_plat_devs);
put_dev:
platform_device_put(serial_txx9_plat_devs);
unreg_uart_drv:
uart_unregister_driver(&serial_txx9_reg);
out:
return ret;
}
......@@ -1185,6 +1275,8 @@ static void __exit serial_txx9_exit(void)
#ifdef ENABLE_SERIAL_TXX9_PCI
pci_unregister_driver(&serial_txx9_pci_driver);
#endif
platform_driver_unregister(&serial_txx9_plat_driver);
platform_device_unregister(serial_txx9_plat_devs);
for (i = 0; i < UART_NR; i++) {
struct uart_txx9_port *up = &serial_txx9_ports[i];
if (up->port.iobase || up->port.mapbase)
......
......@@ -21,6 +21,7 @@
#define FPC_EIR 70
#define DSP_BASE 71 /* 3 more hi / lo register pairs */
#define DSP_CONTROL 77
#define ACX 78
/*
* This struct defines the way the registers are stored on the stack during a
......@@ -39,6 +40,9 @@ struct pt_regs {
unsigned long cp0_status;
unsigned long hi;
unsigned long lo;
#ifdef CONFIG_CPU_HAS_SMARTMIPS
unsigned long acx;
#endif
unsigned long cp0_badvaddr;
unsigned long cp0_cause;
unsigned long cp0_epc;
......
......@@ -23,7 +23,7 @@ struct sigcontext {
unsigned long long sc_pc;
unsigned long long sc_regs[32];
unsigned long long sc_fpregs[32];
unsigned int sc_ownedfp; /* Unused */
unsigned int sc_acx; /* Was sc_ownedfp */
unsigned int sc_fpc_csr;
unsigned int sc_fpc_eir; /* Unused */
unsigned int sc_used_math;
......@@ -79,7 +79,7 @@ struct sigcontext32 {
__u64 sc_pc;
__u64 sc_regs[32];
__u64 sc_fpregs[32];
__u32 sc_ownedfp; /* Unused */
__u32 sc_acx; /* Only MIPS32; was sc_ownedfp */
__u32 sc_fpc_csr;
__u32 sc_fpc_eir; /* Unused */
__u32 sc_used_math;
......
......@@ -29,16 +29,25 @@
.endm
.macro SAVE_TEMP
#ifdef CONFIG_CPU_HAS_SMARTMIPS
mflhxu v1
LONG_S v1, PT_LO(sp)
mflhxu v1
LONG_S v1, PT_HI(sp)
mflhxu v1
LONG_S v1, PT_ACX(sp)
#else
mfhi v1
LONG_S v1, PT_HI(sp)
mflo v1
LONG_S v1, PT_LO(sp)
#endif
#ifdef CONFIG_32BIT
LONG_S $8, PT_R8(sp)
LONG_S $9, PT_R9(sp)
#endif
LONG_S v1, PT_HI(sp)
mflo v1
LONG_S $10, PT_R10(sp)
LONG_S $11, PT_R11(sp)
LONG_S v1, PT_LO(sp)
LONG_S $12, PT_R12(sp)
LONG_S $13, PT_R13(sp)
LONG_S $14, PT_R14(sp)
......@@ -182,16 +191,25 @@
.endm
.macro RESTORE_TEMP
#ifdef CONFIG_CPU_HAS_SMARTMIPS
LONG_L $24, PT_ACX(sp)
mtlhx $24
LONG_L $24, PT_HI(sp)
mtlhx $24
LONG_L $24, PT_LO(sp)
mtlhx $24
#else
LONG_L $24, PT_LO(sp)
mtlo $24
LONG_L $24, PT_HI(sp)
mthi $24
#endif
#ifdef CONFIG_32BIT
LONG_L $8, PT_R8(sp)
LONG_L $9, PT_R9(sp)
#endif
mtlo $24
LONG_L $24, PT_HI(sp)
LONG_L $10, PT_R10(sp)
LONG_L $11, PT_R11(sp)
mthi $24
LONG_L $12, PT_R12(sp)
LONG_L $13, PT_R13(sp)
LONG_L $14, PT_R14(sp)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment