Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
3b89d486
Commit
3b89d486
authored
Jun 14, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/sparc-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
864cb43e
292670c7
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
729 additions
and
555 deletions
+729
-555
Documentation/cpu-freq/amd-powernow.txt
Documentation/cpu-freq/amd-powernow.txt
+38
-0
arch/arm/Kconfig
arch/arm/Kconfig
+1
-1
arch/arm/configs/ebsa110_defconfig
arch/arm/configs/ebsa110_defconfig
+327
-260
arch/arm/mach-ebsa110/io.c
arch/arm/mach-ebsa110/io.c
+19
-19
arch/arm/mach-sa1100/cpu-sa1100.c
arch/arm/mach-sa1100/cpu-sa1100.c
+3
-2
arch/arm/mach-sa1100/cpu-sa1110.c
arch/arm/mach-sa1100/cpu-sa1110.c
+3
-2
arch/i386/kernel/cpu/cpufreq/elanfreq.c
arch/i386/kernel/cpu/cpufreq/elanfreq.c
+2
-1
arch/i386/kernel/cpu/cpufreq/gx-suspmod.c
arch/i386/kernel/cpu/cpufreq/gx-suspmod.c
+2
-2
arch/i386/kernel/cpu/cpufreq/longhaul.c
arch/i386/kernel/cpu/cpufreq/longhaul.c
+27
-14
arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
+12
-17
arch/i386/kernel/cpu/cpufreq/powernow-k8.c
arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+17
-10
arch/i386/kernel/cpu/cpufreq/speedstep-ich.c
arch/i386/kernel/cpu/cpufreq/speedstep-ich.c
+54
-16
arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
+7
-10
arch/i386/kernel/cpu/cpufreq/speedstep-lib.h
arch/i386/kernel/cpu/cpufreq/speedstep-lib.h
+1
-1
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
+14
-20
drivers/cpufreq/cpufreq.c
drivers/cpufreq/cpufreq.c
+6
-1
drivers/net/arm/am79c961a.c
drivers/net/arm/am79c961a.c
+48
-41
fs/jfs/jfs_btree.h
fs/jfs/jfs_btree.h
+18
-6
fs/jfs/jfs_dmap.c
fs/jfs/jfs_dmap.c
+2
-2
fs/jfs/jfs_dtree.c
fs/jfs/jfs_dtree.c
+15
-4
fs/jfs/jfs_metapage.c
fs/jfs/jfs_metapage.c
+1
-0
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+20
-22
fs/jfs/jfs_types.h
fs/jfs/jfs_types.h
+2
-1
fs/jfs/namei.c
fs/jfs/namei.c
+44
-63
fs/jfs/xattr.c
fs/jfs/xattr.c
+16
-9
fs/nfs/write.c
fs/nfs/write.c
+2
-3
include/asm-arm/arch-ebsa110/io.h
include/asm-arm/arch-ebsa110/io.h
+1
-1
include/asm-arm/arch-ebsa110/system.h
include/asm-arm/arch-ebsa110/system.h
+2
-2
include/asm-arm/arch-ebsa110/timex.h
include/asm-arm/arch-ebsa110/timex.h
+1
-1
include/asm-arm/arch-ebsa110/uncompress.h
include/asm-arm/arch-ebsa110/uncompress.h
+20
-20
include/asm-ppc64/io.h
include/asm-ppc64/io.h
+3
-3
mm/vmscan.c
mm/vmscan.c
+1
-1
No files found.
Documentation/cpu-freq/amd-powernow.txt
0 → 100644
View file @
3b89d486
PowerNow! and Cool'n'Quiet are AMD names for frequency
management capabilities in AMD processors. As the hardware
implementation changes in new generations of the processors,
there is a different cpu-freq driver for each generation.
Note that the driver's will not load on the "wrong" hardware,
so it is safe to try each driver in turn when in doubt as to
which is the correct driver.
Note that the functionality to change frequency (and voltage)
is not available in all processors. The drivers will refuse
to load on processors without this capability. The capability
is detected with the cpuid instruction.
The drivers use BIOS supplied tables to obtain frequency and
voltage information appropriate for a particular platform.
Frequency transitions will be unavailable if the BIOS does
not supply these tables.
6th Generation: powernow-k6
7th Generation: powernow-k7: Athlon, Duron, Geode.
8th Generation: powernow-k8: Athlon, Athlon 64, Opteron, Sempron.
Documentation on this functionality in 8th generation processors
is available in the "BIOS and Kernel Developer's Guide", publication
26094, in chapter 9, available for download from www.amd.com.
BIOS supplied data, for powernow-k7 and for powernow-k8, may be
from either the PSB table or from ACPI objects. The ACPI support
is only available if the kernel config sets CONFIG_ACPI_PROCESSOR.
The powernow-k8 driver will attempt to use ACPI if so configured,
and fall back to PST if that fails.
The powernow-k7 driver will try to use the PSB support first, and
fall back to ACPI if the PSB support fails. A module parameter,
acpi_force, is provided to force ACPI support to be used instead
of PSB support.
arch/arm/Kconfig
View file @
3b89d486
...
...
@@ -581,7 +581,7 @@ config LEDS_CPU
config ALIGNMENT_TRAP
bool
depends on CPU_32
default y
default y
if !ARCH_EBSA110
help
ARM processors can not fetch/store information which is not
naturally aligned on the bus, i.e., a 4 byte fetch must start at an
...
...
arch/arm/configs/ebsa110_defconfig
View file @
3b89d486
...
...
@@ -2,137 +2,120 @@
# Automatically generated make config: don't edit
#
CONFIG_ARM=y
# CONFIG_EISA is not set
# CONFIG_SBUS is not set
# CONFIG_MCA is not set
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_OBSOLETE is not set
CONFIG_CLEAN_COMPILE=y
CONFIG_STANDALONE=y
CONFIG_BROKEN_ON_SMP=y
#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
CONFIG_HOTPLUG=y
# CONFIG_IKCONFIG is not set
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODULE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y
#
# System Type
#
# CONFIG_ARCH_A
RCA5K
is not set
# CONFIG_ARCH_A
DIFCC
is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
CONFIG_ARCH_EBSA110=y
# CONFIG_ARCH_
L7200
is not set
# CONFIG_ARCH_
CAMELOT
is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP3XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_VERSATILE_PB is not set
#
# Archimedes/A5000 Implementations
#
#
# Archimedes/A5000 Implementations (select only ONE)
#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
#
# Footbridge Implementations
#
# CONFIG_ARCH_CATS is not set
# CONFIG_ARCH_PERSONAL_SERVER is not set
# CONFIG_ARCH_EBSA285_ADDIN is not set
# CONFIG_ARCH_EBSA285_HOST is not set
# CONFIG_ARCH_NETWINDER is not set
#
# SA11x0 Implementations
#
# CONFIG_SA1100_ASSABET is not set
# CONFIG_ASSABET_NEPONSET is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
# CONFIG_SA1100_BITSY is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_NANOENGINE is not set
# CONFIG_SA1100_OMNIMETER is not set
# CONFIG_SA1100_PANGOLIN is not set
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_SHERMAN is not set
# CONFIG_SA1100_PFS168 is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_XP860 is not set
# CONFIG_SA1100_YOPY is not set
#
# CLPS711X/EP721X Implementations
# Processor Type
#
# CONFIG_ARCH_P720T is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
# CONFIG_FOOTBRIDGE_ADDIN is not set
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
CONFIG_CPU_SA110=y
CONFIG_CPU_32v4=y
CONFIG_CPU_ABRT_EV4=y
CONFIG_CPU_CACHE_V4WB=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WB=y
#
# Processor
Type
# Processor
Features
#
# CONFIG_CPU_32v3 is not set
CONFIG_CPU_32v4=y
# CONFIG_CPU_ARM610 is not set
# CONFIG_CPU_ARM710 is not set
# CONFIG_CPU_ARM720T is not set
# CONFIG_CPU_ARM920T is not set
# CONFIG_CPU_ARM1020 is not set
CONFIG_CPU_SA110=y
# CONFIG_CPU_SA1100 is not set
# CONFIG_DISCONTIGMEM is not set
#
# General setup
#
# CONFIG_PCI is not set
CONFIG_ISA=y
# CONFIG_ISA_DMA is not set
CONFIG_HOTPLUG=y
# CONFIG_ZBOOT_ROM is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
#
# PCMCIA/CardBus support
#
CONFIG_PCMCIA=m
CONFIG_I82365=y
# CONFIG_PCMCIA_DEBUG is not set
CONFIG_I82365=m
# CONFIG_TCIC is not set
# CONFIG_PCMCIA_CLPS6700 is not set
# CONFIG_PCMCIA_SA1100 is not set
CONFIG_NET=y
CONFIG_SYSVIPC=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_SYSCTL=y
CONFIG_PCMCIA_PROBE=y
#
# At least one math emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
CONFIG_FPE_FASTFPE=y
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
# CONFIG_BINFMT_MISC is not set
#
# Generic Driver Options
#
# CONFIG_FW_LOADER is not set
# CONFIG_PM is not set
# CONFIG_PREEMPT is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE="root=/dev/nfs rw mem=16M console=ttyS1,38400n8"
CONFIG_LEDS=y
...
...
@@ -143,22 +126,18 @@ CONFIG_LEDS_TIMER=y
#
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_PC_CML1=y
CONFIG_PARPORT_PC_FIFO=y
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_PC_PCMCIA is not set
# CONFIG_PARPORT_ARC is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
# CONFIG_PARPORT_ATARI is not set
# CONFIG_PARPORT_SUNBPP is not set
# CONFIG_PARPORT_OTHER is not set
CONFIG_PARPORT_1284=y
#
# Plug and Play
configuration
# Plug and Play
support
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
...
...
@@ -166,9 +145,6 @@ CONFIG_PARPORT_1284=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
...
...
@@ -179,37 +155,29 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_BLK_DEV_LVM is not set
#
# Networking support
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
# CONFIG_NETLINK_DEV is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_RTNETLINK=y
CONFIG_NETLINK=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_NAT=y
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_TOS is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_ROUTE_LARGE_TABLES is not set
CONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
...
...
@@ -218,64 +186,113 @@ CONFIG_IP_PNP_BOOTP=y
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
CONFIG_INET_ECN=y
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_TUNNEL is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
#
IP: Netfilter Configuration
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_IRC=y
# CONFIG_IP_NF_TFTP is not set
# CONFIG_IP_NF_AMANDA is not set
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_LIMIT=y
# CONFIG_IP_NF_MATCH_MAC is not set
CONFIG_IP_NF_MATCH_IPRANGE=y
CONFIG_IP_NF_MATCH_MAC=y
CONFIG_IP_NF_MATCH_PKTTYPE=y
CONFIG_IP_NF_MATCH_MARK=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
# CONFIG_IP_NF_MATCH_TCPMSS is not set
CONFIG_IP_NF_MATCH_RECENT=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_DSCP=y
CONFIG_IP_NF_MATCH_AH_ESP=y
CONFIG_IP_NF_MATCH_LENGTH=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_TCPMSS=y
CONFIG_IP_NF_MATCH_HELPER=y
CONFIG_IP_NF_MATCH_STATE=y
CONFIG_IP_NF_MATCH_
UNCLEAN
=y
CONFIG_IP_NF_MATCH_
CONNTRACK
=y
# CONFIG_IP_NF_MATCH_OWNER is not set
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
# CONFIG_IP_NF_TARGET_MIRROR is not set
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_SAME=y
# CONFIG_IP_NF_NAT_LOCAL is not set
# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
CONFIG_IP_NF_NAT_IRC=y
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_DSCP=y
CONFIG_IP_NF_TARGET_MARK=y
CONFIG_IP_NF_TARGET_CLASSIFY=y
CONFIG_IP_NF_TARGET_LOG=y
# CONFIG_IP_NF_TARGET_TCPMSS is not set
CONFIG_IPV6=y
# CONFIG_IP_NF_TARGET_ULOG is not set
CONFIG_IP_NF_TARGET_TCPMSS=y
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_IP_NF_RAW is not set
#
#
IPv6: Netfilter Configuration
# IPv6: Netfilter Configuration
#
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_LIMIT=y
CONFIG_IP6_NF_MATCH_MAC=y
CONFIG_IP6_NF_MATCH_RT=y
CONFIG_IP6_NF_MATCH_OPTS=y
CONFIG_IP6_NF_MATCH_FRAG=y
CONFIG_IP6_NF_MATCH_HL=y
CONFIG_IP6_NF_MATCH_MULTIPORT=y
# CONFIG_IP6_NF_MATCH_OWNER is not set
CONFIG_IP6_NF_MATCH_MARK=y
# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
CONFIG_IP6_NF_MATCH_AHESP=y
CONFIG_IP6_NF_MATCH_LENGTH=y
# CONFIG_IP6_NF_MATCH_EUI64 is not set
CONFIG_IP6_NF_FILTER=y
# CONFIG_IP6_NF_TARGET_LOG is not set
CONFIG_IP6_NF_MANGLE=y
CONFIG_IP6_NF_TARGET_MARK=y
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
# CONFIG_IP6_NF_RAW is not set
#
#
#
SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
...
...
@@ -288,25 +305,30 @@ CONFIG_IP6_NF_TARGET_MARK=y
# CONFIG_NET_SCHED is not set
#
# Network
device support
# Network
testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
CONFIG_ARM_AM79C961A=y
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
...
...
@@ -322,40 +344,20 @@ CONFIG_ARM_AM79C961A=y
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
#
#
Wireless LAN (non-hamradio
)
#
Ethernet (10000 Mbit
)
#
# CONFIG_NET_RADIO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
#
# W
an interfaces
# W
ireless LAN (non-hamradio)
#
# CONFIG_
WAN
is not set
# CONFIG_
NET_RADIO
is not set
#
# PCMCIA network device support
...
...
@@ -368,39 +370,42 @@ CONFIG_PCMCIA_PCNET=m
# CONFIG_PCMCIA_NMCLAN is not set
# CONFIG_PCMCIA_SMC91C92 is not set
# CONFIG_PCMCIA_XIRC2PS is not set
# CONFIG_ARCNET_COM20020_CS is not set
# CONFIG_PCMCIA_IBMTR is not set
# CONFIG_NET_PCMCIA_RADIO is not set
# CONFIG_PCMCIA_AXNET is not set
#
#
Amateur Radio support
#
Wan interfaces
#
# CONFIG_HAMRADIO is not set
# CONFIG_WAN is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
#
IrDA (infrared)
support
#
SCSI device
support
#
# CONFIG_
IRDA
is not set
# CONFIG_
SCSI
is not set
#
#
ATA/IDE/MFM/RLL
support
#
Fusion MPT device
support
#
# CONFIG_IDE is not set
# CONFIG_BLK_DEV_HD is not set
#
#
SCSI
support
#
IEEE 1394 (FireWire)
support
#
# CONFIG_
SCSI
is not set
# CONFIG_
IEEE1394
is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_LAN is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# ISDN subsystem
...
...
@@ -408,76 +413,80 @@ CONFIG_PCMCIA_PCNET=m
# CONFIG_ISDN is not set
#
# Input
cor
e support
# Input
devic
e support
#
# CONFIG_INPUT is not set
#
#
Character devi
ces
#
Userland interfa
ces
#
# CONFIG_VT is not set
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_SERIAL_EXTENDED=y
# CONFIG_SERIAL_MANY_PORTS is not set
# CONFIG_SERIAL_SHARE_IRQ is not set
# CONFIG_SERIAL_DETECT_IRQ is not set
# CONFIG_SERIAL_MULTIPORT is not set
# CONFIG_HUB6 is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_SERIAL_21285 is not set
# CONFIG_SERIAL_21285_OLD is not set
# CONFIG_SERIAL_21285_CONSOLE is not set
# CONFIG_SERIAL_SA1100 is not set
# CONFIG_SERIAL_SA1100_CONSOLE is not set
# CONFIG_SERIAL_AMBA is not set
# CONFIG_SERIAL_AMBA_CONSOLE is not set
# CONFIG_SERIAL_CLPS711X is not set
# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
#
# I
2C support
# I
nput I/O drivers
#
# CONFIG_I2C is not set
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set
# CONFIG_SERIO_I8042 is not set
#
#
Mice
#
Input Device Drivers
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
#
#
Joystick
s
#
Character device
s
#
# CONFIG_JOYSTICK is not set
# CONFIG_VT is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Input core support is needed for joysticks
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_CS=m
CONFIG_SERIAL_8250_NR_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set
# CONFIG_QIC02_TAPE is not set
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=y
# CONFIG_WDT is not set
# CONFIG_WDTPCI is not set
#
# ISA-based Watchdog Cards
#
# CONFIG_PCWATCHDOG is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_60XX_WDT is not set
# CONFIG_MIXCOMWD is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_WDT is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
...
...
@@ -492,81 +501,97 @@ CONFIG_SOFT_WATCHDOG=y
#
# PCMCIA character devices
#
# CONFIG_PCMCIA_SERIAL_CS is not set
# CONFIG_SYNCLINK_CS is not set
# CONFIG_RAW_DRIVER is not set
#
# I2C support
#
# CONFIG_I2C is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
CONFIG_MINIX_FS=y
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=y
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_FAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVPTS_FS_XATTR is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
CONFIG_MINIX_FS=y
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
#
# CONFIG_CODA_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
CONFIG_ROOT_NFS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
# CONFIG_NFSD_V3 is not set
CONFIG_SUNRPC=y
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
# CONFIG_EXPORTFS is not set
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
...
...
@@ -578,26 +603,68 @@ CONFIG_PARTITION_ADVANCED=y
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
# CONFIG_MSDOS_PARTITION is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_NEC98_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_SMB_NLS is not set
# CONFIG_EFI_PARTITION is not set
#
# Native Language Support
#
# CONFIG_NLS is not set
#
# Profiling support
#
# CONFIG_PROFILING is not set
#
# Graphics support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# Misc devices
#
#
# USB support
#
# CONFIG_USB is not set
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_USER is not set
# CONFIG_DEBUG_INFO is not set
CONFIG_MAGIC_SYSRQ=y
# CONFIG_NO_PGT_CACHE is not set
# CONFIG_DEBUG_LL is not set
# CONFIG_DEBUG_DC21285_PORT is not set
# CONFIG_DEBUG_CLPS711X_UART2 is not set
# CONFIG_DEBUG_KERNEL is not set
#
# Security options
#
# CONFIG_SECURITY is not set
#
# Cryptographic options
#
# CONFIG_CRYPTO is not set
#
# Library routines
#
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
arch/arm/mach-ebsa110/io.c
View file @
3b89d486
...
...
@@ -67,9 +67,9 @@ u8 __readb(void *addr)
u32
ret
,
a
=
__isamem_convert_addr
(
addr
);
if
((
int
)
addr
&
1
)
ret
=
__raw_
get
l
(
a
);
ret
=
__raw_
read
l
(
a
);
else
ret
=
__raw_
get
b
(
a
);
ret
=
__raw_
read
b
(
a
);
return
ret
;
}
...
...
@@ -80,7 +80,7 @@ u16 __readw(void *addr)
if
((
int
)
addr
&
1
)
BUG
();
return
__raw_
get
w
(
a
);
return
__raw_
read
w
(
a
);
}
u32
__readl
(
void
*
addr
)
...
...
@@ -90,8 +90,8 @@ u32 __readl(void *addr)
if
((
int
)
addr
&
3
)
BUG
();
ret
=
__raw_
get
w
(
a
);
ret
|=
__raw_
get
w
(
a
+
4
)
<<
16
;
ret
=
__raw_
read
w
(
a
);
ret
|=
__raw_
read
w
(
a
+
4
)
<<
16
;
return
ret
;
}
...
...
@@ -104,9 +104,9 @@ void __writeb(u8 val, void *addr)
u32
a
=
__isamem_convert_addr
(
addr
);
if
((
int
)
addr
&
1
)
__raw_
put
l
(
val
,
a
);
__raw_
write
l
(
val
,
a
);
else
__raw_
put
b
(
val
,
a
);
__raw_
write
b
(
val
,
a
);
}
void
__writew
(
u16
val
,
void
*
addr
)
...
...
@@ -116,7 +116,7 @@ void __writew(u16 val, void *addr)
if
((
int
)
addr
&
1
)
BUG
();
__raw_
put
w
(
val
,
a
);
__raw_
write
w
(
val
,
a
);
}
void
__writel
(
u32
val
,
void
*
addr
)
...
...
@@ -126,8 +126,8 @@ void __writel(u32 val, void *addr)
if
((
int
)
addr
&
3
)
BUG
();
__raw_
put
w
(
val
,
a
);
__raw_
put
w
(
val
>>
16
,
a
+
4
);
__raw_
write
w
(
val
,
a
);
__raw_
write
w
(
val
>>
16
,
a
+
4
);
}
EXPORT_SYMBOL
(
__writeb
);
...
...
@@ -147,7 +147,7 @@ u8 __inb(int port)
* The SuperIO registers use sane addressing techniques...
*/
if
(
SUPERIO_PORT
(
port
))
ret
=
__raw_
get
b
(
ISAIO_BASE
+
(
port
<<
2
));
ret
=
__raw_
read
b
(
ISAIO_BASE
+
(
port
<<
2
));
else
{
u32
a
=
ISAIO_BASE
+
((
port
&
~
1
)
<<
1
);
...
...
@@ -155,9 +155,9 @@ u8 __inb(int port)
* Shame nothing else does
*/
if
(
port
&
1
)
ret
=
__raw_
get
l
(
a
);
ret
=
__raw_
read
l
(
a
);
else
ret
=
__raw_
get
b
(
a
);
ret
=
__raw_
read
b
(
a
);
}
return
ret
;
}
...
...
@@ -170,7 +170,7 @@ u16 __inw(int port)
* The SuperIO registers use sane addressing techniques...
*/
if
(
SUPERIO_PORT
(
port
))
ret
=
__raw_
get
w
(
ISAIO_BASE
+
(
port
<<
2
));
ret
=
__raw_
read
w
(
ISAIO_BASE
+
(
port
<<
2
));
else
{
u32
a
=
ISAIO_BASE
+
((
port
&
~
1
)
<<
1
);
...
...
@@ -180,7 +180,7 @@ u16 __inw(int port)
if
(
port
&
1
)
BUG
();
ret
=
__raw_
get
w
(
a
);
ret
=
__raw_
read
w
(
a
);
}
return
ret
;
}
...
...
@@ -201,7 +201,7 @@ void __outb(u8 val, int port)
* The SuperIO registers use sane addressing techniques...
*/
if
(
SUPERIO_PORT
(
port
))
__raw_
put
b
(
val
,
ISAIO_BASE
+
(
port
<<
2
));
__raw_
write
b
(
val
,
ISAIO_BASE
+
(
port
<<
2
));
else
{
u32
a
=
ISAIO_BASE
+
((
port
&
~
1
)
<<
1
);
...
...
@@ -209,9 +209,9 @@ void __outb(u8 val, int port)
* Shame nothing else does
*/
if
(
port
&
1
)
__raw_
put
l
(
val
,
a
);
__raw_
write
l
(
val
,
a
);
else
__raw_
put
b
(
val
,
a
);
__raw_
write
b
(
val
,
a
);
}
}
...
...
@@ -230,7 +230,7 @@ void __outw(u16 val, int port)
BUG
();
}
__raw_
put
w
(
val
,
ISAIO_BASE
+
off
);
__raw_
write
w
(
val
,
ISAIO_BASE
+
off
);
}
void
__outl
(
u32
val
,
int
port
)
...
...
arch/arm/mach-sa1100/cpu-sa1100.c
View file @
3b89d486
...
...
@@ -230,8 +230,9 @@ static int __init sa1100_cpu_init(struct cpufreq_policy *policy)
}
static
struct
cpufreq_driver
sa1100_driver
=
{
.
flags
=
(
CPUFREQ_PANIC_OUTOFSYNC
|
CPUFREQ_PANIC_RESUME_OUTOFSYNC
),
.
flags
=
CPUFREQ_STICKY
|
CPUFREQ_PANIC_OUTOFSYNC
|
CPUFREQ_PANIC_RESUME_OUTOFSYNC
,
.
verify
=
sa11x0_verify_speed
,
.
target
=
sa1100_target
,
.
get
=
sa11x0_getspeed
,
...
...
arch/arm/mach-sa1100/cpu-sa1110.c
View file @
3b89d486
...
...
@@ -329,8 +329,9 @@ static int __init sa1110_cpu_init(struct cpufreq_policy *policy)
}
static
struct
cpufreq_driver
sa1110_driver
=
{
.
flags
=
(
CPUFREQ_PANIC_OUTOFSYNC
|
CPUFREQ_PANIC_RESUME_OUTOFSYNC
),
.
flags
=
CPUFREQ_STICKY
|
CPUFREQ_PANIC_OUTOFSYNC
|
CPUFREQ_PANIC_RESUME_OUTOFSYNC
,
.
verify
=
sa11x0_verify_speed
,
.
target
=
sa1110_target
,
.
get
=
sa11x0_getspeed
,
...
...
arch/i386/kernel/cpu/cpufreq/elanfreq.c
View file @
3b89d486
...
...
@@ -254,6 +254,7 @@ static int elanfreq_cpu_exit(struct cpufreq_policy *policy)
static
int
__init
elanfreq_setup
(
char
*
str
)
{
max_freq
=
simple_strtoul
(
str
,
&
str
,
0
);
printk
(
KERN_WARNING
"You're using the deprecated elanfreq command line option. Use elanfreq.max_freq instead, please!
\n
"
);
return
1
;
}
__setup
(
"elanfreq="
,
elanfreq_setup
);
...
...
@@ -300,7 +301,7 @@ static void __exit elanfreq_exit(void)
}
MODULE_PARM
(
max_freq
,
"i"
);
module_param
(
max_freq
,
int
,
0444
);
MODULE_LICENSE
(
"GPL"
);
MODULE_AUTHOR
(
"Robert Schwebel <r.schwebel@pengutronix.de>, Sven Geggus <sven@geggus.net>"
);
...
...
arch/i386/kernel/cpu/cpufreq/gx-suspmod.c
View file @
3b89d486
...
...
@@ -124,7 +124,7 @@ static int stock_freq;
/* PCI bus clock - defaults to 30.000 if cpu_khz is not available */
static
int
pci_busclk
=
0
;
MODULE_PARM
(
pci_busclk
,
"i"
);
module_param
(
pci_busclk
,
int
,
0444
);
/* maximum duration for which the cpu may be suspended
* (32us * MAX_DURATION). If no parameter is given, this defaults
...
...
@@ -133,7 +133,7 @@ MODULE_PARM(pci_busclk, "i");
* is suspended -- processing power is just 0.39% of what it used to be,
* though. 781.25 kHz(!) for a 200 MHz processor -- wow. */
static
int
max_duration
=
255
;
MODULE_PARM
(
max_duration
,
"i"
);
module_param
(
max_duration
,
int
,
0444
);
/* For the default policy, we want at least some processing power
* - let's say 5%. (min = maxfreq / POLICY_MIN_DIV)
...
...
arch/i386/kernel/cpu/cpufreq/longhaul.c
View file @
3b89d486
...
...
@@ -36,6 +36,7 @@
static
unsigned
int
numscales
=
16
,
numvscales
;
static
unsigned
int
fsb
;
static
int
minvid
,
maxvid
;
static
unsigned
int
minmult
,
maxmult
;
static
int
can_scale_voltage
;
static
int
vrmrev
;
...
...
@@ -45,11 +46,15 @@ static int debug;
static
void
dprintk
(
const
char
*
fmt
,
...)
{
char
s
[
256
];
va_list
args
;
if
(
debug
==
0
)
return
;
va_start
(
args
,
fmt
);
printk
(
fmt
,
args
);
vsprintf
(
s
,
fmt
,
args
);
printk
(
s
);
va_end
(
args
);
}
...
...
@@ -65,7 +70,7 @@ static int longhaul_version;
static
struct
cpufreq_frequency_table
*
longhaul_table
;
static
unsigned
int
calc_speed
(
int
mult
,
int
fsb
)
static
unsigned
int
calc_speed
(
int
mult
,
int
fsb
)
{
int
khz
;
khz
=
(
mult
/
10
)
*
fsb
;
...
...
@@ -76,7 +81,7 @@ static unsigned int calc_speed (int mult, int fsb)
}
static
int
longhaul_get_cpu_mult
(
void
)
static
int
longhaul_get_cpu_mult
(
void
)
{
unsigned
long
invalue
=
0
,
lo
,
hi
;
...
...
@@ -97,7 +102,7 @@ static int longhaul_get_cpu_mult (void)
* Sets a new clock ratio, and -if applicable- a new Front Side Bus
*/
static
void
longhaul_setstate
(
unsigned
int
clock_ratio_index
)
static
void
longhaul_setstate
(
unsigned
int
clock_ratio_index
)
{
int
speed
,
mult
;
struct
cpufreq_freqs
freqs
;
...
...
@@ -193,7 +198,7 @@ static void longhaul_setstate (unsigned int clock_ratio_index)
#define ROUNDING 0xf
static
int
_guess
(
int
guess
,
int
maxmult
)
static
int
_guess
(
int
guess
)
{
int
target
;
...
...
@@ -206,7 +211,7 @@ static int _guess (int guess, int maxmult)
}
static
int
guess_fsb
(
int
maxmult
)
static
int
guess_fsb
(
void
)
{
int
speed
=
(
cpu_khz
/
1000
);
int
i
;
...
...
@@ -216,18 +221,17 @@ static int guess_fsb(int maxmult)
speed
&=
~
ROUNDING
;
for
(
i
=
0
;
i
<
3
;
i
++
)
{
if
(
_guess
(
speeds
[
i
]
,
maxmult
)
==
speed
)
if
(
_guess
(
speeds
[
i
])
==
speed
)
return
speeds
[
i
];
}
return
0
;
}
static
int
__init
longhaul_get_ranges
(
void
)
static
int
__init
longhaul_get_ranges
(
void
)
{
struct
cpuinfo_x86
*
c
=
cpu_data
;
unsigned
long
invalue
;
unsigned
int
minmult
=
0
,
maxmult
=
0
;
unsigned
int
multipliers
[
32
]
=
{
50
,
30
,
40
,
100
,
55
,
35
,
45
,
95
,
90
,
70
,
80
,
60
,
120
,
75
,
85
,
65
,
-
1
,
110
,
120
,
-
1
,
135
,
115
,
125
,
105
,
130
,
150
,
160
,
140
,
-
1
,
155
,
-
1
,
145
};
...
...
@@ -248,7 +252,7 @@ static int __init longhaul_get_ranges (void)
if
(
c
->
x86_model
==
6
)
fsb
=
eblcr_fsb_table_v1
[
invalue
];
else
fsb
=
guess_fsb
(
maxmult
);
fsb
=
guess_fsb
();
break
;
case
2
:
...
...
@@ -398,7 +402,7 @@ static int longhaul_verify(struct cpufreq_policy *policy)
}
static
int
longhaul_target
(
struct
cpufreq_policy
*
policy
,
static
int
longhaul_target
(
struct
cpufreq_policy
*
policy
,
unsigned
int
target_freq
,
unsigned
int
relation
)
{
...
...
@@ -422,7 +426,7 @@ static unsigned int longhaul_get(unsigned int cpu)
return
(
calc_speed
(
longhaul_get_cpu_mult
(),
fsb
));
}
static
int
__init
longhaul_cpu_init
(
struct
cpufreq_policy
*
policy
)
static
int
__init
longhaul_cpu_init
(
struct
cpufreq_policy
*
policy
)
{
struct
cpuinfo_x86
*
c
=
cpu_data
;
char
*
cpuname
=
NULL
;
...
...
@@ -536,7 +540,7 @@ static struct cpufreq_driver longhaul_driver = {
.
attr
=
longhaul_attr
,
};
static
int
__init
longhaul_init
(
void
)
static
int
__init
longhaul_init
(
void
)
{
struct
cpuinfo_x86
*
c
=
cpu_data
;
...
...
@@ -553,8 +557,17 @@ static int __init longhaul_init (void)
return
-
ENODEV
;
}
static
void
__exit
longhaul_exit
(
void
)
static
void
__exit
longhaul_exit
(
void
)
{
int
i
=
0
;
unsigned
int
new_clock_ratio
;
while
(
clock_ratio
[
i
]
!=
maxmult
)
i
++
;
new_clock_ratio
=
longhaul_table
[
i
].
index
&
0xFF
;
longhaul_setstate
(
new_clock_ratio
);
cpufreq_unregister_driver
(
&
longhaul_driver
);
kfree
(
longhaul_table
);
}
...
...
arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
View file @
3b89d486
...
...
@@ -27,6 +27,7 @@
#include <linux/smp.h>
#include <linux/cpufreq.h>
#include <linux/slab.h>
#include <linux/cpumask.h>
#include <asm/processor.h>
#include <asm/msr.h>
...
...
@@ -132,34 +133,28 @@ static int cpufreq_p4_target(struct cpufreq_policy *policy,
#endif
/* notifiers */
for_each_cpu
(
i
)
{
if
(
cpu_isset
(
i
,
affected_cpu_map
))
{
freqs
.
cpu
=
i
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
}
for_each_cpu_mask
(
i
,
affected_cpu_map
)
{
freqs
.
cpu
=
i
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
}
/* run on each logical CPU, see section 13.15.3 of IA32 Intel Architecture Software
* Developer's Manual, Volume 3
*/
for_each_cpu
(
i
)
{
if
(
cpu_isset
(
i
,
affected_cpu_map
))
{
cpumask_t
this_cpu
=
cpumask_of_cpu
(
i
);
for_each_cpu_mask
(
i
,
affected_cpu_map
)
{
cpumask_t
this_cpu
=
cpumask_of_cpu
(
i
);
set_cpus_allowed
(
current
,
this_cpu
);
BUG_ON
(
smp_processor_id
()
!=
i
);
set_cpus_allowed
(
current
,
this_cpu
);
BUG_ON
(
smp_processor_id
()
!=
i
);
cpufreq_p4_setdc
(
i
,
p4clockmod_table
[
newstate
].
index
);
}
cpufreq_p4_setdc
(
i
,
p4clockmod_table
[
newstate
].
index
);
}
set_cpus_allowed
(
current
,
cpus_allowed
);
/* notifiers */
for_each_cpu
(
i
)
{
if
(
cpu_isset
(
i
,
affected_cpu_map
))
{
freqs
.
cpu
=
i
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
}
for_each_cpu_mask
(
i
,
affected_cpu_map
)
{
freqs
.
cpu
=
i
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
}
return
0
;
...
...
arch/i386/kernel/cpu/cpufreq/powernow-k8.c
View file @
3b89d486
...
...
@@ -733,10 +733,22 @@ static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data)
continue
;
}
/* verify only 1 entry from the lo frequency table */
if
((
fid
<
HI_FID_TABLE_BOTTOM
)
&&
(
cntlofreq
++
))
{
printk
(
KERN_ERR
PFX
"Too many lo freq table entries
\n
"
);
goto
err_out_mem
;
if
(
fid
<
HI_FID_TABLE_BOTTOM
)
{
if
(
cntlofreq
)
{
/* if both entries are the same, ignore this
* one...
*/
if
((
powernow_table
[
i
].
frequency
!=
powernow_table
[
cntlofreq
].
frequency
)
||
(
powernow_table
[
i
].
index
!=
powernow_table
[
cntlofreq
].
index
))
{
printk
(
KERN_ERR
PFX
"Too many lo freq table entries
\n
"
);
goto
err_out_mem
;
}
dprintk
(
KERN_INFO
PFX
"double low frequency table entry, ignoring it.
\n
"
);
powernow_table
[
i
].
frequency
=
CPUFREQ_ENTRY_INVALID
;
continue
;
}
else
cntlofreq
=
i
;
}
if
(
powernow_table
[
i
].
frequency
!=
(
data
->
acpi_data
.
states
[
i
].
core_frequency
*
1000
))
{
...
...
@@ -857,12 +869,9 @@ static int powernowk8_target(struct cpufreq_policy *pol, unsigned targfreq, unsi
if
(
smp_processor_id
()
!=
pol
->
cpu
)
{
printk
(
KERN_ERR
"limiting to cpu %u failed
\n
"
,
pol
->
cpu
);
goto
sched
_out
;
goto
err
_out
;
}
/* from this point, do not exit without restoring preempt and cpu */
preempt_disable
();
if
(
pending_bit_stuck
())
{
printk
(
KERN_ERR
PFX
"failing targ, change pending bit set
\n
"
);
goto
err_out
;
...
...
@@ -900,8 +909,6 @@ static int powernowk8_target(struct cpufreq_policy *pol, unsigned targfreq, unsi
ret
=
0
;
err_out:
preempt_enable_no_resched
();
sched_out:
set_cpus_allowed
(
current
,
oldmask
);
schedule
();
...
...
arch/i386/kernel/cpu/cpufreq/speedstep-ich.c
View file @
3b89d486
...
...
@@ -67,28 +67,19 @@ static struct cpufreq_frequency_table speedstep_freqs[] = {
/**
* speedstep_set_state - set the SpeedStep state
* @state: new processor frequency state (SPEEDSTEP_LOW or SPEEDSTEP_HIGH)
* @notify: whether to call cpufreq_notify_transition for CPU speed changes
*
* Tries to change the SpeedStep state.
*/
static
void
speedstep_set_state
(
unsigned
int
state
,
unsigned
int
notify
)
static
void
speedstep_set_state
(
unsigned
int
state
)
{
u32
pmbase
;
u8
pm2_blk
;
u8
value
;
unsigned
long
flags
;
struct
cpufreq_freqs
freqs
;
if
(
!
speedstep_chipset_dev
||
(
state
>
0x1
))
return
;
freqs
.
old
=
speedstep_get_processor_frequency
(
speedstep_processor
);
freqs
.
new
=
speedstep_freqs
[
state
].
frequency
;
freqs
.
cpu
=
0
;
/* speedstep.c is UP only driver */
if
(
notify
)
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
/* get PMBASE */
pci_read_config_dword
(
speedstep_chipset_dev
,
0x40
,
&
pmbase
);
if
(
!
(
pmbase
&
0x01
))
...
...
@@ -143,9 +134,6 @@ static void speedstep_set_state (unsigned int state, unsigned int notify)
printk
(
KERN_ERR
"cpufreq: change failed - I/O error
\n
"
);
}
if
(
notify
)
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
return
;
}
...
...
@@ -252,11 +240,47 @@ static int speedstep_target (struct cpufreq_policy *policy,
unsigned
int
relation
)
{
unsigned
int
newstate
=
0
;
struct
cpufreq_freqs
freqs
;
cpumask_t
cpus_allowed
,
affected_cpu_map
;
int
i
;
if
(
cpufreq_frequency_table_target
(
policy
,
&
speedstep_freqs
[
0
],
target_freq
,
relation
,
&
newstate
))
return
-
EINVAL
;
speedstep_set_state
(
newstate
,
1
);
/* no transition necessary */
if
(
freqs
.
old
==
freqs
.
new
)
return
0
;
freqs
.
old
=
speedstep_get_processor_frequency
(
speedstep_processor
);
freqs
.
new
=
speedstep_freqs
[
newstate
].
frequency
;
freqs
.
cpu
=
policy
->
cpu
;
cpus_allowed
=
current
->
cpus_allowed
;
/* only run on CPU to be set, or on its sibling */
#ifdef CONFIG_SMP
affected_cpu_map
=
cpu_sibling_map
[
policy
->
cpu
];
#else
affected_cpu_map
=
cpumask_of_cpu
(
policy
->
cpu
);
#endif
for_each_cpu_mask
(
i
,
affected_cpu_map
)
{
freqs
.
cpu
=
i
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
}
/* switch to physical CPU where state is to be changed */
set_cpus_allowed
(
current
,
affected_cpu_map
);
speedstep_set_state
(
newstate
);
/* allow to be run on all CPUs */
set_cpus_allowed
(
current
,
cpus_allowed
);
for_each_cpu_mask
(
i
,
affected_cpu_map
)
{
freqs
.
cpu
=
i
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
}
return
0
;
}
...
...
@@ -279,21 +303,35 @@ static int speedstep_cpu_init(struct cpufreq_policy *policy)
{
int
result
=
0
;
unsigned
int
speed
;
cpumask_t
cpus_allowed
,
affected_cpu_map
;
/* capability check */
if
(
policy
->
cpu
!=
0
)
if
(
policy
->
cpu
!=
0
)
/* FIXME: better support for SMT in cpufreq core. Up until then, it's better to register only one CPU */
return
-
ENODEV
;
/* only run on CPU to be set, or on its sibling */
cpus_allowed
=
current
->
cpus_allowed
;
#ifdef CONFIG_SMP
affected_cpu_map
=
cpu_sibling_map
[
policy
->
cpu
];
#else
affected_cpu_map
=
cpumask_of_cpu
(
policy
->
cpu
);
#endif
set_cpus_allowed
(
current
,
affected_cpu_map
);
/* detect low and high frequency */
result
=
speedstep_get_freqs
(
speedstep_processor
,
&
speedstep_freqs
[
SPEEDSTEP_LOW
].
frequency
,
&
speedstep_freqs
[
SPEEDSTEP_HIGH
].
frequency
,
&
speedstep_set_state
);
if
(
result
)
if
(
result
)
{
set_cpus_allowed
(
current
,
cpus_allowed
);
return
result
;
}
/* get current speed setting */
speed
=
speedstep_get_processor_frequency
(
speedstep_processor
);
set_cpus_allowed
(
current
,
cpus_allowed
);
if
(
!
speed
)
return
-
EIO
;
...
...
arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
View file @
3b89d486
...
...
@@ -252,11 +252,10 @@ unsigned int speedstep_detect_processor (void)
* specific.
* M-P4-Ms may have either ebx=0xe or 0xf [see above]
* M-P4/533 have either ebx=0xe or 0xf. [25317607.pdf]
* So, how to distinguish all those processors with
* ebx=0xf? I don't know. Sort them out, and wait
* for someone to complain.
* also, M-P4M HTs have ebx=0x8, too
* For now, they are distinguished by the model_id string
*/
if
(
ebx
==
0x0e
)
if
((
ebx
==
0x0e
)
||
(
strstr
(
c
->
x86_model_id
,
"Mobile Intel(R) Pentium(R) 4"
)
!=
NULL
))
return
SPEEDSTEP_PROCESSOR_P4M
;
break
;
default:
...
...
@@ -321,9 +320,7 @@ EXPORT_SYMBOL_GPL(speedstep_detect_processor);
unsigned
int
speedstep_get_freqs
(
unsigned
int
processor
,
unsigned
int
*
low_speed
,
unsigned
int
*
high_speed
,
void
(
*
set_state
)
(
unsigned
int
state
,
unsigned
int
notify
)
)
void
(
*
set_state
)
(
unsigned
int
state
))
{
unsigned
int
prev_speed
;
unsigned
int
ret
=
0
;
...
...
@@ -340,7 +337,7 @@ unsigned int speedstep_get_freqs(unsigned int processor,
local_irq_save
(
flags
);
/* switch to low state */
set_state
(
SPEEDSTEP_LOW
,
0
);
set_state
(
SPEEDSTEP_LOW
);
*
low_speed
=
speedstep_get_processor_frequency
(
processor
);
if
(
!*
low_speed
)
{
ret
=
-
EIO
;
...
...
@@ -348,7 +345,7 @@ unsigned int speedstep_get_freqs(unsigned int processor,
}
/* switch to high state */
set_state
(
SPEEDSTEP_HIGH
,
0
);
set_state
(
SPEEDSTEP_HIGH
);
*
high_speed
=
speedstep_get_processor_frequency
(
processor
);
if
(
!*
high_speed
)
{
ret
=
-
EIO
;
...
...
@@ -362,7 +359,7 @@ unsigned int speedstep_get_freqs(unsigned int processor,
/* switch to previous state, if necessary */
if
(
*
high_speed
!=
prev_speed
)
set_state
(
SPEEDSTEP_LOW
,
0
);
set_state
(
SPEEDSTEP_LOW
);
out:
local_irq_restore
(
flags
);
...
...
arch/i386/kernel/cpu/cpufreq/speedstep-lib.h
View file @
3b89d486
...
...
@@ -44,4 +44,4 @@ extern unsigned int speedstep_get_processor_frequency(unsigned int processor);
extern
unsigned
int
speedstep_get_freqs
(
unsigned
int
processor
,
unsigned
int
*
low_speed
,
unsigned
int
*
high_speed
,
void
(
*
set_state
)
(
unsigned
int
state
,
unsigned
int
notify
));
void
(
*
set_state
)
(
unsigned
int
state
));
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
View file @
3b89d486
...
...
@@ -139,37 +139,24 @@ static int speedstep_get_state (void)
:
"a"
(
command
),
"b"
(
function
),
"c"
(
0
),
"d"
(
smi_port
),
"S"
(
0
)
);
return
state
;
return
(
state
&
1
)
;
}
/**
* speedstep_set_state - set the SpeedStep state
* @state: new processor frequency state (SPEEDSTEP_LOW or SPEEDSTEP_HIGH)
* @notify: whether to call cpufreq_notify_transition
*
*/
static
void
speedstep_set_state
(
unsigned
int
state
,
unsigned
int
notify
)
static
void
speedstep_set_state
(
unsigned
int
state
)
{
unsigned
int
old_state
,
result
=
0
,
command
,
new_state
;
unsigned
int
result
=
0
,
command
,
new_state
;
unsigned
long
flags
;
struct
cpufreq_freqs
freqs
;
unsigned
int
function
=
SET_SPEEDSTEP_STATE
;
unsigned
int
retry
=
0
;
if
(
state
>
0x1
)
return
;
old_state
=
speedstep_get_state
();
freqs
.
old
=
speedstep_freqs
[
old_state
].
frequency
;
freqs
.
new
=
speedstep_freqs
[
state
].
frequency
;
freqs
.
cpu
=
0
;
/* speedstep.c is UP only driver */
if
(
old_state
==
state
)
return
;
if
(
notify
)
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
/* Disable IRQs */
local_irq_save
(
flags
);
...
...
@@ -198,9 +185,6 @@ static void speedstep_set_state (unsigned int state, unsigned int notify)
printk
(
KERN_ERR
"cpufreq: change failed with new_state %u and result %u
\n
"
,
new_state
,
result
);
}
if
(
notify
)
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
return
;
}
...
...
@@ -217,11 +201,21 @@ static int speedstep_target (struct cpufreq_policy *policy,
unsigned
int
target_freq
,
unsigned
int
relation
)
{
unsigned
int
newstate
=
0
;
struct
cpufreq_freqs
freqs
;
if
(
cpufreq_frequency_table_target
(
policy
,
&
speedstep_freqs
[
0
],
target_freq
,
relation
,
&
newstate
))
return
-
EINVAL
;
speedstep_set_state
(
newstate
,
1
);
freqs
.
old
=
speedstep_freqs
[
speedstep_get_state
()].
frequency
;
freqs
.
new
=
speedstep_freqs
[
newstate
].
frequency
;
freqs
.
cpu
=
0
;
/* speedstep.c is UP only driver */
if
(
freqs
.
old
==
freqs
.
new
)
return
0
;
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
speedstep_set_state
(
newstate
);
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
return
0
;
}
...
...
drivers/cpufreq/cpufreq.c
View file @
3b89d486
...
...
@@ -722,7 +722,12 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
unsigned
int
target_freq
,
unsigned
int
relation
)
{
return
cpufreq_driver
->
target
(
policy
,
target_freq
,
relation
);
int
retval
=
-
EINVAL
;
lock_cpu_hotplug
();
if
(
cpu_online
(
policy
->
cpu
))
retval
=
cpufreq_driver
->
target
(
policy
,
target_freq
,
relation
);
unlock_cpu_hotplug
();
return
retval
;
}
EXPORT_SYMBOL_GPL
(
__cpufreq_driver_target
);
...
...
drivers/net/arm/am79c961a.c
View file @
3b89d486
...
...
@@ -53,25 +53,31 @@ static const char version[] =
#ifdef __arm__
static
void
write_rreg
(
u_long
base
,
u_int
reg
,
u_int
val
)
{
__asm__
(
"str%?h %1, [%2] @ NET_RAP
str%?h %0, [%2, #-4] @ NET_RDP
"
:
:
"r"
(
val
),
"r"
(
reg
),
"r"
(
ISAIO_BASE
+
0x0464
));
__asm__
(
"str%?h %1, [%2] @ NET_RAP
\n\t
"
"str%?h %0, [%2, #-4] @ NET_RDP"
:
:
"r"
(
val
),
"r"
(
reg
),
"r"
(
ISAIO_BASE
+
0x0464
));
}
static
inline
unsigned
short
read_rreg
(
u_long
base_addr
,
u_int
reg
)
{
unsigned
short
v
;
__asm__
(
"str%?h %1, [%2] @ NET_RAP
ldr%?h %0, [%2, #-4] @ NET_RDP
"
:
"=r"
(
v
)
:
"r"
(
reg
),
"r"
(
ISAIO_BASE
+
0x0464
));
__asm__
(
"str%?h %1, [%2] @ NET_RAP
\n\t
"
"ldr%?h %0, [%2, #-4] @ NET_RDP"
:
"=r"
(
v
)
:
"r"
(
reg
),
"r"
(
ISAIO_BASE
+
0x0464
));
return
v
;
}
static
inline
void
write_ireg
(
u_long
base
,
u_int
reg
,
u_int
val
)
{
__asm__
(
"str%?h %1, [%2] @ NET_RAP
str%?h %0, [%2, #8] @ NET_IDP
"
:
:
"r"
(
val
),
"r"
(
reg
),
"r"
(
ISAIO_BASE
+
0x0464
));
__asm__
(
"str%?h %1, [%2] @ NET_RAP
\n\t
"
"str%?h %0, [%2, #8] @ NET_IDP"
:
:
"r"
(
val
),
"r"
(
reg
),
"r"
(
ISAIO_BASE
+
0x0464
));
}
static
inline
unsigned
short
read_ireg
(
u_long
base_addr
,
u_int
reg
)
...
...
@@ -101,16 +107,16 @@ am_writebuffer(struct net_device *dev, u_int offset, unsigned char *buf, unsigne
}
while
(
length
>
8
)
{
unsigned
int
tmp
,
tmp2
;
__asm__
__volatile__
(
"
ldm%?ia %1!, {%2, %3}
str%?h %2, [%0], #4
mov%? %2, %2, lsr #16
str%?h %2, [%0], #4
str%?h %3, [%0], #4
mov%? %3, %3, lsr #16
str%?h %3, [%0], #4
"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
),
"=r"
(
tmp2
)
:
"0"
(
offset
),
"1"
(
buf
));
__asm__
__volatile__
(
"ldm%?ia %1!, {%2, %3}
\n\t
"
"str%?h %2, [%0], #4
\n\t
"
"mov%? %2, %2, lsr #16
\n\t
"
"str%?h %2, [%0], #4
\n\t
"
"str%?h %3, [%0], #4
\n\t
"
"mov%? %3, %3, lsr #16
\n\t
"
"str%?h %3, [%0], #4"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
),
"=r"
(
tmp2
)
:
"0"
(
offset
),
"1"
(
buf
));
length
-=
8
;
}
while
(
length
>
0
)
{
...
...
@@ -128,36 +134,36 @@ am_readbuffer(struct net_device *dev, u_int offset, unsigned char *buf, unsigned
length
=
(
length
+
1
)
&
~
1
;
if
((
int
)
buf
&
2
)
{
unsigned
int
tmp
;
__asm__
__volatile__
(
"
ldr%?h %2, [%0], #4
str%?b %2, [%1], #1
mov%? %2, %2, lsr #8
str%?b %2, [%1], #1
"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
)
:
"0"
(
offset
),
"1"
(
buf
));
__asm__
__volatile__
(
"ldr%?h %2, [%0], #4
\n\t
"
"str%?b %2, [%1], #1
\n\t
"
"mov%? %2, %2, lsr #8
\n\t
"
"str%?b %2, [%1], #1"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
)
:
"0"
(
offset
),
"1"
(
buf
));
length
-=
2
;
}
while
(
length
>
8
)
{
unsigned
int
tmp
,
tmp2
,
tmp3
;
__asm__
__volatile__
(
"
ldr%?h %2, [%0], #4
ldr%?h %3, [%0], #4
orr%? %2, %2, %3, lsl #16
ldr%?h %3, [%0], #4
ldr%?h %4, [%0], #4
orr%? %3, %3, %4, lsl #16
stm%?ia %1!, {%2, %3}
"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
),
"=r"
(
tmp2
),
"=r"
(
tmp3
)
:
"0"
(
offset
),
"1"
(
buf
));
__asm__
__volatile__
(
"ldr%?h %2, [%0], #4
\n\t
"
"ldr%?h %3, [%0], #4
\n\t
"
"orr%? %2, %2, %3, lsl #16
\n\t
"
"ldr%?h %3, [%0], #4
\n\t
"
"ldr%?h %4, [%0], #4
\n\t
"
"orr%? %3, %3, %4, lsl #16
\n\t
"
"stm%?ia %1!, {%2, %3}"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
),
"=r"
(
tmp2
),
"=r"
(
tmp3
)
:
"0"
(
offset
),
"1"
(
buf
));
length
-=
8
;
}
while
(
length
>
0
)
{
unsigned
int
tmp
;
__asm__
__volatile__
(
"
ldr%?h %2, [%0], #4
str%?b %2, [%1], #1
mov%? %2, %2, lsr #8
str%?b %2, [%1], #1
"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
)
:
"0"
(
offset
),
"1"
(
buf
));
__asm__
__volatile__
(
"ldr%?h %2, [%0], #4
\n\t
"
"str%?b %2, [%1], #1
\n\t
"
"mov%? %2, %2, lsr #8
\n\t
"
"str%?b %2, [%1], #1"
:
"=&r"
(
offset
),
"=&r"
(
buf
),
"=r"
(
tmp
)
:
"0"
(
offset
),
"1"
(
buf
));
length
-=
2
;
}
}
...
...
@@ -618,6 +624,7 @@ am79c961_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if
(
status
&
CSR0_CERR
)
{
handled
=
1
;
mod_timer
(
&
priv
->
timer
,
jiffies
);
}
}
while
(
--
n
&&
status
&
(
CSR0_RINT
|
CSR0_TINT
));
return
IRQ_RETVAL
(
handled
);
...
...
fs/jfs/jfs_btree.h
View file @
3b89d486
/*
* Copyright (
c) International Business Machines Corp., 2000-2001
* Copyright (
C) International Business Machines Corp., 2000-2004
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -108,13 +108,12 @@ struct btpage {
* record the path traversed during the search;
* top frame record the leaf page/entry selected.
*/
#define MAXTREEHEIGHT 8
struct
btframe
{
/* stack frame */
s64
bn
;
/* 8: */
s16
index
;
/* 2: */
s16
lastindex
;
/* 2: */
struct
metapage
*
mp
;
/* 4: */
};
/* (16) */
s16
lastindex
;
/* 2:
unused
*/
struct
metapage
*
mp
;
/* 4
/8
: */
};
/* (16
/24
) */
struct
btstack
{
struct
btframe
*
top
;
...
...
@@ -125,12 +124,15 @@ struct btstack {
#define BT_CLR(btstack)\
(btstack)->top = (btstack)->stack
#define BT_STACK_FULL(btstack)\
( (btstack)->top == &((btstack)->stack[MAXTREEHEIGHT-1]))
#define BT_PUSH(BTSTACK, BN, INDEX)\
{\
assert(!BT_STACK_FULL(BTSTACK));\
(BTSTACK)->top->bn = BN;\
(BTSTACK)->top->index = INDEX;\
++(BTSTACK)->top;\
assert((BTSTACK)->top != &((BTSTACK)->stack[MAXTREEHEIGHT]));\
}
#define BT_POP(btstack)\
...
...
@@ -139,6 +141,16 @@ struct btstack {
#define BT_STACK(btstack)\
( (btstack)->top == (btstack)->stack ? NULL : (btstack)->top )
static
inline
void
BT_STACK_DUMP
(
struct
btstack
*
btstack
)
{
int
i
;
printk
(
"btstack dump:
\n
"
);
for
(
i
=
0
;
i
<
MAXTREEHEIGHT
;
i
++
)
printk
(
KERN_ERR
"bn = %Lx, index = %d
\n
"
,
btstack
->
stack
[
i
].
bn
,
btstack
->
stack
[
i
].
index
);
}
/* retrieve search results */
#define BT_GETSEARCH(IP, LEAF, BN, MP, TYPE, P, INDEX, ROOT)\
{\
...
...
fs/jfs/jfs_dmap.c
View file @
3b89d486
/*
* Copyright (C) International Business Machines Corp., 2000-200
3
* Copyright (C) International Business Machines Corp., 2000-200
4
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -382,7 +382,7 @@ int dbFree(struct inode *ip, s64 blkno, s64 nblocks)
IREAD_LOCK
(
ipbmap
);
/* block to be freed better be within the mapsize. */
if
(
blkno
+
nblocks
>
bmp
->
db_mapsize
)
{
if
(
unlikely
((
blkno
==
0
)
||
(
blkno
+
nblocks
>
bmp
->
db_mapsize
))
)
{
IREAD_UNLOCK
(
ipbmap
);
printk
(
KERN_ERR
"blkno = %Lx, nblocks = %Lx
\n
"
,
(
unsigned
long
long
)
blkno
,
...
...
fs/jfs/jfs_dtree.c
View file @
3b89d486
/*
* Copyright (C) International Business Machines Corp., 2000-200
3
* Copyright (C) International Business Machines Corp., 2000-200
4
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -378,6 +378,8 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
* It's time to move the inline table to an external
* page and begin to build the xtree
*/
if
(
dbAlloc
(
ip
,
0
,
sbi
->
nbperpage
,
&
xaddr
))
goto
clean_up
;
/* No space */
/*
* Save the table, we're going to overwrite it with the
...
...
@@ -394,8 +396,8 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
/*
* Allocate the first block & add it to the xtree
*/
xaddr
=
0
;
if
(
xtInsert
(
tid
,
ip
,
0
,
0
,
sbi
->
nbperpage
,
&
xaddr
,
0
))
{
/* This really shouldn't fail */
jfs_warn
(
"add_index: xtInsert failed!"
);
memcpy
(
&
jfs_ip
->
i_dirtable
,
temp_table
,
sizeof
(
temp_table
));
...
...
@@ -764,11 +766,12 @@ int dtSearch(struct inode *ip, struct component_name * key, ino_t * data,
*/
getChild:
/* update max. number of pages to split */
if
(
btstack
->
nsplit
>=
8
)
{
if
(
BT_STACK_FULL
(
btstack
)
)
{
/* Something's corrupted, mark filesytem dirty so
* chkdsk will fix it.
*/
jfs_error
(
sb
,
"stack overrun in dtSearch!"
);
BT_STACK_DUMP
(
btstack
);
rc
=
-
EIO
;
goto
out
;
}
...
...
@@ -975,8 +978,10 @@ static int dtSplitUp(tid_t tid,
n
-=
DTROOTMAXSLOT
-
sp
->
header
.
freecnt
;
/* header + entries */
if
(
n
<=
split
->
nslot
)
xlen
++
;
if
((
rc
=
dbAlloc
(
ip
,
0
,
(
s64
)
xlen
,
&
xaddr
)))
if
((
rc
=
dbAlloc
(
ip
,
0
,
(
s64
)
xlen
,
&
xaddr
)))
{
DT_PUTPAGE
(
smp
);
goto
freeKeyName
;
}
pxdlist
.
maxnpxd
=
1
;
pxdlist
.
npxd
=
0
;
...
...
@@ -3342,6 +3347,12 @@ static int dtReadFirst(struct inode *ip, struct btstack * btstack)
/*
* descend down to leftmost child page
*/
if
(
BT_STACK_FULL
(
btstack
))
{
DT_PUTPAGE
(
mp
);
jfs_error
(
ip
->
i_sb
,
"dtReadFirst: btstack overrun"
);
BT_STACK_DUMP
(
btstack
);
return
-
EIO
;
}
/* push (bn, index) of the parent page/entry */
BT_PUSH
(
btstack
,
bn
,
0
);
...
...
fs/jfs/jfs_metapage.c
View file @
3b89d486
...
...
@@ -239,6 +239,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
spin_unlock
(
&
meta_lock
);
if
(
test_bit
(
META_stale
,
&
mp
->
flag
))
{
release_metapage
(
mp
);
yield
();
/* Let other waiters release it, too */
goto
again
;
}
if
(
test_bit
(
META_discard
,
&
mp
->
flag
))
{
...
...
fs/jfs/jfs_txnmgr.c
View file @
3b89d486
...
...
@@ -1747,7 +1747,10 @@ static void xtLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
if
(
lwm
==
next
)
goto
out
;
assert
(
lwm
<
next
);
if
(
lwm
>
next
)
{
jfs_err
(
"xtLog: lwm > next
\n
"
);
goto
out
;
}
tlck
->
flag
|=
tlckUPDATEMAP
;
xadlock
->
flag
=
mlckALLOCXADLIST
;
xadlock
->
count
=
next
-
lwm
;
...
...
@@ -1913,25 +1916,18 @@ static void xtLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
/*
* write log records
*/
/*
* allocate entries XAD[lwm:next]:
/* log after-image for logredo():
*
* logredo() will update bmap for alloc of new/extended
* extents (XAD_NEW|XAD_EXTEND) of XAD[lwm:next) from
* after-image of XADlist;
* logredo() resets (XAD_NEW|XAD_EXTEND) flag when
* applying the after-image to the meta-data page.
*/
if
(
lwm
<
next
)
{
/* log after-image for logredo():
* logredo() will update bmap for alloc of new/extended
* extents (XAD_NEW|XAD_EXTEND) of XAD[lwm:next) from
* after-image of XADlist;
* logredo() resets (XAD_NEW|XAD_EXTEND) flag when
* applying the after-image to the meta-data page.
*/
lrd
->
type
=
cpu_to_le16
(
LOG_REDOPAGE
);
PXDaddress
(
pxd
,
mp
->
index
);
PXDlength
(
pxd
,
mp
->
logical_size
>>
tblk
->
sb
->
s_blocksize_bits
);
lrd
->
backchain
=
cpu_to_le32
(
lmLog
(
log
,
tblk
,
lrd
,
tlck
));
}
lrd
->
type
=
cpu_to_le16
(
LOG_REDOPAGE
);
PXDaddress
(
pxd
,
mp
->
index
);
PXDlength
(
pxd
,
mp
->
logical_size
>>
tblk
->
sb
->
s_blocksize_bits
);
lrd
->
backchain
=
cpu_to_le32
(
lmLog
(
log
,
tblk
,
lrd
,
tlck
));
/*
* truncate entry XAD[twm == next - 1]:
...
...
@@ -2624,6 +2620,7 @@ void txAbort(tid_t tid, int dirty)
lid_t
lid
,
next
;
struct
metapage
*
mp
;
struct
tblock
*
tblk
=
tid_to_tblock
(
tid
);
struct
tlock
*
tlck
;
jfs_warn
(
"txAbort: tid:%d dirty:0x%x"
,
tid
,
dirty
);
...
...
@@ -2631,9 +2628,10 @@ void txAbort(tid_t tid, int dirty)
* free tlocks of the transaction
*/
for
(
lid
=
tblk
->
next
;
lid
;
lid
=
next
)
{
next
=
lid_to_tlock
(
lid
)
->
next
;
mp
=
lid_to_tlock
(
lid
)
->
mp
;
tlck
=
lid_to_tlock
(
lid
);
next
=
tlck
->
next
;
mp
=
tlck
->
mp
;
JFS_IP
(
tlck
->
ip
)
->
xtlid
=
0
;
if
(
mp
)
{
mp
->
lid
=
0
;
...
...
fs/jfs/jfs_types.h
View file @
3b89d486
...
...
@@ -113,11 +113,12 @@ typedef struct {
#define addressPXD(pxd)\
( ((s64)((pxd)->addr1)) << 32 | __le32_to_cpu((pxd)->addr2))
#define MAXTREEHEIGHT 8
/* pxd list */
struct
pxdlist
{
s16
maxnpxd
;
s16
npxd
;
pxd_t
pxd
[
8
];
pxd_t
pxd
[
MAXTREEHEIGHT
];
};
...
...
fs/jfs/namei.c
View file @
3b89d486
...
...
@@ -858,7 +858,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
unchar
*
i_fastsymlink
;
s64
xlen
=
0
;
int
bmask
=
0
,
xsize
;
s64
xaddr
;
s64
extent
=
0
,
xaddr
;
struct
metapage
*
mp
;
struct
super_block
*
sb
;
struct
tblock
*
tblk
;
...
...
@@ -892,29 +892,11 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
down
(
&
JFS_IP
(
dip
)
->
commit_sem
);
down
(
&
JFS_IP
(
ip
)
->
commit_sem
);
if
((
rc
=
dtSearch
(
dip
,
&
dname
,
&
ino
,
&
btstack
,
JFS_CREATE
)))
goto
out3
;
tblk
=
tid_to_tblock
(
tid
);
tblk
->
xflag
|=
COMMIT_CREATE
;
tblk
->
ino
=
ip
->
i_ino
;
tblk
->
u
.
ixpxd
=
JFS_IP
(
ip
)
->
ixpxd
;
/*
* create entry for symbolic link in parent directory
*/
ino
=
ip
->
i_ino
;
if
((
rc
=
dtInsert
(
tid
,
dip
,
&
dname
,
&
ino
,
&
btstack
)))
{
jfs_err
(
"jfs_symlink: dtInsert returned %d"
,
rc
);
/* discard ne inode */
goto
out3
;
}
/* fix symlink access permission
* (dir_create() ANDs in the u.u_cmask,
* but symlinks really need to be 777 access)
...
...
@@ -922,7 +904,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
ip
->
i_mode
|=
0777
;
/*
*
write symbolic link target path name
*
write symbolic link target path name
*/
xtInitRoot
(
tid
,
ip
);
...
...
@@ -966,37 +948,48 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
xsize
=
(
ssize
+
bmask
)
&
~
bmask
;
xaddr
=
0
;
xlen
=
xsize
>>
JFS_SBI
(
sb
)
->
l2bsize
;
if
((
rc
=
xtInsert
(
tid
,
ip
,
0
,
0
,
xlen
,
&
xaddr
,
0
))
==
0
)
{
ip
->
i_size
=
ssize
-
1
;
while
(
ssize
)
{
int
copy_size
=
min
(
ssize
,
PSIZE
);
mp
=
get_metapage
(
ip
,
xaddr
,
PSIZE
,
1
);
if
(
mp
==
NULL
)
{
dtDelete
(
tid
,
dip
,
&
dname
,
&
ino
,
JFS_REMOVE
);
rc
=
-
EIO
;
goto
out3
;
}
memcpy
(
mp
->
data
,
name
,
copy_size
);
flush_metapage
(
mp
);
#if 0
set_buffer_uptodate(bp);
mark_buffer_dirty(bp, 1);
if (IS_SYNC(dip))
sync_dirty_buffer(bp);
brelse(bp);
#endif /* 0 */
ssize
-=
copy_size
;
xaddr
+=
JFS_SBI
(
sb
)
->
nbperpage
;
}
ip
->
i_blocks
=
LBLK2PBLK
(
sb
,
xlen
);
}
else
{
dtDelete
(
tid
,
dip
,
&
dname
,
&
ino
,
JFS_REMOVE
);
if
((
rc
=
xtInsert
(
tid
,
ip
,
0
,
0
,
xlen
,
&
xaddr
,
0
)))
{
txAbort
(
tid
,
0
);
rc
=
-
ENOSPC
;
goto
out3
;
}
extent
=
xaddr
;
ip
->
i_size
=
ssize
-
1
;
while
(
ssize
)
{
/* This is kind of silly since PATH_MAX == 4K */
int
copy_size
=
min
(
ssize
,
PSIZE
);
mp
=
get_metapage
(
ip
,
xaddr
,
PSIZE
,
1
);
if
(
mp
==
NULL
)
{
dbFree
(
ip
,
extent
,
xlen
);
rc
=
-
EIO
;
txAbort
(
tid
,
0
);
goto
out3
;
}
memcpy
(
mp
->
data
,
name
,
copy_size
);
flush_metapage
(
mp
);
ssize
-=
copy_size
;
name
+=
copy_size
;
xaddr
+=
JFS_SBI
(
sb
)
->
nbperpage
;
}
ip
->
i_blocks
=
LBLK2PBLK
(
sb
,
xlen
);
}
/*
* create entry for symbolic link in parent directory
*/
rc
=
dtSearch
(
dip
,
&
dname
,
&
ino
,
&
btstack
,
JFS_CREATE
);
if
(
rc
==
0
)
{
ino
=
ip
->
i_ino
;
rc
=
dtInsert
(
tid
,
dip
,
&
dname
,
&
ino
,
&
btstack
);
}
if
(
rc
)
{
if
(
xlen
)
dbFree
(
ip
,
extent
,
xlen
);
txAbort
(
tid
,
0
);
/* discard new inode */
goto
out3
;
}
insert_inode_hash
(
ip
);
...
...
@@ -1004,23 +997,11 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
/*
* commit update of parent directory and link object
*
* if extent allocation failed (ENOSPC),
* the parent inode is committed regardless to avoid
* backing out parent directory update (by dtInsert())
* and subsequent dtDelete() which is harmless wrt
* integrity concern.
* the symlink inode will be freed by iput() at exit
* as it has a zero link count (by dtDelete()) and
* no permanant resources.
*/
iplist
[
0
]
=
dip
;
if
(
rc
==
0
)
{
iplist
[
1
]
=
ip
;
rc
=
txCommit
(
tid
,
2
,
&
iplist
[
0
],
0
);
}
else
rc
=
txCommit
(
tid
,
1
,
&
iplist
[
0
],
0
);
iplist
[
1
]
=
ip
;
rc
=
txCommit
(
tid
,
2
,
&
iplist
[
0
],
0
);
out3:
txEnd
(
tid
);
...
...
@@ -1223,7 +1204,7 @@ static int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
/* Linelock header of dtree */
tlck
=
txLock
(
tid
,
old_ip
,
(
struct
metapage
*
)
&
JFS_IP
(
old_ip
)
->
bxflag
,
tlckDTREE
|
tlckBTROOT
);
tlckDTREE
|
tlckBTROOT
|
tlckRELINK
);
dtlck
=
(
struct
dt_lock
*
)
&
tlck
->
lock
;
ASSERT
(
dtlck
->
index
==
0
);
lv
=
&
dtlck
->
lv
[
0
];
...
...
fs/jfs/xattr.c
View file @
3b89d486
...
...
@@ -688,17 +688,26 @@ static int can_set_system_xattr(struct inode *inode, const char *name,
}
inode
->
i_mode
=
mode
;
mark_inode_dirty
(
inode
);
if
(
rc
==
0
)
value
=
NULL
;
}
/*
* We're changing the ACL. Get rid of the cached one
*/
acl
=
JFS_IP
(
inode
)
->
i_acl
;
if
(
acl
&&
(
acl
!=
JFS_ACL_NOT_CACHED
)
)
if
(
acl
!=
JFS_ACL_NOT_CACHED
)
posix_acl_release
(
acl
);
JFS_IP
(
inode
)
->
i_acl
=
JFS_ACL_NOT_CACHED
;
return
0
;
}
else
if
(
strcmp
(
name
,
XATTR_NAME_ACL_DEFAULT
)
==
0
)
{
acl
=
posix_acl_from_xattr
(
value
,
value_len
);
if
(
IS_ERR
(
acl
))
{
rc
=
PTR_ERR
(
acl
);
printk
(
KERN_ERR
"posix_acl_from_xattr returned %d
\n
"
,
rc
);
return
rc
;
}
posix_acl_release
(
acl
);
/*
* We're changing the default ACL. Get rid of the cached one
*/
...
...
@@ -706,13 +715,11 @@ static int can_set_system_xattr(struct inode *inode, const char *name,
if
(
acl
&&
(
acl
!=
JFS_ACL_NOT_CACHED
))
posix_acl_release
(
acl
);
JFS_IP
(
inode
)
->
i_default_acl
=
JFS_ACL_NOT_CACHED
;
}
else
/* Invalid xattr name */
return
-
EINVAL
;
return
0
;
#else
/* CONFIG_JFS_POSIX_ACL */
return
-
EOPNOTSUPP
;
return
0
;
}
#endif
/* CONFIG_JFS_POSIX_ACL */
return
-
EOPNOTSUPP
;
}
static
int
can_set_xattr
(
struct
inode
*
inode
,
const
char
*
name
,
...
...
fs/nfs/write.c
View file @
3b89d486
...
...
@@ -314,7 +314,7 @@ int nfs_writepage(struct page *page, struct writeback_control *wbc)
if
(
err
>=
0
)
{
err
=
0
;
if
(
wbc
->
for_reclaim
)
err
=
WRITEPAGE_ACTIVATE
;
nfs_flush_inode
(
inode
,
0
,
0
,
FLUSH_STABLE
)
;
}
}
else
{
err
=
nfs_writepage_sync
(
NULL
,
inode
,
page
,
0
,
...
...
@@ -327,8 +327,7 @@ int nfs_writepage(struct page *page, struct writeback_control *wbc)
}
unlock_kernel
();
out:
if
(
err
!=
WRITEPAGE_ACTIVATE
)
unlock_page
(
page
);
unlock_page
(
page
);
if
(
inode_referenced
)
iput
(
inode
);
return
err
;
...
...
include/asm-arm/arch-ebsa110/io.h
View file @
3b89d486
...
...
@@ -50,7 +50,7 @@ void __writel(u32 val, void *addr);
#define writew(v,b) __writew(v,b)
#define writel(v,b) __writel(v,b)
#define __arch_ioremap(cookie,sz,c) ((void *)(cookie))
#define __arch_ioremap(cookie,sz,c
,a
) ((void *)(cookie))
#define __arch_iounmap(cookie) do { } while (0)
#endif
include/asm-arm/arch-ebsa110/system.h
View file @
3b89d486
...
...
@@ -25,13 +25,13 @@ static inline void arch_idle(void)
const
char
*
irq_stat
=
(
char
*
)
0xff000000
;
/* disable clock switching */
asm
volatile
(
"mcr
%? p15, 0, ip, c15, c2, 2
"
);
asm
volatile
(
"mcr
p15, 0, ip, c15, c2, 2"
:
:
:
"cc
"
);
/* wait for an interrupt to occur */
while
(
!*
irq_stat
);
/* enable clock switching */
asm
volatile
(
"mcr
%? p15, 0, ip, c15, c1, 2
"
);
asm
volatile
(
"mcr
p15, 0, ip, c15, c1, 2"
:
:
:
"cc
"
);
}
#define arch_reset(mode) cpu_reset(0x80000000)
...
...
include/asm-arm/arch-ebsa110/timex.h
View file @
3b89d486
...
...
@@ -15,5 +15,5 @@
* This is therefore not used to calculate the
* divisor.
*/
//#define CLOCK_TICK_RATE 2000
000
#define CLOCK_TICK_RATE 47894
000
include/asm-arm/arch-ebsa110/uncompress.h
View file @
3b89d486
...
...
@@ -13,26 +13,26 @@
*/
static
void
puts
(
const
char
*
s
)
{
__asm__
__volatile__
(
"
ldrb %0, [%2], #1
teq %0, #0
beq 3f
1: strb %0, [%3]
2: ldrb %1, [%3, #0x14]
and %1, %1, #0x60
teq %1, #0x60
bne 2b
teq %0, #'
\n
'
moveq %0, #'
\r
'
beq 1b
ldrb %0, [%2], #1
teq %0, #0
bne 1b
3: ldrb %1, [%3, #0x14]
and %1, %1, #0x60
teq %1, #0x60
bne 3b
"
:
:
"r"
(
0
),
"r"
(
0
),
"r"
(
s
),
"r"
(
0xf0000be0
)
:
"cc"
);
__asm__
__volatile__
(
"ldrb %0, [%2], #1
\n
"
" teq %0, #0
\n
"
" beq 3f
\n
"
"1: strb %0, [%3]
\n
"
"2: ldrb %1, [%3, #0x14]
\n
"
" and %1, %1, #0x60
\n
"
" teq %1, #0x60
\n
"
" bne 2b
\n
"
" teq %0, #'
\n
'
\n
"
" moveq %0, #'
\r
'
\n
"
" beq 1b
\n
"
" ldrb %0, [%2], #1
\n
"
" teq %0, #0
\n
"
" bne 1b
\n
"
"3: ldrb %1, [%3, #0x14]
\n
"
" and %1, %1, #0x60
\n
"
" teq %1, #0x60
\n
"
" bne 3b"
:
:
"r"
(
0
),
"r"
(
0
),
"r"
(
s
),
"r"
(
0xf0000be0
)
:
"cc"
);
}
/*
...
...
include/asm-ppc64/io.h
View file @
3b89d486
...
...
@@ -307,7 +307,7 @@ static inline void out_le32(volatile unsigned *addr, int val)
static
inline
void
out_be32
(
volatile
unsigned
*
addr
,
int
val
)
{
__asm__
__volatile__
(
"stw%U0%X0 %1,%0;
eieio
"
__asm__
__volatile__
(
"stw%U0%X0 %1,%0;
sync
"
:
"=m"
(
*
addr
)
:
"r"
(
val
));
}
...
...
@@ -356,9 +356,9 @@ static inline void out_le64(volatile unsigned long *addr, unsigned long val)
:
"=&r"
(
tmp
)
,
"=&r"
(
val
)
:
"1"
(
val
)
,
"b"
(
addr
)
,
"m"
(
*
addr
));
}
static
inline
void
out_be64
(
volatile
unsigned
long
*
addr
,
int
val
)
static
inline
void
out_be64
(
volatile
unsigned
long
*
addr
,
unsigned
long
val
)
{
__asm__
__volatile__
(
"std
%1,0(%0)
; sync"
:
"=m"
(
*
addr
)
:
"r"
(
val
));
__asm__
__volatile__
(
"std
%U0%X0 %1,%0
; sync"
:
"=m"
(
*
addr
)
:
"r"
(
val
));
}
#ifndef CONFIG_PPC_ISERIES
...
...
mm/vmscan.c
View file @
3b89d486
...
...
@@ -839,7 +839,7 @@ shrink_zone(struct zone *zone, struct scan_control *sc)
if
(
count
>=
SWAP_CLUSTER_MAX
)
{
atomic_set
(
&
zone
->
nr_scan_inactive
,
0
);
sc
->
nr_to_scan
=
count
;
return
shrink_cache
(
zone
,
sc
);
shrink_cache
(
zone
,
sc
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment