Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
cce0cac1
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cce0cac1
编写于
2月 08, 2006
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge master.kernel.org:/home/rmk/linux-2.6-arm
Manual conflict merge of arch/arm/Kconfig
上级
f564c5fe
18f49ea2
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
347 addition
and
137 deletion
+347
-137
arch/arm/Kconfig
arch/arm/Kconfig
+36
-8
arch/arm/configs/enp2611_defconfig
arch/arm/configs/enp2611_defconfig
+1
-1
arch/arm/configs/ixdp2400_defconfig
arch/arm/configs/ixdp2400_defconfig
+1
-1
arch/arm/configs/ixdp2401_defconfig
arch/arm/configs/ixdp2401_defconfig
+1
-1
arch/arm/configs/ixdp2801_defconfig
arch/arm/configs/ixdp2801_defconfig
+1
-1
arch/arm/configs/s3c2410_defconfig
arch/arm/configs/s3c2410_defconfig
+38
-13
arch/arm/kernel/calls.S
arch/arm/kernel/calls.S
+4
-4
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-armv.S
+16
-1
arch/arm/kernel/sys_oabi-compat.c
arch/arm/kernel/sys_oabi-compat.c
+71
-0
arch/arm/mach-clps711x/Kconfig
arch/arm/mach-clps711x/Kconfig
+2
-0
arch/arm/mach-ixp2000/enp2611.c
arch/arm/mach-ixp2000/enp2611.c
+1
-0
arch/arm/mach-ixp2000/ixdp2400.c
arch/arm/mach-ixp2000/ixdp2400.c
+1
-0
arch/arm/mach-ixp2000/ixdp2x01.c
arch/arm/mach-ixp2000/ixdp2x01.c
+4
-1
arch/arm/mach-omap1/board-generic.c
arch/arm/mach-omap1/board-generic.c
+2
-1
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h2.c
+2
-1
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-h3.c
+2
-1
arch/arm/mach-omap1/board-innovator.c
arch/arm/mach-omap1/board-innovator.c
+2
-1
arch/arm/mach-omap1/board-netstar.c
arch/arm/mach-omap1/board-netstar.c
+2
-1
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-osk.c
+2
-1
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmte.c
+2
-1
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/board-perseus2.c
+2
-1
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap1/board-voiceblue.c
+2
-1
arch/arm/mach-omap1/io.c
arch/arm/mach-omap1/io.c
+25
-17
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-generic.c
+2
-1
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-h4.c
+2
-1
arch/arm/mach-realview/core.c
arch/arm/mach-realview/core.c
+1
-1
arch/arm/mach-s3c2410/clock.c
arch/arm/mach-s3c2410/clock.c
+33
-10
arch/arm/mach-s3c2410/clock.h
arch/arm/mach-s3c2410/clock.h
+1
-0
arch/arm/mach-s3c2410/devs.c
arch/arm/mach-s3c2410/devs.c
+5
-0
arch/arm/plat-omap/sram.c
arch/arm/plat-omap/sram.c
+9
-0
drivers/serial/s3c2410.c
drivers/serial/s3c2410.c
+4
-0
include/asm-arm/arch-omap/io.h
include/asm-arm/arch-omap/io.h
+5
-1
include/asm-arm/mutex.h
include/asm-arm/mutex.h
+65
-66
未找到文件。
arch/arm/Kconfig
浏览文件 @
cce0cac1
...
@@ -10,9 +10,9 @@ config ARM
...
@@ -10,9 +10,9 @@ config ARM
default y
default y
help
help
The ARM series is a line of low-power-consumption RISC chip designs
The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM
l
td and targeted at embedded applications and
licensed by ARM
L
td and targeted at embedded applications and
handhelds such as the Compaq IPAQ. ARM-based PCs are no longer
handhelds such as the Compaq IPAQ. ARM-based PCs are no longer
manufactured, but
legacy ARM-based PC hardware remains popular in
manufactured, but legacy ARM-based PC hardware remains popular in
Europe. There is an ARM Linux project with a web page at
Europe. There is an ARM Linux project with a web page at
<http://www.arm.linux.org.uk/>.
<http://www.arm.linux.org.uk/>.
...
@@ -84,45 +84,62 @@ config ARCH_CLPS7500
...
@@ -84,45 +84,62 @@ config ARCH_CLPS7500
bool "Cirrus-CL-PS7500FE"
bool "Cirrus-CL-PS7500FE"
select TIMER_ACORN
select TIMER_ACORN
select ISA
select ISA
help
Support for the Cirrus Logic PS7500FE system-on-a-chip.
config ARCH_CLPS711X
config ARCH_CLPS711X
bool "CLPS711x/EP721x-based"
bool "CLPS711x/EP721x-based"
help
Support for Cirrus Logic 711x/721x based boards.
config ARCH_CO285
config ARCH_CO285
bool "Co-EBSA285"
bool "Co-EBSA285"
select FOOTBRIDGE
select FOOTBRIDGE
select FOOTBRIDGE_ADDIN
select FOOTBRIDGE_ADDIN
help
Support for Intel's EBSA285 companion chip.
config ARCH_EBSA110
config ARCH_EBSA110
bool "EBSA-110"
bool "EBSA-110"
select ISA
select ISA
help
help
This is an evaluation board for the StrongARM processor available
This is an evaluation board for the StrongARM processor available
from Digital. It has limited hardware on-board, including an
onboard
from Digital. It has limited hardware on-board, including an
Ethernet interface, two PCMCIA sockets, two serial ports and a
Ethernet interface, two PCMCIA sockets, two serial ports and a
parallel port.
parallel port.
config ARCH_FOOTBRIDGE
config ARCH_FOOTBRIDGE
bool "FootBridge"
bool "FootBridge"
select FOOTBRIDGE
select FOOTBRIDGE
help
Support for systems based on the DC21285 companion chip
("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
config ARCH_INTEGRATOR
config ARCH_INTEGRATOR
bool "Integrator"
bool "Integrator"
select ARM_AMBA
select ARM_AMBA
select ICST525
select ICST525
help
Support for ARM's Integrator platform.
config ARCH_IOP3XX
config ARCH_IOP3XX
bool "IOP3xx-based"
bool "IOP3xx-based"
select PCI
select PCI
help
Support for Intel's IOP3XX (XScale) family of processors.
config ARCH_IXP4XX
config ARCH_IXP4XX
bool "IXP4xx-based"
bool "IXP4xx-based"
select DMABOUNCE
select DMABOUNCE
select PCI
select PCI
help
Support for Intel's IXP4XX (XScale) family of processors.
config ARCH_IXP2000
config ARCH_IXP2000
bool "IXP2400/2800-based"
bool "IXP2400/2800-based"
select PCI
select PCI
help
Support for Intel's IXP2400/2800 (XScale) family of processors.
config ARCH_L7200
config ARCH_L7200
bool "LinkUp-L7200"
bool "LinkUp-L7200"
...
@@ -140,6 +157,8 @@ config ARCH_L7200
...
@@ -140,6 +157,8 @@ config ARCH_L7200
config ARCH_PXA
config ARCH_PXA
bool "PXA2xx-based"
bool "PXA2xx-based"
select ARCH_MTD_XIP
select ARCH_MTD_XIP
help
Support for Intel's PXA2XX processor line.
config ARCH_RPC
config ARCH_RPC
bool "RiscPC"
bool "RiscPC"
...
@@ -157,19 +176,24 @@ config ARCH_SA1100
...
@@ -157,19 +176,24 @@ config ARCH_SA1100
select ISA
select ISA
select ARCH_DISCONTIGMEM_ENABLE
select ARCH_DISCONTIGMEM_ENABLE
select ARCH_MTD_XIP
select ARCH_MTD_XIP
help
Support for StrongARM 11x0 based boards.
config ARCH_S3C2410
config ARCH_S3C2410
bool "Samsung S3C2410"
bool "Samsung S3C2410"
help
help
Samsung S3C2410X CPU based systems, such as the Simtec Electronics
Samsung S3C2410X CPU based systems, such as the Simtec Electronics
BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or
BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or
the Samsung SMDK2410 development board (and der
vi
atives).
the Samsung SMDK2410 development board (and der
iv
atives).
config ARCH_SHARK
config ARCH_SHARK
bool "Shark"
bool "Shark"
select ISA
select ISA
select ISA_DMA
select ISA_DMA
select PCI
select PCI
help
Support for the StrongARM based Digital DNARD machine, also known
as "Shark" (<http://www.shark-linux.de/shark.html>).
config ARCH_LH7A40X
config ARCH_LH7A40X
bool "Sharp LH7A40X"
bool "Sharp LH7A40X"
...
@@ -181,6 +205,8 @@ config ARCH_LH7A40X
...
@@ -181,6 +205,8 @@ config ARCH_LH7A40X
config ARCH_OMAP
config ARCH_OMAP
bool "TI OMAP"
bool "TI OMAP"
help
Support for TI's OMAP platform (OMAP1 and OMAP2).
config ARCH_VERSATILE
config ARCH_VERSATILE
bool "Versatile"
bool "Versatile"
...
@@ -199,6 +225,8 @@ config ARCH_REALVIEW
...
@@ -199,6 +225,8 @@ config ARCH_REALVIEW
config ARCH_IMX
config ARCH_IMX
bool "IMX"
bool "IMX"
help
Support for Motorola's i.MX family of processors (MX1, MXL).
config ARCH_H720X
config ARCH_H720X
bool "Hynix-HMS720x-based"
bool "Hynix-HMS720x-based"
...
@@ -215,8 +243,8 @@ config ARCH_AAEC2000
...
@@ -215,8 +243,8 @@ config ARCH_AAEC2000
config ARCH_AT91RM9200
config ARCH_AT91RM9200
bool "AT91RM9200"
bool "AT91RM9200"
help
help
Say Y here if you intend to run this kernel on an A
T91RM9200-based
Say Y here if you intend to run this kernel on an A
tmel
board.
AT91RM9200-based
board.
endchoice
endchoice
...
@@ -422,8 +450,8 @@ config AEABI
...
@@ -422,8 +450,8 @@ config AEABI
To use this you need GCC version 4.0.0 or later.
To use this you need GCC version 4.0.0 or later.
config OABI_COMPAT
config OABI_COMPAT
bool "Allow old ABI binaries to run with this kernel"
bool "Allow old ABI binaries to run with this kernel
(EXPERIMENTAL)
"
depends on AEABI
depends on AEABI
&& EXPERIMENTAL
default y
default y
help
help
This option preserves the old syscall interface along with the
This option preserves the old syscall interface along with the
...
...
arch/arm/configs/enp2611_defconfig
浏览文件 @
cce0cac1
...
@@ -171,7 +171,7 @@ CONFIG_ALIGNMENT_TRAP=y
...
@@ -171,7 +171,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0
pci=firmware
"
CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0"
# CONFIG_XIP_KERNEL is not set
# CONFIG_XIP_KERNEL is not set
#
#
...
...
arch/arm/configs/ixdp2400_defconfig
浏览文件 @
cce0cac1
...
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
...
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0
pci=firmware
"
CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0"
# CONFIG_XIP_KERNEL is not set
# CONFIG_XIP_KERNEL is not set
#
#
...
...
arch/arm/configs/ixdp2401_defconfig
浏览文件 @
cce0cac1
...
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
...
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0
pci=firmware
"
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0"
# CONFIG_XIP_KERNEL is not set
# CONFIG_XIP_KERNEL is not set
#
#
...
...
arch/arm/configs/ixdp2801_defconfig
浏览文件 @
cce0cac1
...
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
...
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0
pci=firmware ixdp2x01_clock=50000000
"
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0"
# CONFIG_XIP_KERNEL is not set
# CONFIG_XIP_KERNEL is not set
#
#
...
...
arch/arm/configs/s3c2410_defconfig
浏览文件 @
cce0cac1
#
#
# Automatically generated make config: don't edit
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.1
5-rc1
# Linux kernel version: 2.6.1
6-rc2
#
Sun Nov 13 17:41:24 2005
#
Mon Feb 6 11:17:23 2006
#
#
CONFIG_ARM=y
CONFIG_ARM=y
CONFIG_MMU=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
...
@@ -28,27 +27,31 @@ CONFIG_SYSVIPC=y
...
@@ -28,27 +27,31 @@ CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
# CONFIG_AUDIT is not set
# CONFIG_HOTPLUG is not set
CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
# CONFIG_IKCONFIG is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_INITRAMFS_SOURCE=""
CONFIG_UID16=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_EMBEDDED is not set
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_EPOLL=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
CONFIG_CC_ALIGN_JUMPS=0
CONFIG_SLAB=y
# CONFIG_TINY_SHMEM is not set
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
CONFIG_OBSOLETE_INTERMODULE=y
#
#
# Loadable module support
# Loadable module support
...
@@ -102,6 +105,7 @@ CONFIG_ARCH_S3C2410=y
...
@@ -102,6 +105,7 @@ CONFIG_ARCH_S3C2410=y
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_AT91RM9200 is not set
#
#
# S3C24XX Implementations
# S3C24XX Implementations
...
@@ -160,7 +164,6 @@ CONFIG_CPU_TLB_V4WBI=y
...
@@ -160,7 +164,6 @@ CONFIG_CPU_TLB_V4WBI=y
# Bus support
# Bus support
#
#
CONFIG_ISA=y
CONFIG_ISA=y
CONFIG_ISA_DMA_API=y
#
#
# PCCARD (PCMCIA/CardBus) support
# PCCARD (PCMCIA/CardBus) support
...
@@ -172,6 +175,7 @@ CONFIG_ISA_DMA_API=y
...
@@ -172,6 +175,7 @@ CONFIG_ISA_DMA_API=y
#
#
# CONFIG_PREEMPT is not set
# CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
# CONFIG_NO_IDLE_HZ is not set
# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM_MANUAL=y
...
@@ -214,6 +218,8 @@ CONFIG_BINFMT_AOUT=y
...
@@ -214,6 +218,8 @@ CONFIG_BINFMT_AOUT=y
# Power management options
# Power management options
#
#
CONFIG_PM=y
CONFIG_PM=y
CONFIG_PM_LEGACY=y
# CONFIG_PM_DEBUG is not set
CONFIG_APM=y
CONFIG_APM=y
#
#
...
@@ -259,6 +265,11 @@ CONFIG_TCP_CONG_BIC=y
...
@@ -259,6 +265,11 @@ CONFIG_TCP_CONG_BIC=y
# SCTP Configuration (EXPERIMENTAL)
# SCTP Configuration (EXPERIMENTAL)
#
#
# CONFIG_IP_SCTP is not set
# CONFIG_IP_SCTP is not set
#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_VLAN_8021Q is not set
...
@@ -276,7 +287,6 @@ CONFIG_TCP_CONG_BIC=y
...
@@ -276,7 +287,6 @@ CONFIG_TCP_CONG_BIC=y
# QoS and/or fair queueing
# QoS and/or fair queueing
#
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
#
# Network testing
# Network testing
...
@@ -299,6 +309,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
...
@@ -299,6 +309,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DRIVER is not set
#
# Connector - unified userspace <-> kernelspace linker
#
# CONFIG_CONNECTOR is not set
#
#
# Memory Technology Devices (MTD)
# Memory Technology Devices (MTD)
#
#
...
@@ -412,8 +427,6 @@ CONFIG_PARPORT_1284=y
...
@@ -412,8 +427,6 @@ CONFIG_PARPORT_1284=y
#
#
# Block devices
# Block devices
#
#
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
...
@@ -502,7 +515,6 @@ CONFIG_NETDEVICES=y
...
@@ -502,7 +515,6 @@ CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_MII=y
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_SMC91X is not set
# CONFIG_SMC91X is not set
CONFIG_DM9000=y
CONFIG_DM9000=y
...
@@ -607,11 +619,11 @@ CONFIG_SERIAL_NONSTANDARD=y
...
@@ -607,11 +619,11 @@ CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_ROCKETPORT is not set
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_ESPSERIAL is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set
# CONFIG_ISI is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINK_GT is not set
# CONFIG_N_HDLC is not set
# CONFIG_N_HDLC is not set
# CONFIG_RISCOM8 is not set
# CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set
# CONFIG_SPECIALIX is not set
...
@@ -625,6 +637,7 @@ CONFIG_SERIAL_NONSTANDARD=y
...
@@ -625,6 +637,7 @@ CONFIG_SERIAL_NONSTANDARD=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=8
CONFIG_SERIAL_8250_NR_UARTS=8
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
...
@@ -687,6 +700,7 @@ CONFIG_S3C2410_RTC=y
...
@@ -687,6 +700,7 @@ CONFIG_S3C2410_RTC=y
#
#
# TPM devices
# TPM devices
#
#
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
# CONFIG_TELCLOCK is not set
#
#
...
@@ -730,6 +744,12 @@ CONFIG_SENSORS_EEPROM=m
...
@@ -730,6 +744,12 @@ CONFIG_SENSORS_EEPROM=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
#
#
# Hardware Monitoring support
# Hardware Monitoring support
#
#
...
@@ -863,6 +883,7 @@ CONFIG_FS_MBCACHE=y
...
@@ -863,6 +883,7 @@ CONFIG_FS_MBCACHE=y
# CONFIG_JFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_MINIX_FS is not set
CONFIG_ROMFS_FS=y
CONFIG_ROMFS_FS=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY=y
...
@@ -897,6 +918,7 @@ CONFIG_SYSFS=y
...
@@ -897,6 +918,7 @@ CONFIG_SYSFS=y
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
CONFIG_RAMFS=y
# CONFIG_RELAYFS_FS is not set
# CONFIG_RELAYFS_FS is not set
# CONFIG_CONFIGFS_FS is not set
#
#
# Miscellaneous filesystems
# Miscellaneous filesystems
...
@@ -965,6 +987,7 @@ CONFIG_SOLARIS_X86_PARTITION=y
...
@@ -965,6 +987,7 @@ CONFIG_SOLARIS_X86_PARTITION=y
# CONFIG_SGI_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
#
#
...
@@ -1020,12 +1043,13 @@ CONFIG_NLS_DEFAULT="iso8859-1"
...
@@ -1020,12 +1043,13 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# Kernel hacking
# Kernel hacking
#
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_PRINTK_TIME is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=16
CONFIG_LOG_BUF_SHIFT=16
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_KOBJECT is not set
...
@@ -1034,6 +1058,7 @@ CONFIG_DEBUG_INFO=y
...
@@ -1034,6 +1058,7 @@ CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VM is not set
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_POINTER=y
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_WAITQ is not set
# CONFIG_DEBUG_WAITQ is not set
...
...
arch/arm/kernel/calls.S
浏览文件 @
cce0cac1
...
@@ -291,21 +291,21 @@
...
@@ -291,21 +291,21 @@
CALL
(
sys_mq_getsetattr
)
CALL
(
sys_mq_getsetattr
)
/*
280
*/
CALL
(
sys_waitid
)
/*
280
*/
CALL
(
sys_waitid
)
CALL
(
sys_socket
)
CALL
(
sys_socket
)
CALL
(
sys_bind
)
CALL
(
ABI
(
sys_bind
,
sys_oabi_bind
)
)
CALL
(
sys_connect
)
CALL
(
ABI
(
sys_connect
,
sys_oabi_connect
)
)
CALL
(
sys_listen
)
CALL
(
sys_listen
)
/*
285
*/
CALL
(
sys_accept
)
/*
285
*/
CALL
(
sys_accept
)
CALL
(
sys_getsockname
)
CALL
(
sys_getsockname
)
CALL
(
sys_getpeername
)
CALL
(
sys_getpeername
)
CALL
(
sys_socketpair
)
CALL
(
sys_socketpair
)
CALL
(
sys_send
)
CALL
(
sys_send
)
/*
290
*/
CALL
(
sys_sendto
)
/*
290
*/
CALL
(
ABI
(
sys_sendto
,
sys_oabi_sendto
)
)
CALL
(
sys_recv
)
CALL
(
sys_recv
)
CALL
(
sys_recvfrom
)
CALL
(
sys_recvfrom
)
CALL
(
sys_shutdown
)
CALL
(
sys_shutdown
)
CALL
(
sys_setsockopt
)
CALL
(
sys_setsockopt
)
/*
295
*/
CALL
(
sys_getsockopt
)
/*
295
*/
CALL
(
sys_getsockopt
)
CALL
(
sys_sendmsg
)
CALL
(
ABI
(
sys_sendmsg
,
sys_oabi_sendmsg
)
)
CALL
(
sys_recvmsg
)
CALL
(
sys_recvmsg
)
CALL
(
ABI
(
sys_semop
,
sys_oabi_semop
))
CALL
(
ABI
(
sys_semop
,
sys_oabi_semop
))
CALL
(
sys_semget
)
CALL
(
sys_semget
)
...
...
arch/arm/kernel/entry-armv.S
浏览文件 @
cce0cac1
...
@@ -333,9 +333,13 @@ __pabt_svc:
...
@@ -333,9 +333,13 @@ __pabt_svc:
@
from
the
exception
stack
@
from
the
exception
stack
#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
#ifndef CONFIG_MMU
#warning "NPTL on non MMU needs fixing"
#else
@
make
sure
our
user
space
atomic
helper
is
aborted
@
make
sure
our
user
space
atomic
helper
is
aborted
cmp
r2
,
#
TASK_SIZE
cmp
r2
,
#
TASK_SIZE
bichs
r3
,
r3
,
#
PSR_Z_BIT
bichs
r3
,
r3
,
#
PSR_Z_BIT
#endif
#endif
#endif
@
@
...
@@ -705,7 +709,12 @@ __kuser_memory_barrier: @ 0xffff0fa0
...
@@ -705,7 +709,12 @@ __kuser_memory_barrier: @ 0xffff0fa0
*
The
C
flag
is
also
set
if
*
ptr
was
changed
to
allow
for
assembly
*
The
C
flag
is
also
set
if
*
ptr
was
changed
to
allow
for
assembly
*
optimization
in
the
calling
code
.
*
optimization
in
the
calling
code
.
*
*
*
Note
:
this
routine
already
includes
memory
barriers
as
needed
.
*
Notes
:
*
*
-
This
routine
already
includes
memory
barriers
as
needed
.
*
*
-
A
failure
might
be
transient
,
i
.
e
.
it
is
possible
,
although
unlikely
,
*
that
"failure"
be
returned
even
if
*
ptr
==
oldval
.
*
*
*
For
example
,
a
user
space
atomic_add
implementation
could
look
like
this
:
*
For
example
,
a
user
space
atomic_add
implementation
could
look
like
this
:
*
*
...
@@ -756,12 +765,18 @@ __kuser_cmpxchg: @ 0xffff0fc0
...
@@ -756,12 +765,18 @@ __kuser_cmpxchg: @ 0xffff0fc0
*
exception
happening
just
after
the
str
instruction
which
would
*
exception
happening
just
after
the
str
instruction
which
would
*
clear
the
Z
flag
although
the
exchange
was
done
.
*
clear
the
Z
flag
although
the
exchange
was
done
.
*/
*/
#ifdef CONFIG_MMU
teq
ip
,
ip
@
set
Z
flag
teq
ip
,
ip
@
set
Z
flag
ldr
ip
,
[
r2
]
@
load
current
val
ldr
ip
,
[
r2
]
@
load
current
val
add
r3
,
r2
,
#
1
@
prepare
store
ptr
add
r3
,
r2
,
#
1
@
prepare
store
ptr
teqeq
ip
,
r0
@
compare
with
oldval
if
still
allowed
teqeq
ip
,
r0
@
compare
with
oldval
if
still
allowed
streq
r1
,
[
r3
,
#-
1
]!
@
store
newval
if
still
allowed
streq
r1
,
[
r3
,
#-
1
]!
@
store
newval
if
still
allowed
subs
r0
,
r2
,
r3
@
if
r2
==
r3
the
str
occured
subs
r0
,
r2
,
r3
@
if
r2
==
r3
the
str
occured
#else
#warning "NPTL on non MMU needs fixing"
mov
r0
,
#-
1
adds
r0
,
r0
,
#
0
#endif
mov
pc
,
lr
mov
pc
,
lr
#else
#else
...
...
arch/arm/kernel/sys_oabi-compat.c
浏览文件 @
cce0cac1
...
@@ -59,6 +59,16 @@
...
@@ -59,6 +59,16 @@
* struct sembuf loses its padding with EABI. Since arrays of them are
* struct sembuf loses its padding with EABI. Since arrays of them are
* used they have to be copyed to remove the padding. Compatibility wrappers
* used they have to be copyed to remove the padding. Compatibility wrappers
* provided below.
* provided below.
*
* sys_bind:
* sys_connect:
* sys_sendmsg:
* sys_sendto:
*
* struct sockaddr_un loses its padding with EABI. Since the size of the
* structure is used as a validation test in unix_mkname(), we need to
* change the length argument to 110 whenever it is 112. Compatibility
* wrappers provided below.
*/
*/
#include <linux/syscalls.h>
#include <linux/syscalls.h>
...
@@ -67,6 +77,7 @@
...
@@ -67,6 +77,7 @@
#include <linux/fcntl.h>
#include <linux/fcntl.h>
#include <linux/eventpoll.h>
#include <linux/eventpoll.h>
#include <linux/sem.h>
#include <linux/sem.h>
#include <linux/socket.h>
#include <asm/ipc.h>
#include <asm/ipc.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
...
@@ -337,3 +348,63 @@ asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
...
@@ -337,3 +348,63 @@ asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
return
sys_ipc
(
call
,
first
,
second
,
third
,
ptr
,
fifth
);
return
sys_ipc
(
call
,
first
,
second
,
third
,
ptr
,
fifth
);
}
}
}
}
asmlinkage
long
sys_oabi_bind
(
int
fd
,
struct
sockaddr
__user
*
addr
,
int
addrlen
)
{
sa_family_t
sa_family
;
if
(
addrlen
==
112
&&
get_user
(
sa_family
,
&
addr
->
sa_family
)
==
0
&&
sa_family
==
AF_UNIX
)
addrlen
=
110
;
return
sys_bind
(
fd
,
addr
,
addrlen
);
}
asmlinkage
long
sys_oabi_connect
(
int
fd
,
struct
sockaddr
__user
*
addr
,
int
addrlen
)
{
sa_family_t
sa_family
;
if
(
addrlen
==
112
&&
get_user
(
sa_family
,
&
addr
->
sa_family
)
==
0
&&
sa_family
==
AF_UNIX
)
addrlen
=
110
;
return
sys_connect
(
fd
,
addr
,
addrlen
);
}
asmlinkage
long
sys_oabi_sendto
(
int
fd
,
void
__user
*
buff
,
size_t
len
,
unsigned
flags
,
struct
sockaddr
__user
*
addr
,
int
addrlen
)
{
sa_family_t
sa_family
;
if
(
addrlen
==
112
&&
get_user
(
sa_family
,
&
addr
->
sa_family
)
==
0
&&
sa_family
==
AF_UNIX
)
addrlen
=
110
;
return
sys_sendto
(
fd
,
buff
,
len
,
flags
,
addr
,
addrlen
);
}
asmlinkage
long
sys_oabi_sendmsg
(
int
fd
,
struct
msghdr
__user
*
msg
,
unsigned
flags
)
{
struct
sockaddr
__user
*
addr
;
int
msg_namelen
;
sa_family_t
sa_family
;
if
(
msg
&&
get_user
(
msg_namelen
,
&
msg
->
msg_namelen
)
==
0
&&
msg_namelen
==
112
&&
get_user
(
addr
,
&
msg
->
msg_name
)
==
0
&&
get_user
(
sa_family
,
&
addr
->
sa_family
)
==
0
&&
sa_family
==
AF_UNIX
)
{
/*
* HACK ALERT: there is a limit to how much backward bending
* we should do for what is actually a transitional
* compatibility layer. This already has known flaws with
* a few ioctls that we don't intend to fix. Therefore
* consider this blatent hack as another one... and take care
* to run for cover. In most cases it will "just work fine".
* If it doesn't, well, tough.
*/
put_user
(
110
,
&
msg
->
msg_namelen
);
}
return
sys_sendmsg
(
fd
,
msg
,
flags
);
}
arch/arm/mach-clps711x/Kconfig
浏览文件 @
cce0cac1
...
@@ -24,6 +24,8 @@ config ARCH_CEIVA
...
@@ -24,6 +24,8 @@ config ARCH_CEIVA
config ARCH_CLEP7312
config ARCH_CLEP7312
bool "CLEP7312"
bool "CLEP7312"
help
Boards based on the Cirrus Logic 7212/7312 chips.
config ARCH_EDB7211
config ARCH_EDB7211
bool "EDB7211"
bool "EDB7211"
...
...
arch/arm/mach-ixp2000/enp2611.c
浏览文件 @
cce0cac1
...
@@ -106,6 +106,7 @@ static void __init enp2611_pci_preinit(void)
...
@@ -106,6 +106,7 @@ static void __init enp2611_pci_preinit(void)
{
{
ixp2000_reg_write
(
IXP2000_PCI_ADDR_EXT
,
0x00100000
);
ixp2000_reg_write
(
IXP2000_PCI_ADDR_EXT
,
0x00100000
);
ixp2000_pci_preinit
();
ixp2000_pci_preinit
();
pcibios_setup
(
"firmware"
);
}
}
static
inline
int
enp2611_pci_valid_device
(
struct
pci_bus
*
bus
,
static
inline
int
enp2611_pci_valid_device
(
struct
pci_bus
*
bus
,
...
...
arch/arm/mach-ixp2000/ixdp2400.c
浏览文件 @
cce0cac1
...
@@ -68,6 +68,7 @@ void __init ixdp2400_pci_preinit(void)
...
@@ -68,6 +68,7 @@ void __init ixdp2400_pci_preinit(void)
{
{
ixp2000_reg_write
(
IXP2000_PCI_ADDR_EXT
,
0x00100000
);
ixp2000_reg_write
(
IXP2000_PCI_ADDR_EXT
,
0x00100000
);
ixp2000_pci_preinit
();
ixp2000_pci_preinit
();
pcibios_setup
(
"firmware"
);
}
}
int
ixdp2400_pci_setup
(
int
nr
,
struct
pci_sys_data
*
sys
)
int
ixdp2400_pci_setup
(
int
nr
,
struct
pci_sys_data
*
sys
)
...
...
arch/arm/mach-ixp2000/ixdp2x01.c
浏览文件 @
cce0cac1
...
@@ -212,6 +212,7 @@ void __init ixdp2x01_pci_preinit(void)
...
@@ -212,6 +212,7 @@ void __init ixdp2x01_pci_preinit(void)
{
{
ixp2000_reg_write
(
IXP2000_PCI_ADDR_EXT
,
0x00000000
);
ixp2000_reg_write
(
IXP2000_PCI_ADDR_EXT
,
0x00000000
);
ixp2000_pci_preinit
();
ixp2000_pci_preinit
();
pcibios_setup
(
"firmware"
);
}
}
#define DEVPIN(dev, pin) ((pin) | ((dev) << 3))
#define DEVPIN(dev, pin) ((pin) | ((dev) << 3))
...
@@ -299,7 +300,9 @@ struct hw_pci ixdp2x01_pci __initdata = {
...
@@ -299,7 +300,9 @@ struct hw_pci ixdp2x01_pci __initdata = {
int
__init
ixdp2x01_pci_init
(
void
)
int
__init
ixdp2x01_pci_init
(
void
)
{
{
pci_common_init
(
&
ixdp2x01_pci
);
if
(
machine_is_ixdp2401
()
||
machine_is_ixdp2801
())
pci_common_init
(
&
ixdp2x01_pci
);
return
0
;
return
0
;
}
}
...
...
arch/arm/mach-omap1/board-generic.c
浏览文件 @
cce0cac1
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
static
void
__init
omap_generic_init_irq
(
void
)
static
void
__init
omap_generic_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
}
}
...
@@ -104,7 +105,7 @@ static void __init omap_generic_init(void)
...
@@ -104,7 +105,7 @@ static void __init omap_generic_init(void)
static
void
__init
omap_generic_map_io
(
void
)
static
void
__init
omap_generic_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
MACHINE_START
(
OMAP_GENERIC
,
"Generic OMAP1510/1610/1710"
)
MACHINE_START
(
OMAP_GENERIC
,
"Generic OMAP1510/1610/1710"
)
...
...
arch/arm/mach-omap1/board-h2.c
浏览文件 @
cce0cac1
...
@@ -128,6 +128,7 @@ static void __init h2_init_smc91x(void)
...
@@ -128,6 +128,7 @@ static void __init h2_init_smc91x(void)
static
void
__init
h2_init_irq
(
void
)
static
void
__init
h2_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
h2_init_smc91x
();
h2_init_smc91x
();
...
@@ -194,7 +195,7 @@ static void __init h2_init(void)
...
@@ -194,7 +195,7 @@ static void __init h2_init(void)
static
void
__init
h2_map_io
(
void
)
static
void
__init
h2_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
MACHINE_START
(
OMAP_H2
,
"TI-H2"
)
MACHINE_START
(
OMAP_H2
,
"TI-H2"
)
...
...
arch/arm/mach-omap1/board-h3.c
浏览文件 @
cce0cac1
...
@@ -203,6 +203,7 @@ static void __init h3_init_smc91x(void)
...
@@ -203,6 +203,7 @@ static void __init h3_init_smc91x(void)
void
h3_init_irq
(
void
)
void
h3_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
h3_init_smc91x
();
h3_init_smc91x
();
...
@@ -210,7 +211,7 @@ void h3_init_irq(void)
...
@@ -210,7 +211,7 @@ void h3_init_irq(void)
static
void
__init
h3_map_io
(
void
)
static
void
__init
h3_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
MACHINE_START
(
OMAP_H3
,
"TI OMAP1710 H3 board"
)
MACHINE_START
(
OMAP_H3
,
"TI OMAP1710 H3 board"
)
...
...
arch/arm/mach-omap1/board-innovator.c
浏览文件 @
cce0cac1
...
@@ -181,6 +181,7 @@ static void __init innovator_init_smc91x(void)
...
@@ -181,6 +181,7 @@ static void __init innovator_init_smc91x(void)
void
innovator_init_irq
(
void
)
void
innovator_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
#ifdef CONFIG_ARCH_OMAP15XX
#ifdef CONFIG_ARCH_OMAP15XX
...
@@ -285,7 +286,7 @@ static void __init innovator_init(void)
...
@@ -285,7 +286,7 @@ static void __init innovator_init(void)
static
void
__init
innovator_map_io
(
void
)
static
void
__init
innovator_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
#ifdef CONFIG_ARCH_OMAP15XX
#ifdef CONFIG_ARCH_OMAP15XX
if
(
cpu_is_omap1510
())
{
if
(
cpu_is_omap1510
())
{
...
...
arch/arm/mach-omap1/board-netstar.c
浏览文件 @
cce0cac1
...
@@ -65,6 +65,7 @@ static struct omap_board_config_kernel netstar_config[] = {
...
@@ -65,6 +65,7 @@ static struct omap_board_config_kernel netstar_config[] = {
static
void
__init
netstar_init_irq
(
void
)
static
void
__init
netstar_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
}
}
...
@@ -108,7 +109,7 @@ static void __init netstar_init(void)
...
@@ -108,7 +109,7 @@ static void __init netstar_init(void)
static
void
__init
netstar_map_io
(
void
)
static
void
__init
netstar_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
#define MACHINE_PANICED 1
#define MACHINE_PANICED 1
...
...
arch/arm/mach-omap1/board-osk.c
浏览文件 @
cce0cac1
...
@@ -169,6 +169,7 @@ static void __init osk_init_cf(void)
...
@@ -169,6 +169,7 @@ static void __init osk_init_cf(void)
static
void
__init
osk_init_irq
(
void
)
static
void
__init
osk_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
osk_init_smc91x
();
osk_init_smc91x
();
...
@@ -269,7 +270,7 @@ static void __init osk_init(void)
...
@@ -269,7 +270,7 @@ static void __init osk_init(void)
static
void
__init
osk_map_io
(
void
)
static
void
__init
osk_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
MACHINE_START
(
OMAP_OSK
,
"TI-OSK"
)
MACHINE_START
(
OMAP_OSK
,
"TI-OSK"
)
...
...
arch/arm/mach-omap1/board-palmte.c
浏览文件 @
cce0cac1
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
static
void
__init
omap_generic_init_irq
(
void
)
static
void
__init
omap_generic_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
}
}
...
@@ -72,7 +73,7 @@ static void __init omap_generic_init(void)
...
@@ -72,7 +73,7 @@ static void __init omap_generic_init(void)
static
void
__init
omap_generic_map_io
(
void
)
static
void
__init
omap_generic_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
MACHINE_START
(
OMAP_PALMTE
,
"OMAP310 based Palm Tungsten E"
)
MACHINE_START
(
OMAP_PALMTE
,
"OMAP310 based Palm Tungsten E"
)
...
...
arch/arm/mach-omap1/board-perseus2.c
浏览文件 @
cce0cac1
...
@@ -144,6 +144,7 @@ static void __init perseus2_init_smc91x(void)
...
@@ -144,6 +144,7 @@ static void __init perseus2_init_smc91x(void)
void
omap_perseus2_init_irq
(
void
)
void
omap_perseus2_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
perseus2_init_smc91x
();
perseus2_init_smc91x
();
...
@@ -160,7 +161,7 @@ static struct map_desc omap_perseus2_io_desc[] __initdata = {
...
@@ -160,7 +161,7 @@ static struct map_desc omap_perseus2_io_desc[] __initdata = {
static
void
__init
omap_perseus2_map_io
(
void
)
static
void
__init
omap_perseus2_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
iotable_init
(
omap_perseus2_io_desc
,
iotable_init
(
omap_perseus2_io_desc
,
ARRAY_SIZE
(
omap_perseus2_io_desc
));
ARRAY_SIZE
(
omap_perseus2_io_desc
));
...
...
arch/arm/mach-omap1/board-voiceblue.c
浏览文件 @
cce0cac1
...
@@ -162,6 +162,7 @@ static struct omap_board_config_kernel voiceblue_config[] = {
...
@@ -162,6 +162,7 @@ static struct omap_board_config_kernel voiceblue_config[] = {
static
void
__init
voiceblue_init_irq
(
void
)
static
void
__init
voiceblue_init_irq
(
void
)
{
{
omap1_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
}
}
...
@@ -206,7 +207,7 @@ static void __init voiceblue_init(void)
...
@@ -206,7 +207,7 @@ static void __init voiceblue_init(void)
static
void
__init
voiceblue_map_io
(
void
)
static
void
__init
voiceblue_map_io
(
void
)
{
{
omap_map_common_io
();
omap
1
_map_common_io
();
}
}
#define MACHINE_PANICED 1
#define MACHINE_PANICED 1
...
...
arch/arm/mach-omap1/io.c
浏览文件 @
cce0cac1
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/init.h>
#include <asm/tlb.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/arch/mux.h>
#include <asm/arch/mux.h>
...
@@ -83,15 +84,24 @@ static struct map_desc omap16xx_io_desc[] __initdata = {
...
@@ -83,15 +84,24 @@ static struct map_desc omap16xx_io_desc[] __initdata = {
};
};
#endif
#endif
static
int
initialized
=
0
;
/*
* Maps common IO regions for omap1. This should only get called from
static
void
__init
_omap_map_io
(
void
)
* board specific init.
*/
void
__init
omap1_map_common_io
(
void
)
{
{
initialized
=
1
;
/* We have to initialize the IO space mapping before we can run
* cpu_is_omapxxx() macros. */
iotable_init
(
omap_io_desc
,
ARRAY_SIZE
(
omap_io_desc
));
iotable_init
(
omap_io_desc
,
ARRAY_SIZE
(
omap_io_desc
));
/* Normally devicemaps_init() would flush caches and tlb after
* mdesc->map_io(), but we must also do it here because of the CPU
* revision check below.
*/
local_flush_tlb_all
();
flush_cache_all
();
/* We want to check CPU revision early for cpu_is_omapxxxx() macros.
* IO space mapping must be initialized before we can do that.
*/
omap_check_revision
();
omap_check_revision
();
#ifdef CONFIG_ARCH_OMAP730
#ifdef CONFIG_ARCH_OMAP730
...
@@ -111,7 +121,14 @@ static void __init _omap_map_io(void)
...
@@ -111,7 +121,14 @@ static void __init _omap_map_io(void)
#endif
#endif
omap_sram_init
();
omap_sram_init
();
}
/*
* Common low-level hardware init for omap1. This should only get called from
* board specific init.
*/
void
__init
omap1_init_common_hw
()
{
/* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort
/* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort
* on a Posted Write in the TIPB Bridge".
* on a Posted Write in the TIPB Bridge".
*/
*/
...
@@ -121,16 +138,7 @@ static void __init _omap_map_io(void)
...
@@ -121,16 +138,7 @@ static void __init _omap_map_io(void)
/* Must init clocks early to assure that timer interrupt works
/* Must init clocks early to assure that timer interrupt works
*/
*/
omap1_clk_init
();
omap1_clk_init
();
}
/*
omap1_mux_init
();
* This should only get called from board specific init
*/
void
__init
omap_map_common_io
(
void
)
{
if
(
!
initialized
)
{
_omap_map_io
();
omap1_mux_init
();
}
}
}
arch/arm/mach-omap2/board-generic.c
浏览文件 @
cce0cac1
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
static
void
__init
omap_generic_init_irq
(
void
)
static
void
__init
omap_generic_init_irq
(
void
)
{
{
omap2_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
}
}
...
@@ -64,7 +65,7 @@ static void __init omap_generic_init(void)
...
@@ -64,7 +65,7 @@ static void __init omap_generic_init(void)
static
void
__init
omap_generic_map_io
(
void
)
static
void
__init
omap_generic_map_io
(
void
)
{
{
omap_map_common_io
();
omap
2
_map_common_io
();
}
}
MACHINE_START
(
OMAP_GENERIC
,
"Generic OMAP24xx"
)
MACHINE_START
(
OMAP_GENERIC
,
"Generic OMAP24xx"
)
...
...
arch/arm/mach-omap2/board-h4.c
浏览文件 @
cce0cac1
...
@@ -136,6 +136,7 @@ static inline void __init h4_init_smc91x(void)
...
@@ -136,6 +136,7 @@ static inline void __init h4_init_smc91x(void)
static
void
__init
omap_h4_init_irq
(
void
)
static
void
__init
omap_h4_init_irq
(
void
)
{
{
omap2_init_common_hw
();
omap_init_irq
();
omap_init_irq
();
omap_gpio_init
();
omap_gpio_init
();
h4_init_smc91x
();
h4_init_smc91x
();
...
@@ -181,7 +182,7 @@ static void __init omap_h4_init(void)
...
@@ -181,7 +182,7 @@ static void __init omap_h4_init(void)
static
void
__init
omap_h4_map_io
(
void
)
static
void
__init
omap_h4_map_io
(
void
)
{
{
omap_map_common_io
();
omap
2
_map_common_io
();
}
}
MACHINE_START
(
OMAP_H4
,
"OMAP2420 H4 board"
)
MACHINE_START
(
OMAP_H4
,
"OMAP2420 H4 board"
)
...
...
arch/arm/mach-realview/core.c
浏览文件 @
cce0cac1
...
@@ -182,7 +182,7 @@ static const struct icst307_params realview_oscvco_params = {
...
@@ -182,7 +182,7 @@ static const struct icst307_params realview_oscvco_params = {
static
void
realview_oscvco_set
(
struct
clk
*
clk
,
struct
icst307_vco
vco
)
static
void
realview_oscvco_set
(
struct
clk
*
clk
,
struct
icst307_vco
vco
)
{
{
void
__iomem
*
sys_lock
=
__io_address
(
REALVIEW_SYS_BASE
)
+
REALVIEW_SYS_LOCK_OFFSET
;
void
__iomem
*
sys_lock
=
__io_address
(
REALVIEW_SYS_BASE
)
+
REALVIEW_SYS_LOCK_OFFSET
;
void
__iomem
*
sys_osc
=
__io_address
(
REALVIEW_SYS_BASE
)
+
REALVIEW_SYS_OSC
1
_OFFSET
;
void
__iomem
*
sys_osc
=
__io_address
(
REALVIEW_SYS_BASE
)
+
REALVIEW_SYS_OSC
4
_OFFSET
;
u32
val
;
u32
val
;
val
=
readl
(
sys_osc
)
&
~
0x7ffff
;
val
=
readl
(
sys_osc
)
&
~
0x7ffff
;
...
...
arch/arm/mach-s3c2410/clock.c
浏览文件 @
cce0cac1
...
@@ -40,7 +40,6 @@
...
@@ -40,7 +40,6 @@
#include <linux/mutex.h>
#include <linux/mutex.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/atomic.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/io.h>
...
@@ -59,22 +58,18 @@ static DEFINE_MUTEX(clocks_mutex);
...
@@ -59,22 +58,18 @@ static DEFINE_MUTEX(clocks_mutex);
void
inline
s3c24xx_clk_enable
(
unsigned
int
clocks
,
unsigned
int
enable
)
void
inline
s3c24xx_clk_enable
(
unsigned
int
clocks
,
unsigned
int
enable
)
{
{
unsigned
long
clkcon
;
unsigned
long
clkcon
;
unsigned
long
flags
;
local_irq_save
(
flags
);
clkcon
=
__raw_readl
(
S3C2410_CLKCON
);
clkcon
=
__raw_readl
(
S3C2410_CLKCON
);
clkcon
&=
~
clocks
;
if
(
enable
)
if
(
enable
)
clkcon
|=
clocks
;
clkcon
|=
clocks
;
else
clkcon
&=
~
clocks
;
/* ensure none of the special function bits set */
/* ensure none of the special function bits set */
clkcon
&=
~
(
S3C2410_CLKCON_IDLE
|
S3C2410_CLKCON_POWER
);
clkcon
&=
~
(
S3C2410_CLKCON_IDLE
|
S3C2410_CLKCON_POWER
);
__raw_writel
(
clkcon
,
S3C2410_CLKCON
);
__raw_writel
(
clkcon
,
S3C2410_CLKCON
);
local_irq_restore
(
flags
);
}
}
/* enable and disable calls for use with the clk struct */
/* enable and disable calls for use with the clk struct */
...
@@ -138,16 +133,32 @@ void clk_put(struct clk *clk)
...
@@ -138,16 +133,32 @@ void clk_put(struct clk *clk)
int
clk_enable
(
struct
clk
*
clk
)
int
clk_enable
(
struct
clk
*
clk
)
{
{
if
(
IS_ERR
(
clk
))
if
(
IS_ERR
(
clk
)
||
clk
==
NULL
)
return
-
EINVAL
;
return
-
EINVAL
;
return
(
clk
->
enable
)(
clk
,
1
);
clk_enable
(
clk
->
parent
);
mutex_lock
(
&
clocks_mutex
);
if
((
clk
->
usage
++
)
==
0
)
(
clk
->
enable
)(
clk
,
1
);
mutex_unlock
(
&
clocks_mutex
);
return
0
;
}
}
void
clk_disable
(
struct
clk
*
clk
)
void
clk_disable
(
struct
clk
*
clk
)
{
{
if
(
!
IS_ERR
(
clk
))
if
(
IS_ERR
(
clk
)
||
clk
==
NULL
)
return
;
mutex_lock
(
&
clocks_mutex
);
if
((
--
clk
->
usage
)
==
0
)
(
clk
->
enable
)(
clk
,
0
);
(
clk
->
enable
)(
clk
,
0
);
mutex_unlock
(
&
clocks_mutex
);
clk_disable
(
clk
->
parent
);
}
}
...
@@ -361,6 +372,14 @@ int s3c24xx_register_clock(struct clk *clk)
...
@@ -361,6 +372,14 @@ int s3c24xx_register_clock(struct clk *clk)
if
(
clk
->
enable
==
NULL
)
if
(
clk
->
enable
==
NULL
)
clk
->
enable
=
clk_null_enable
;
clk
->
enable
=
clk_null_enable
;
/* if this is a standard clock, set the usage state */
if
(
clk
->
ctrlbit
)
{
unsigned
long
clkcon
=
__raw_readl
(
S3C2410_CLKCON
);
clk
->
usage
=
(
clkcon
&
clk
->
ctrlbit
)
?
1
:
0
;
}
/* add to the list of available clocks */
/* add to the list of available clocks */
mutex_lock
(
&
clocks_mutex
);
mutex_lock
(
&
clocks_mutex
);
...
@@ -402,6 +421,8 @@ int __init s3c24xx_setup_clocks(unsigned long xtal,
...
@@ -402,6 +421,8 @@ int __init s3c24xx_setup_clocks(unsigned long xtal,
* the LCD clock if it is not needed.
* the LCD clock if it is not needed.
*/
*/
mutex_lock
(
&
clocks_mutex
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_NAND
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_NAND
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_USBH
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_USBH
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_USBD
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_USBD
,
0
);
...
@@ -409,6 +430,8 @@ int __init s3c24xx_setup_clocks(unsigned long xtal,
...
@@ -409,6 +430,8 @@ int __init s3c24xx_setup_clocks(unsigned long xtal,
s3c24xx_clk_enable
(
S3C2410_CLKCON_IIC
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_IIC
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_SPI
,
0
);
s3c24xx_clk_enable
(
S3C2410_CLKCON_SPI
,
0
);
mutex_unlock
(
&
clocks_mutex
);
/* assume uart clocks are correctly setup */
/* assume uart clocks are correctly setup */
/* register our clocks */
/* register our clocks */
...
...
arch/arm/mach-s3c2410/clock.h
浏览文件 @
cce0cac1
...
@@ -16,6 +16,7 @@ struct clk {
...
@@ -16,6 +16,7 @@ struct clk {
struct
clk
*
parent
;
struct
clk
*
parent
;
const
char
*
name
;
const
char
*
name
;
int
id
;
int
id
;
int
usage
;
unsigned
long
rate
;
unsigned
long
rate
;
unsigned
long
ctrlbit
;
unsigned
long
ctrlbit
;
int
(
*
enable
)(
struct
clk
*
,
int
enable
);
int
(
*
enable
)(
struct
clk
*
,
int
enable
);
...
...
arch/arm/mach-s3c2410/devs.c
浏览文件 @
cce0cac1
...
@@ -275,6 +275,11 @@ static struct resource s3c_adc_resource[] = {
...
@@ -275,6 +275,11 @@ static struct resource s3c_adc_resource[] = {
},
},
[
1
]
=
{
[
1
]
=
{
.
start
=
IRQ_TC
,
.
start
=
IRQ_TC
,
.
end
=
IRQ_TC
,
.
flags
=
IORESOURCE_IRQ
,
},
[
2
]
=
{
.
start
=
IRQ_ADC
,
.
end
=
IRQ_ADC
,
.
end
=
IRQ_ADC
,
.
flags
=
IORESOURCE_IRQ
,
.
flags
=
IORESOURCE_IRQ
,
}
}
...
...
arch/arm/plat-omap/sram.c
浏览文件 @
cce0cac1
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#include <linux/init.h>
#include <linux/init.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/tlb.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/cacheflush.h>
#include <asm/cacheflush.h>
...
@@ -95,6 +96,14 @@ void __init omap_map_sram(void)
...
@@ -95,6 +96,14 @@ void __init omap_map_sram(void)
omap_sram_io_desc
[
0
].
pfn
,
omap_sram_io_desc
[
0
].
virtual
,
omap_sram_io_desc
[
0
].
pfn
,
omap_sram_io_desc
[
0
].
virtual
,
omap_sram_io_desc
[
0
].
length
);
omap_sram_io_desc
[
0
].
length
);
/*
* Normally devicemaps_init() would flush caches and tlb after
* mdesc->map_io(), but since we're called from map_io(), we
* must do it here.
*/
local_flush_tlb_all
();
flush_cache_all
();
/*
/*
* Looks like we need to preserve some bootloader code at the
* Looks like we need to preserve some bootloader code at the
* beginning of SRAM for jumping to flash for reboot to work...
* beginning of SRAM for jumping to flash for reboot to work...
...
...
drivers/serial/s3c2410.c
浏览文件 @
cce0cac1
...
@@ -161,7 +161,11 @@ s3c24xx_serial_dbg(const char *fmt, ...)
...
@@ -161,7 +161,11 @@ s3c24xx_serial_dbg(const char *fmt, ...)
/* we can support 3 uarts, but not always use them */
/* we can support 3 uarts, but not always use them */
#ifdef CONFIG_CPU_S3C2400
#define NR_PORTS (2)
#else
#define NR_PORTS (3)
#define NR_PORTS (3)
#endif
/* port irq numbers */
/* port irq numbers */
...
...
include/asm-arm/arch-omap/io.h
浏览文件 @
cce0cac1
...
@@ -116,7 +116,11 @@ typedef struct { volatile u32 offset[4096]; } __regbase32;
...
@@ -116,7 +116,11 @@ typedef struct { volatile u32 offset[4096]; } __regbase32;
->offset[((vaddr)&4095)>>2]
->offset[((vaddr)&4095)>>2]
#define __REG32(paddr) __REGV32(io_p2v(paddr))
#define __REG32(paddr) __REGV32(io_p2v(paddr))
extern
void
omap_map_common_io
(
void
);
extern
void
omap1_map_common_io
(
void
);
extern
void
omap1_init_common_hw
(
void
);
extern
void
omap2_map_common_io
(
void
);
extern
void
omap2_init_common_hw
(
void
);
#else
#else
...
...
include/asm-arm/mutex.h
浏览文件 @
cce0cac1
...
@@ -23,72 +23,71 @@
...
@@ -23,72 +23,71 @@
* simply bail out immediately through the slow path where the lock will be
* simply bail out immediately through the slow path where the lock will be
* reattempted until it succeeds.
* reattempted until it succeeds.
*/
*/
#define __mutex_fastpath_lock(count, fail_fn) \
static
inline
void
do { \
__mutex_fastpath_lock
(
atomic_t
*
count
,
fastcall
void
(
*
fail_fn
)(
atomic_t
*
))
int __ex_flag, __res; \
{
\
int
__ex_flag
,
__res
;
typecheck(atomic_t *, count); \
typecheck_fn(fastcall void (*)(atomic_t *), fail_fn); \
__asm__
(
\
__asm__ ( \
"ldrex %0, [%2]
\n\t
"
"ldrex %0, [%2] \n" \
"sub %0, %0, #1
\n\t
"
"sub %0, %0, #1 \n" \
"strex %1, %0, [%2] "
"strex %1, %0, [%2] \n" \
\
:
"=&r"
(
__res
),
"=&r"
(
__ex_flag
)
: "=&r" (__res), "=&r" (__ex_flag) \
:
"r"
(
&
(
count
)
->
counter
)
: "r" (&(count)->counter) \
:
"cc"
,
"memory"
);
: "cc","memory" ); \
\
__res
|=
__ex_flag
;
if (unlikely(__res || __ex_flag)) \
if
(
unlikely
(
__res
!=
0
))
fail_fn(count); \
fail_fn
(
count
);
} while (0)
}
#define __mutex_fastpath_lock_retval(count, fail_fn) \
static
inline
int
({ \
__mutex_fastpath_lock_retval
(
atomic_t
*
count
,
fastcall
int
(
*
fail_fn
)(
atomic_t
*
))
int __ex_flag, __res; \
{
\
int
__ex_flag
,
__res
;
typecheck(atomic_t *, count); \
typecheck_fn(fastcall int (*)(atomic_t *), fail_fn); \
__asm__
(
\
__asm__ ( \
"ldrex %0, [%2]
\n\t
"
"ldrex %0, [%2] \n" \
"sub %0, %0, #1
\n\t
"
"sub %0, %0, #1 \n" \
"strex %1, %0, [%2] "
"strex %1, %0, [%2] \n" \
\
:
"=&r"
(
__res
),
"=&r"
(
__ex_flag
)
: "=&r" (__res), "=&r" (__ex_flag) \
:
"r"
(
&
(
count
)
->
counter
)
: "r" (&(count)->counter) \
:
"cc"
,
"memory"
);
: "cc","memory" ); \
\
__res
|=
__ex_flag
;
__res |= __ex_flag; \
if
(
unlikely
(
__res
!=
0
))
if (unlikely(__res != 0)) \
__res
=
fail_fn
(
count
);
__res = fail_fn(count); \
return
__res
;
__res; \
}
})
/*
/*
* Same trick is used for the unlock fast path. However the original value,
* Same trick is used for the unlock fast path. However the original value,
* rather than the result, is used to test for success in order to have
* rather than the result, is used to test for success in order to have
* better generated assembly.
* better generated assembly.
*/
*/
#define __mutex_fastpath_unlock(count, fail_fn) \
static
inline
void
do { \
__mutex_fastpath_unlock
(
atomic_t
*
count
,
fastcall
void
(
*
fail_fn
)(
atomic_t
*
))
int __ex_flag, __res, __orig; \
{
\
int
__ex_flag
,
__res
,
__orig
;
typecheck(atomic_t *, count); \
typecheck_fn(fastcall void (*)(atomic_t *), fail_fn); \
__asm__
(
\
__asm__ ( \
"ldrex %0, [%3]
\n\t
"
"
ldrex %0, [%3] \n" \
"
add %1, %0, #1
\n\t
"
"
add %1, %0, #1 \n" \
"
strex %2, %1, [%3] "
"strex %2, %1, [%3] \n" \
\
:
"=&r"
(
__orig
),
"=&r"
(
__res
),
"=&r"
(
__ex_flag
)
: "
=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) \
:
"
r"
(
&
(
count
)
->
counter
)
: "
r" (&(count)->counter) \
:
"
cc"
,
"memory"
);
: "cc","memory" ); \
\
__orig
|=
__ex_flag
;
if (unlikely(__orig
|| __ex_flag)) \
if
(
unlikely
(
__orig
!=
0
))
fail_fn(count);
\
fail_fn
(
count
);
}
while (0)
}
/*
/*
* If the unlock was done on a contended lock, or if the unlock simply fails
* If the unlock was done on a contended lock, or if the unlock simply fails
...
@@ -110,12 +109,12 @@ __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *))
...
@@ -110,12 +109,12 @@ __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *))
__asm__
(
__asm__
(
"1: ldrex %0, [%3]
\n
"
"1: ldrex %0, [%3]
\n
\t
"
"subs %1, %0, #1
\n
"
"subs %1, %0, #1
\n
\t
"
"strexeq %2, %1, [%3]
\n
"
"strexeq %2, %1, [%3]
\n
\t
"
"movlt %0, #0
\n
"
"movlt %0, #0
\n
\t
"
"cmpeq %2, #0
\n
"
"cmpeq %2, #0
\n
\t
"
"bgt 1b
\n
"
"bgt 1b "
:
"=&r"
(
__orig
),
"=&r"
(
__res
),
"=&r"
(
__ex_flag
)
:
"=&r"
(
__orig
),
"=&r"
(
__res
),
"=&r"
(
__ex_flag
)
:
"r"
(
&
count
->
counter
)
:
"r"
(
&
count
->
counter
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录