Commit c3cc27c9 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://bk.arm.linux.org.uk/linux-2.5-rmk

into home.transmeta.com:/home/torvalds/v2.5/linux
parents e0aceaae e0ddf22e
Taken from list archive at http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-July/004064.html
Initial definitions
-------------------
The following symbol definitions rely on you knowing the translation that
__virt_to_phys() does for your machine. This macro converts the passed
virtual address to a physical address. Normally, it is simply:
phys = virt - PAGE_OFFSET + PHYS_OFFSET
Decompressor Symbols
--------------------
ZTEXTADDR
Start address of decompressor. There's no point in talking about
virtual or physical addresses here, since the MMU will be off at
the time when you call the decompressor code. You normally call
the kernel at this address to start it booting. This doesn't have
to be located in RAM, it can be in flash or other read-only or
read-write addressable medium.
ZBSSADDR
Start address of zero-initialised work area for the decompressor.
This must be pointing at RAM. The decompressor will zero initialise
this for you. Again, the MMU will be off.
ZRELADDR
This is the address where the decompressed kernel will be written,
and eventually executed. The following constraint must be valid:
__virt_to_phys(TEXTADDR) == ZRELADDR
The initial part of the kernel is carefully coded to be position
independent.
INITRD_PHYS
Physical address to place the initial RAM disk. Only relevant if
you are using the bootpImage stuff (which only works on the old
struct param_struct).
INITRD_VIRT
Virtual address of the initial RAM disk. The following constraint
must be valid:
__virt_to_phys(INITRD_VIRT) == INITRD_PHYS
PARAMS_PHYS
Physical address of the struct param_struct or tag list, giving the
kernel various parameters about its execution environment.
Kernel Symbols
--------------
PHYS_OFFSET
Physical start address of the first bank of RAM.
PAGE_OFFSET
Virtual start address of the first bank of RAM. During the kernel
boot phase, virtual address PAGE_OFFSET will be mapped to physical
address PHYS_OFFSET, along with any other mappings you supply.
This should be the same value as TASK_SIZE.
TASK_SIZE
The maximum size of a user process in bytes. Since user space
always starts at zero, this is the maximum address that a user
process can access+1. The user space stack grows down from this
address.
Any virtual address below TASK_SIZE is deemed to be user process
area, and therefore managed dynamically on a process by process
basis by the kernel. I'll call this the user segment.
Anything above TASK_SIZE is common to all processes. I'll call
this the kernel segment.
(In other words, you can't put IO mappings below TASK_SIZE, and
hence PAGE_OFFSET).
TEXTADDR
Virtual start address of kernel, normally PAGE_OFFSET + 0x8000.
This is where the kernel image ends up. With the latest kernels,
it must be located at 32768 bytes into a 128MB region. Previous
kernels placed a restriction of 256MB here.
DATAADDR
Virtual address for the kernel data segment. Must not be defined
when using the decompressor.
VMALLOC_START
VMALLOC_END
Virtual addresses bounding the vmalloc() area. There must not be
any static mappings in this area; vmalloc will overwrite them.
The addresses must also be in the kernel segment (see above).
Normally, the vmalloc() area starts VMALLOC_OFFSET bytes above the
last virtual RAM address (found using variable high_memory).
VMALLOC_OFFSET
Offset normally incorporated into VMALLOC_START to provide a hole
between virtual RAM and the vmalloc area. We do this to allow
out of bounds memory accesses (eg, something writing off the end
of the mapped memory map) to be caught. Normally set to 8MB.
Architecture Specific Macros
----------------------------
BOOT_MEM(pram,pio,vio)
`pram' specifies the physical start address of RAM. Must always
be present, and should be the same as PHYS_OFFSET.
`pio' is the physical address of an 8MB region containing IO for
use with the debugging macros in arch/arm/kernel/debug-armv.S.
`vio' is the virtual address of the 8MB debugging region.
It is expected that the debugging region will be re-initialised
by the architecture specific code later in the code (via the
MAPIO function).
BOOT_PARAMS
Same as, and see PARAMS_PHYS.
FIXUP(func)
Machine specific fixups, run before memory subsystems have been
initialised.
MAPIO(func)
Machine specific function to map IO areas (including the debug
region above).
INITIRQ(func)
Machine specific function to initialise interrupts.
...@@ -175,7 +175,7 @@ source "arch/arm/mach-epxa10db/Kconfig" ...@@ -175,7 +175,7 @@ source "arch/arm/mach-epxa10db/Kconfig"
source "arch/arm/mach-footbridge/Kconfig" source "arch/arm/mach-footbridge/Kconfig"
source "arch/arm/mach-iop310/Kconfig" source "arch/arm/mach-iop3xx/Kconfig"
source "arch/arm/mach-pxa/Kconfig" source "arch/arm/mach-pxa/Kconfig"
......
...@@ -105,7 +105,7 @@ textaddr-$(CONFIG_ARCH_CLPS711X) := 0xc0028000 ...@@ -105,7 +105,7 @@ textaddr-$(CONFIG_ARCH_CLPS711X) := 0xc0028000
machine-$(CONFIG_ARCH_CLPS711X) := clps711x machine-$(CONFIG_ARCH_CLPS711X) := clps711x
textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000 textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000
machine-$(CONFIG_ARCH_ANAKIN) := anakin machine-$(CONFIG_ARCH_ANAKIN) := anakin
machine-$(CONFIG_ARCH_IOP310) := iop310 machine-$(CONFIG_ARCH_IOP310) := iop3xx
machine-$(CONFIG_ARCH_ADIFCC) := adifcc machine-$(CONFIG_ARCH_ADIFCC) := adifcc
MACHINE := $(machine-y) MACHINE := $(machine-y)
......
...@@ -13,9 +13,6 @@ ...@@ -13,9 +13,6 @@
# PARAMS_PHYS must be with 4MB of ZRELADDR # PARAMS_PHYS must be with 4MB of ZRELADDR
# INITRD_PHYS must be in RAM # INITRD_PHYS must be in RAM
zreladdr-$(CONFIG_CPU_26) := 0x02080000
params_phys-$(CONFIG_CPU_26) := 0x0207c000
initrd_phys-$(CONFIG_CPU_26) := 0x02180000
zreladdr-$(CONFIG_ARCH_RPC) := 0x10008000 zreladdr-$(CONFIG_ARCH_RPC) := 0x10008000
params_phys-$(CONFIG_ARCH_RPC) := 0x10000100 params_phys-$(CONFIG_ARCH_RPC) := 0x10000100
initrd_phys-$(CONFIG_ARCH_RPC) := 0x18000000 initrd_phys-$(CONFIG_ARCH_RPC) := 0x18000000
......
...@@ -60,6 +60,7 @@ static struct sa1111_dev usb_dev = { ...@@ -60,6 +60,7 @@ static struct sa1111_dev usb_dev = {
}, },
.skpcr_mask = SKPCR_UCLKEN, .skpcr_mask = SKPCR_UCLKEN,
.devid = SA1111_DEVID_USB, .devid = SA1111_DEVID_USB,
.dma_mask = 0xffffffffLL,
.irq = { .irq = {
IRQ_USBPWR, IRQ_USBPWR,
IRQ_HCIM, IRQ_HCIM,
...@@ -494,6 +495,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct sa1111_dev *sadev, unsigned ...@@ -494,6 +495,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct sa1111_dev *sadev, unsigned
sadev->dev.parent = sachip->dev; sadev->dev.parent = sachip->dev;
sadev->dev.bus = &sa1111_bus_type; sadev->dev.bus = &sa1111_bus_type;
sadev->dev.dma_mask = &sadev->dma_mask;
sadev->res.start = sachip->res.start + offset; sadev->res.start = sachip->res.start + offset;
sadev->res.end = sadev->res.start + 511; sadev->res.end = sadev->res.start + 511;
sadev->res.name = sadev->dev.name; sadev->res.name = sadev->dev.name;
......
# #
# Automatically generated by make menuconfig: don't edit # Automatically generated make config: don't edit
# #
CONFIG_ARM=y CONFIG_ARM=y
# CONFIG_EISA is not set CONFIG_MMU=y
# CONFIG_SBUS is not set
# CONFIG_MCA is not set
CONFIG_UID16=y CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
# CONFIG_GENERIC_BUST_SPINLOCK is not set
# CONFIG_GENERIC_ISA_DMA is not set
# #
# Code maturity level options # Code maturity level options
# #
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
# CONFIG_OBSOLETE is not set
#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
# #
# Loadable module support # Loadable module support
# #
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_MODULE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set # CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y CONFIG_KMOD=y
...@@ -33,6 +38,7 @@ CONFIG_KMOD=y ...@@ -33,6 +38,7 @@ CONFIG_KMOD=y
# CONFIG_ARCH_CLPS7500 is not set # CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set # CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set # CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_EBSA110 is not set # CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_CAMELOT is not set # CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set # CONFIG_ARCH_FOOTBRIDGE is not set
...@@ -46,112 +52,71 @@ CONFIG_ARCH_IOP310=y ...@@ -46,112 +52,71 @@ CONFIG_ARCH_IOP310=y
# #
# Archimedes/A5000 Implementations # Archimedes/A5000 Implementations
# #
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
# #
# Footbridge Implementations # Archimedes/A5000 Implementations (select only ONE)
# #
# 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 # CLPS711X/EP721X Implementations
# #
# CONFIG_SA1100_ASSABET is not set
# CONFIG_ASSABET_NEPONSET is not set
# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
# CONFIG_SA1100_GRAPHICSMASTER 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_SHANNON is not set
# CONFIG_SA1100_SHERMAN is not set
# CONFIG_SA1100_SIMPAD 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
# CONFIG_SA1100_USB is not set
# CONFIG_SA1100_USB_NETLINK is not set
# CONFIG_SA1100_USB_CHAR is not set
# #
# CLPS711X/EP721X Implementations # Epxa10db
#
#
# Footbridge Implementations
# #
# CONFIG_ARCH_AUTCPU12 is not set
# CONFIG_ARCH_CDB89712 is not set
# CONFIG_ARCH_CLEP7312 is not set
# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
# CONFIG_ARCH_EP7211 is not set
# CONFIG_ARCH_EP7212 is not set
# #
# IOP310 Implementation Options # IOP310 Implementation Options
# #
CONFIG_ARCH_IQ80310=y CONFIG_ARCH_IQ80310=y
#
# IOP310 Chipset Features
#
# CONFIG_IOP310_AAU is not set # CONFIG_IOP310_AAU is not set
# CONFIG_IOP310_DMA is not set # CONFIG_IOP310_DMA is not set
# CONFIG_IOP310_MU is not set # CONFIG_IOP310_MU is not set
# CONFIG_IOP310_PMON is not set # CONFIG_IOP310_PMON is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set #
# CONFIG_FOOTBRIDGE_HOST is not set # Intel PXA250/210 Implementations
# CONFIG_FOOTBRIDGE_ADDIN is not set #
#
# SA11x0 Implementations
#
#
# Processor Type
#
CONFIG_CPU_32=y CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
# CONFIG_CPU_32v3 is not set
# CONFIG_CPU_32v4 is not set
# 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_ARM922T is not set
# CONFIG_CPU_ARM926T is not set
# CONFIG_CPU_ARM1020 is not set
# CONFIG_CPU_SA110 is not set
# CONFIG_CPU_SA1100 is not set
CONFIG_CPU_32v4=y
CONFIG_CPU_XSCALE=y CONFIG_CPU_XSCALE=y
CONFIG_CPU_32v5=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y CONFIG_ARM_THUMB=y
# CONFIG_XSCALE_TOOLS is not set
# CONFIG_XSCALE_CACHE_WRITE_ALLOC is not set
CONFIG_XSCALE_PMU=y CONFIG_XSCALE_PMU=y
CONFIG_ARM_THUMB=y
# CONFIG_DISCONTIGMEM is not set
# #
# General setup # General setup
# #
CONFIG_ZBOOT_ROM=y CONFIG_PCI=y
# CONFIG_ZBOOT_ROM is not set
CONFIG_ZBOOT_ROM_TEXT=0x00060000 CONFIG_ZBOOT_ROM_TEXT=0x00060000
CONFIG_ZBOOT_ROM_BSS=0xa1008000 CONFIG_ZBOOT_ROM_BSS=0xa1008000
CONFIG_PCI=y # CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_ISA is not set
# CONFIG_ISA_DMA is not set
CONFIG_PCI_NAMES=y CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set # CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
CONFIG_NET=y #
CONFIG_SYSVIPC=y # At least one math emulation must be selected
# CONFIG_BSD_PROCESS_ACCT is not set #
CONFIG_SYSCTL=y
CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set # CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y CONFIG_KCORE_ELF=y
...@@ -160,6 +125,7 @@ CONFIG_BINFMT_AOUT=y ...@@ -160,6 +125,7 @@ CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set # CONFIG_BINFMT_MISC is not set
# CONFIG_PM is not set # CONFIG_PM is not set
# CONFIG_PREEMPT is not set
# CONFIG_ARTHUR is not set # CONFIG_ARTHUR is not set
CONFIG_CMDLINE="console=ttyS0,115200 ip=bootp mem=32M root=/dev/nfs initrd=0xc0800000,4M" CONFIG_CMDLINE="console=ttyS0,115200 ip=bootp mem=32M root=/dev/nfs initrd=0xc0800000,4M"
CONFIG_ALIGNMENT_TRAP=y CONFIG_ALIGNMENT_TRAP=y
...@@ -175,9 +141,14 @@ CONFIG_ALIGNMENT_TRAP=y ...@@ -175,9 +141,14 @@ CONFIG_ALIGNMENT_TRAP=y
CONFIG_MTD=y CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set # CONFIG_MTD_DEBUG is not set
CONFIG_MTD_PARTITIONS=y CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_REDBOOT_PARTS=y CONFIG_MTD_REDBOOT_PARTS=y
# CONFIG_MTD_BOOTLDR_PARTS is not set # CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set # CONFIG_MTD_AFS_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set # CONFIG_FTL is not set
...@@ -196,9 +167,6 @@ CONFIG_MTD_CFI_INTELEXT=y ...@@ -196,9 +167,6 @@ CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_ROM is not set # CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set # CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set # CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_AMDSTD is not set
# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_JEDEC is not set
# #
# Mapping drivers for chip access # Mapping drivers for chip access
...@@ -206,12 +174,10 @@ CONFIG_MTD_CFI_INTELEXT=y ...@@ -206,12 +174,10 @@ CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_PHYSMAP is not set # CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_NORA is not set # CONFIG_MTD_NORA is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set # CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_CDB89712 is not set
# CONFIG_MTD_SA1100 is not set
# CONFIG_MTD_DC21285 is not set
CONFIG_MTD_IQ80310=y CONFIG_MTD_IQ80310=y
# CONFIG_MTD_EPXA10DB is not set # CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_PCI is not set # CONFIG_MTD_PCI is not set
# CONFIG_MTD_UCLINUX is not set
# #
# Self-contained MTD device drivers # Self-contained MTD device drivers
...@@ -220,10 +186,13 @@ CONFIG_MTD_IQ80310=y ...@@ -220,10 +186,13 @@ CONFIG_MTD_IQ80310=y
# CONFIG_MTD_SLRAM is not set # CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_MTDRAM is not set # CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set # CONFIG_MTD_BLKMTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC1000 is not set # CONFIG_MTD_DOC1000 is not set
# CONFIG_MTD_DOC2000 is not set # CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set # CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOCPROBE is not set
# #
# NAND Flash Device Drivers # NAND Flash Device Drivers
...@@ -231,20 +200,18 @@ CONFIG_MTD_IQ80310=y ...@@ -231,20 +200,18 @@ CONFIG_MTD_IQ80310=y
# CONFIG_MTD_NAND is not set # CONFIG_MTD_NAND is not set
# #
# Plug and Play configuration # Plug and Play support
# #
# CONFIG_PNP is not set # CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
# #
# Block devices # Block devices
# #
# CONFIG_BLK_DEV_FD is not set # 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_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM=y
...@@ -255,25 +222,22 @@ CONFIG_BLK_DEV_INITRD=y ...@@ -255,25 +222,22 @@ CONFIG_BLK_DEV_INITRD=y
# Multi-device support (RAID and LVM) # Multi-device support (RAID and LVM)
# #
# CONFIG_MD is not set # CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set #
# CONFIG_MD_RAID0 is not set # Networking support
# CONFIG_MD_RAID1 is not set #
# CONFIG_MD_RAID5 is not set CONFIG_NET=y
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
# #
# Networking options # Networking options
# #
# CONFIG_PACKET is not set # CONFIG_PACKET is not set
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
# CONFIG_NETLINK_DEV is not set # CONFIG_NETLINK_DEV is not set
CONFIG_NETFILTER=y CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set # CONFIG_NETFILTER_DEBUG is not set
# CONFIG_FILTER is not set # CONFIG_FILTER is not set
CONFIG_UNIX=y CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set # CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_ADVANCED_ROUTER is not set
...@@ -286,26 +250,33 @@ CONFIG_IP_PNP_BOOTP=y ...@@ -286,26 +250,33 @@ CONFIG_IP_PNP_BOOTP=y
# CONFIG_ARPD is not set # CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set # CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set # CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_XFRM_USER is not set
# #
# IP: Netfilter Configuration # IP: Netfilter Configuration
# #
# CONFIG_IP_NF_CONNTRACK is not set # CONFIG_IP_NF_CONNTRACK is not set
# CONFIG_IP_NF_QUEUE is not set # CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set # CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_IP_NF_COMPAT_IPCHAINS is not set # CONFIG_IP_NF_COMPAT_IPCHAINS is not set
# CONFIG_IP_NF_COMPAT_IPFWADM is not set # CONFIG_IP_NF_COMPAT_IPFWADM is not set
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set # CONFIG_VLAN_8021Q is not set
# CONFIG_IPX is not set # CONFIG_LLC is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set # CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set # CONFIG_BRIDGE is not set
# CONFIG_X25 is not set # CONFIG_X25 is not set
# CONFIG_LAPB is not set # CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set # CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
...@@ -318,8 +289,9 @@ CONFIG_IP_PNP_BOOTP=y ...@@ -318,8 +289,9 @@ CONFIG_IP_PNP_BOOTP=y
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
# #
# Network device support # Network testing
# #
# CONFIG_NET_PKTGEN is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
# #
...@@ -336,62 +308,50 @@ CONFIG_NETDEVICES=y ...@@ -336,62 +308,50 @@ CONFIG_NETDEVICES=y
# Ethernet (10 or 100Mbit) # Ethernet (10 or 100Mbit)
# #
CONFIG_NET_ETHERNET=y CONFIG_NET_ETHERNET=y
# CONFIG_ARM_AM79C961A is not set CONFIG_MII=y
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set # CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNGEM is not set # CONFIG_SUNGEM is not set
# 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_RACAL is not set # Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set # CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set # CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_APRICOT is not set # CONFIG_B44 is not set
# CONFIG_CS89x0 is not set
# CONFIG_TULIP is not set
# CONFIG_DE4X5 is not set
# CONFIG_DGRS is not set # CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
CONFIG_EEPRO100=y CONFIG_EEPRO100=y
# CONFIG_LNE390 is not set # CONFIG_EEPRO100_PIO is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set # CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set # CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set # CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
# CONFIG_8139CP is not set # CONFIG_8139CP is not set
# CONFIG_8139TOO is not set # CONFIG_8139TOO is not set
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_SIS900 is not set # CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set # CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set # CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set # CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set # CONFIG_VIA_RHINE is not set
# CONFIG_VIA_RHINE_MMIO is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_NET_POCKET is not set
# #
# Ethernet (1000 Mbit) # Ethernet (1000 Mbit)
# #
# CONFIG_ACENIC is not set # CONFIG_ACENIC is not set
# CONFIG_DL2K is not set # CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set # CONFIG_E1000 is not set
# CONFIG_NS83820 is not set # CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set # CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set # CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set # CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_FDDI is not set # CONFIG_FDDI is not set
# CONFIG_HIPPI is not set # CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set # CONFIG_PPP is not set
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
...@@ -401,10 +361,8 @@ CONFIG_EEPRO100=y ...@@ -401,10 +361,8 @@ CONFIG_EEPRO100=y
# CONFIG_NET_RADIO is not set # CONFIG_NET_RADIO is not set
# #
# Token Ring devices # Token Ring devices (depends on LLC=y)
# #
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set # CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
...@@ -414,17 +372,17 @@ CONFIG_EEPRO100=y ...@@ -414,17 +372,17 @@ CONFIG_EEPRO100=y
# CONFIG_WAN is not set # CONFIG_WAN is not set
# #
# Amateur Radio support # IrDA (infrared) support
# #
# CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set
# #
# IrDA (infrared) support # Amateur Radio support
# #
# CONFIG_IRDA is not set # CONFIG_HAMRADIO is not set
# #
# ATA/IDE/MFM/RLL support # ATA/ATAPI/MFM/RLL support
# #
CONFIG_IDE=y CONFIG_IDE=y
...@@ -432,54 +390,22 @@ CONFIG_IDE=y ...@@ -432,54 +390,22 @@ CONFIG_IDE=y
# IDE, ATA and ATAPI Block devices # IDE, ATA and ATAPI Block devices
# #
CONFIG_BLK_DEV_IDE=y CONFIG_BLK_DEV_IDE=y
# CONFIG_BLK_DEV_HD_IDE is not set
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD is not set # CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set # CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECS is not set # CONFIG_IDEDISK_STROKE is not set
CONFIG_BLK_DEV_IDECD=y CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_IDE_TASK_IOCTL is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set #
# CONFIG_BLK_DEV_ISAPNP is not set # IDE chipset support/bugfixes
# CONFIG_BLK_DEV_RZ1000 is not set #
# CONFIG_IDEPCI_SHARE_IRQ is not set # CONFIG_BLK_DEV_IDEPCI is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_IDEDMA_PCI_AUTO=y
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_AEC62XX_TUNING is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_WDC_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_AMD74XX_OVERRIDE is not set
CONFIG_BLK_DEV_CMD64X=y
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_HPT34X_AUTODMA is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_PDC202XX is not set
# CONFIG_PDC202XX_BURST is not set
# CONFIG_PDC202XX_FORCE is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_SL82C105 is not set
# CONFIG_IDE_CHIPSETS is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_BLK_DEV_IDE_MODES=y
# CONFIG_BLK_DEV_ATARAID is not set
# CONFIG_BLK_DEV_ATARAID_PDC is not set
# CONFIG_BLK_DEV_ATARAID_HPT is not set
# #
# SCSI support # SCSI support
...@@ -495,59 +421,50 @@ CONFIG_BLK_DEV_IDE_MODES=y ...@@ -495,59 +421,50 @@ CONFIG_BLK_DEV_IDE_MODES=y
# I2O device support # I2O device support
# #
# CONFIG_I2O is not set # CONFIG_I2O is not set
# CONFIG_I2O_PCI 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 # ISDN subsystem
# #
# CONFIG_ISDN is not set # CONFIG_ISDN_BOOL is not set
# #
# Input core support # Input device support
# #
# CONFIG_INPUT is not set # CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set #
# CONFIG_INPUT_JOYDEV is not set # Userland interfaces
# CONFIG_INPUT_EVDEV is not set #
#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set
#
# Input Device Drivers
#
# #
# Character devices # Character devices
# #
# CONFIG_VT is not set
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_SERIAL_NONSTANDARD is not set
# #
# Serial drivers # Serial drivers
# #
# CONFIG_SERIAL_ANAKIN is not set CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_ANAKIN_CONSOLE is not set CONFIG_SERIAL_8250_CONSOLE=y
# 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_SERIAL_21285 is not set
# CONFIG_SERIAL_21285_OLD is not set
# CONFIG_SERIAL_21285_CONSOLE is not set
# CONFIG_SERIAL_UART00 is not set
# CONFIG_SERIAL_UART00_CONSOLE is not set
# CONFIG_SERIAL_SA1100 is not set
# CONFIG_SERIAL_SA1100_CONSOLE is not set
# CONFIG_SERIAL_8250 is not set
# CONFIG_SERIAL_8250_CONSOLE is not set
# CONFIG_SERIAL_8250_EXTENDED is not set # CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_MANY_PORTS is not set
# CONFIG_SERIAL_8250_SHARE_IRQ is not set #
# CONFIG_SERIAL_8250_DETECT_IRQ is not set # Non-8250 serial port support
# CONFIG_SERIAL_8250_MULTIPORT is not set #
# CONFIG_SERIAL_8250_HUB6 is not set # CONFIG_SERIAL_DZ is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256 CONFIG_UNIX98_PTY_COUNT=256
...@@ -556,37 +473,37 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -556,37 +473,37 @@ CONFIG_UNIX98_PTY_COUNT=256
# #
# CONFIG_I2C is not set # CONFIG_I2C is not set
#
# I2C Hardware Sensors Mainboard support
#
#
# I2C Hardware Sensors Chip support
#
# #
# L3 serial bus support # L3 serial bus support
# #
# CONFIG_L3 is not set # CONFIG_L3 is not set
# CONFIG_L3_ALGOBIT is not set
# CONFIG_L3_BIT_SA1100_GPIO is not set
# CONFIG_L3_SA1111 is not set
# CONFIG_BIT_SA1100_GPIO is not set
# #
# Mice # Mice
# #
# CONFIG_BUSMOUSE is not set # CONFIG_BUSMOUSE is not set
CONFIG_MOUSE=y # CONFIG_QIC02_TAPE is not set
CONFIG_PSMOUSE=y
# CONFIG_82C710_MOUSE is not set
# CONFIG_PC110_PAD is not set
# #
# Joysticks # IPMI
# #
# CONFIG_INPUT_GAMEPORT is not set # CONFIG_IPMI_HANDLER is not set
# CONFIG_QIC02_TAPE is not set
# #
# Watchdog Cards # Watchdog Cards
# #
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set # CONFIG_NVRAM is not set
# CONFIG_RTC is not set # CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
# CONFIG_DTLK is not set # CONFIG_DTLK is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
...@@ -597,88 +514,130 @@ CONFIG_PSMOUSE=y ...@@ -597,88 +514,130 @@ CONFIG_PSMOUSE=y
# CONFIG_FTAPE is not set # CONFIG_FTAPE is not set
# CONFIG_AGP is not set # CONFIG_AGP is not set
# CONFIG_DRM is not set # CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set
# #
# Multimedia devices # Multimedia devices
# #
# CONFIG_VIDEO_DEV is not set CONFIG_VIDEO_DEV=y
#
# Video For Linux
#
# CONFIG_VIDEO_PROC_FS is not set
#
# Video Adapters
#
# CONFIG_VIDEO_PMS is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_STRADIS is not set
#
# Radio Adapters
#
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set
#
# Digital Video Broadcasting Devices
#
CONFIG_DVB=y
CONFIG_DVB_CORE=y
#
# Supported Frontend Modules
#
CONFIG_DVB_ALPS_BSRU6=y
# CONFIG_DVB_ALPS_BSRV2 is not set
# CONFIG_DVB_ALPS_TDLB7 is not set
# CONFIG_DVB_ALPS_TDMB7 is not set
# CONFIG_DVB_GRUNDIG_29504_491 is not set
# CONFIG_DVB_GRUNDIG_29504_401 is not set
# CONFIG_DVB_VES1820 is not set
#
# Supported DVB Adapters
#
# CONFIG_DVB_AV7110 is not set
# #
# File systems # File systems
# #
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR 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 is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set #
# CONFIG_REISERFS_PROC_INFO 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_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
CONFIG_TMPFS=y
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set # CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set # CONFIG_HFS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set # CONFIG_BFS_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_JBD_DEBUG 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_EFS_FS is not set
# CONFIG_JFFS_FS is not set # CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_JFFS2_FS_NAND is not set
# CONFIG_CRAMFS is not set # CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set # 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_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_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set # CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
# #
# Network File Systems # Network File Systems
# #
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set # CONFIG_NFS_V3 is not set
CONFIG_ROOT_NFS=y # CONFIG_NFS_V4 is not set
# CONFIG_NFSD is not set # CONFIG_NFSD is not set
# CONFIG_NFSD_V3 is not set CONFIG_ROOT_NFS=y
CONFIG_SUNRPC=y
CONFIG_LOCKD=y CONFIG_LOCKD=y
# CONFIG_EXPORTFS is not set
# CONFIG_SMB_FS is not set # CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set # CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_CODA_FS is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_INTERMEZZO_FS is not set
# CONFIG_NCPFS_STRONG is not set CONFIG_SUNRPC=y
# CONFIG_NCPFS_NFS_NS is not set # CONFIG_SUNRPC_GSS is not set
# CONFIG_NCPFS_OS2_NS is not set # CONFIG_AFS_FS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
# CONFIG_ZLIB_FS_INFLATE is not set
# #
# Partition Types # Partition Types
...@@ -698,85 +657,43 @@ CONFIG_MSDOS_PARTITION=y ...@@ -698,85 +657,43 @@ CONFIG_MSDOS_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_SMB_NLS is not set # CONFIG_EFI_PARTITION is not set
# CONFIG_NLS is not set
#
# Graphics support
#
# CONFIG_FB is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# #
# Sound # Sound
# #
# CONFIG_SOUND is not set # CONFIG_SOUND is not set
#
# Misc devices
#
# #
# Multimedia Capabilities Port drivers # Multimedia Capabilities Port drivers
# #
# CONFIG_MCP is not set # CONFIG_MCP is not set
# CONFIG_MCP_SA1100 is not set
# CONFIG_MCP_UCB1200 is not set #
# CONFIG_MCP_UCB1200_AUDIO is not set # Console Switches
# CONFIG_MCP_UCB1200_TS is not set #
# CONFIG_SWITCHES is not set
# #
# USB support # USB support
# #
# CONFIG_USB is not set # CONFIG_USB is not set
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
# CONFIG_USB_OHCI_SA1111 is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
# CONFIG_USB_CDCETHER is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_RIO500 is not set
# #
# Bluetooth support # Bluetooth support
...@@ -789,7 +706,6 @@ CONFIG_MSDOS_PARTITION=y ...@@ -789,7 +706,6 @@ CONFIG_MSDOS_PARTITION=y
CONFIG_FRAME_POINTER=y CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_USER=y CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_INFO is not set
# CONFIG_NO_PGT_CACHE is not set
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_SLAB is not set
# CONFIG_MAGIC_SYSRQ is not set # CONFIG_MAGIC_SYSRQ is not set
...@@ -797,6 +713,22 @@ CONFIG_DEBUG_KERNEL=y ...@@ -797,6 +713,22 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_WAITQ is not set # CONFIG_DEBUG_WAITQ is not set
CONFIG_DEBUG_BUGVERBOSE=y CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_ERRORS=y CONFIG_DEBUG_ERRORS=y
CONFIG_KALLSYMS=y
CONFIG_DEBUG_LL=y CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_DC21285_PORT is not set
# CONFIG_DEBUG_CLPS711X_UART2 is not set #
# Security options
#
# CONFIG_SECURITY is not set
#
# Cryptographic options
#
# CONFIG_CRYPTO is not set
#
# Library routines
#
# CONFIG_CRC32 is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
...@@ -27,10 +27,8 @@ ifneq ($(MACHINE),ebsa110) ...@@ -27,10 +27,8 @@ ifneq ($(MACHINE),ebsa110)
obj-y += io.o obj-y += io.o
endif endif
ifeq ($(CONFIG_CPU_32),y)
head-y := head.o head-y := head.o
obj-$(CONFIG_DEBUG_LL) += debug.o obj-$(CONFIG_DEBUG_LL) += debug.o
endif
extra-y := $(head-y) init_task.o extra-y := $(head-y) init_task.o
......
...@@ -95,11 +95,6 @@ EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter); ...@@ -95,11 +95,6 @@ EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter);
EXPORT_SYMBOL_ALIAS(fp_printk,printk); EXPORT_SYMBOL_ALIAS(fp_printk,printk);
EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig); EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig);
#ifdef CONFIG_CPU_26
EXPORT_SYMBOL(fpundefinstr);
EXPORT_SYMBOL(ret_from_exception);
#endif
#ifdef CONFIG_VT #ifdef CONFIG_VT
EXPORT_SYMBOL(kd_mksound); EXPORT_SYMBOL(kd_mksound);
#endif #endif
...@@ -111,10 +106,8 @@ EXPORT_SYMBOL_NOVERS(__backtrace); ...@@ -111,10 +106,8 @@ EXPORT_SYMBOL_NOVERS(__backtrace);
EXPORT_SYMBOL(dump_thread); EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(udelay); EXPORT_SYMBOL(udelay);
#ifdef CONFIG_CPU_32
EXPORT_SYMBOL(__ioremap); EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(__iounmap); EXPORT_SYMBOL(__iounmap);
#endif
EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_thread);
EXPORT_SYMBOL(system_rev); EXPORT_SYMBOL(system_rev);
EXPORT_SYMBOL(system_serial_low); EXPORT_SYMBOL(system_serial_low);
...@@ -196,7 +189,6 @@ EXPORT_SYMBOL_NOVERS(memscan); ...@@ -196,7 +189,6 @@ EXPORT_SYMBOL_NOVERS(memscan);
EXPORT_SYMBOL_NOVERS(__memzero); EXPORT_SYMBOL_NOVERS(__memzero);
/* user mem (segment) */ /* user mem (segment) */
#if defined(CONFIG_CPU_32)
EXPORT_SYMBOL(__arch_copy_from_user); EXPORT_SYMBOL(__arch_copy_from_user);
EXPORT_SYMBOL(__arch_copy_to_user); EXPORT_SYMBOL(__arch_copy_to_user);
EXPORT_SYMBOL(__arch_clear_user); EXPORT_SYMBOL(__arch_clear_user);
...@@ -207,11 +199,6 @@ EXPORT_SYMBOL(consistent_alloc); ...@@ -207,11 +199,6 @@ EXPORT_SYMBOL(consistent_alloc);
EXPORT_SYMBOL(consistent_free); EXPORT_SYMBOL(consistent_free);
EXPORT_SYMBOL(consistent_sync); EXPORT_SYMBOL(consistent_sync);
#elif defined(CONFIG_CPU_26)
EXPORT_SYMBOL(uaccess_kernel);
EXPORT_SYMBOL(uaccess_user);
#endif
EXPORT_SYMBOL_NOVERS(__get_user_1); EXPORT_SYMBOL_NOVERS(__get_user_1);
EXPORT_SYMBOL_NOVERS(__get_user_2); EXPORT_SYMBOL_NOVERS(__get_user_2);
EXPORT_SYMBOL_NOVERS(__get_user_4); EXPORT_SYMBOL_NOVERS(__get_user_4);
......
...@@ -21,10 +21,7 @@ ...@@ -21,10 +21,7 @@
/* /*
* Make sure that the compiler and target are compatible. * Make sure that the compiler and target are compatible.
*/ */
#if defined(__APCS_32__) && defined(CONFIG_CPU_26) #if defined(__APCS_26__)
#error Sorry, your compiler targets APCS-32 but this kernel requires APCS-26
#endif
#if defined(__APCS_26__) && defined(CONFIG_CPU_32)
#error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32 #error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32
#endif #endif
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 95) #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 95)
...@@ -52,7 +49,6 @@ int main(void) ...@@ -52,7 +49,6 @@ int main(void)
BLANK(); BLANK();
DEFINE(VM_EXEC, VM_EXEC); DEFINE(VM_EXEC, VM_EXEC);
BLANK(); BLANK();
#ifdef CONFIG_CPU_32
DEFINE(HPTE_TYPE_SMALL, PTE_TYPE_SMALL); DEFINE(HPTE_TYPE_SMALL, PTE_TYPE_SMALL);
DEFINE(HPTE_AP_READ, PTE_AP_READ); DEFINE(HPTE_AP_READ, PTE_AP_READ);
DEFINE(HPTE_AP_WRITE, PTE_AP_WRITE); DEFINE(HPTE_AP_WRITE, PTE_AP_WRITE);
...@@ -65,15 +61,7 @@ int main(void) ...@@ -65,15 +61,7 @@ int main(void)
DEFINE(LPTE_WRITE, L_PTE_WRITE); DEFINE(LPTE_WRITE, L_PTE_WRITE);
DEFINE(LPTE_EXEC, L_PTE_EXEC); DEFINE(LPTE_EXEC, L_PTE_EXEC);
DEFINE(LPTE_DIRTY, L_PTE_DIRTY); DEFINE(LPTE_DIRTY, L_PTE_DIRTY);
#endif
BLANK(); BLANK();
#ifdef CONFIG_CPU_26
DEFINE(PAGE_PRESENT, _PAGE_PRESENT);
DEFINE(PAGE_READONLY, _PAGE_READONLY);
DEFINE(PAGE_NOT_USER, _PAGE_NOT_USER);
DEFINE(PAGE_OLD, _PAGE_OLD);
DEFINE(PAGE_CLEAN, _PAGE_CLEAN);
#endif
BLANK(); BLANK();
DEFINE(PAGE_SZ, PAGE_SIZE); DEFINE(PAGE_SZ, PAGE_SIZE);
BLANK(); BLANK();
......
...@@ -220,7 +220,6 @@ static void ecard_do_request(struct ecard_request *req) ...@@ -220,7 +220,6 @@ static void ecard_do_request(struct ecard_request *req)
} }
} }
#ifdef CONFIG_CPU_32
#include <linux/completion.h> #include <linux/completion.h>
static pid_t ecard_pid; static pid_t ecard_pid;
...@@ -341,13 +340,6 @@ ecard_call(struct ecard_request *req) ...@@ -341,13 +340,6 @@ ecard_call(struct ecard_request *req)
*/ */
wait_for_completion(&ecard_completion); wait_for_completion(&ecard_completion);
} }
#else
/*
* On 26-bit processors, we don't need the kcardd thread to access the
* expansion card loaders. We do it directly.
*/
#define ecard_call(req) ecard_do_request(req)
#endif
/* ======================= Mid-level card control ===================== */ /* ======================= Mid-level card control ===================== */
...@@ -1026,9 +1018,7 @@ static int __init ecard_init(void) ...@@ -1026,9 +1018,7 @@ static int __init ecard_init(void)
{ {
int slot, irqhw; int slot, irqhw;
#ifdef CONFIG_CPU_32
init_waitqueue_head(&ecard_wait); init_waitqueue_head(&ecard_wait);
#endif
printk("Probing expansion cards\n"); printk("Probing expansion cards\n");
......
...@@ -41,14 +41,8 @@ ...@@ -41,14 +41,8 @@
@ Stack format (ensured by USER_* and SVC_*) @ Stack format (ensured by USER_* and SVC_*)
@ @
#define S_FRAME_SIZE 72 #define S_FRAME_SIZE 72
#ifdef CONFIG_CPU_32
#define S_OLD_R0 68 #define S_OLD_R0 68
#define S_PSR 64 #define S_PSR 64
#else
#define S_OLD_R0 64
#define S_PSR 60
#define S_PC 60
#endif
#define S_PC 60 #define S_PC 60
#define S_LR 56 #define S_LR 56
...@@ -68,8 +62,6 @@ ...@@ -68,8 +62,6 @@
#define S_R0 0 #define S_R0 0
#define S_OFF 8 #define S_OFF 8
#ifdef CONFIG_CPU_32
.macro set_cpsr_c, reg, mode .macro set_cpsr_c, reg, mode
#if 1 #if 1
/* broken binutils */ /* broken binutils */
...@@ -160,58 +152,6 @@ ...@@ -160,58 +152,6 @@
#endif #endif
.endm .endm
#else
.macro save_user_regs
str r0, [sp, #-4]!
str lr, [sp, #-4]!
sub sp, sp, #15*4
stmia sp, {r0 - lr}^
mov r0, r0
.endm
.macro restore_user_regs
ldmia sp, {r0 - lr}^
mov r0, r0
ldr lr, [sp, #15*4]
add sp, sp, #15*4+8
movs pc, lr
.endm
.macro fast_restore_user_regs
add sp, sp, #S_OFF
ldmib sp, {r1 - lr}^
mov r0, r0
ldr lr, [sp, #15*4]
add sp, sp, #15*4+8
movs pc, lr
.endm
.macro mask_pc, rd, rm
bic \rd, \rm, #PCMASK
.endm
.macro enable_irqs, temp
teqp pc, #0x00000003
.endm
.macro initialise_traps_extra
.endm
.macro get_thread_info, rd
mov \rd, sp, lsr #13
mov \rd, \rd, lsl #13
.endm
/*
* Like adr, but force SVC mode (if required)
*/
.macro adrsvc, cond, reg, label
adr\cond \reg, \label
orr\cond \reg, \reg, #0x08000003
.endm
#endif
/* /*
* These are the registers used in the syscall handler, and allow us to * These are the registers used in the syscall handler, and allow us to
......
...@@ -54,7 +54,6 @@ ...@@ -54,7 +54,6 @@
static unsigned long no_fiq_insn; static unsigned long no_fiq_insn;
#ifdef CONFIG_CPU_32
static inline void unprotect_page_0(void) static inline void unprotect_page_0(void)
{ {
modify_domain(DOMAIN_USER, DOMAIN_MANAGER); modify_domain(DOMAIN_USER, DOMAIN_MANAGER);
...@@ -64,12 +63,6 @@ static inline void protect_page_0(void) ...@@ -64,12 +63,6 @@ static inline void protect_page_0(void)
{ {
modify_domain(DOMAIN_USER, DOMAIN_CLIENT); modify_domain(DOMAIN_USER, DOMAIN_CLIENT);
} }
#else
#define unprotect_page_0()
#define protect_page_0()
#endif
/* Default reacquire function /* Default reacquire function
* - we always relinquish FIQ control * - we always relinquish FIQ control
...@@ -120,17 +113,6 @@ void set_fiq_regs(struct pt_regs *regs) ...@@ -120,17 +113,6 @@ void set_fiq_regs(struct pt_regs *regs)
{ {
register unsigned long tmp, tmp2; register unsigned long tmp, tmp2;
__asm__ volatile ( __asm__ volatile (
#ifdef CONFIG_CPU_26
"mov %0, pc
bic %1, %0, #0x3
orr %1, %1, %3
teqp %1, #0 @ select FIQ mode
mov r0, r0
ldmia %2, {r8 - r14}
teqp %0, #0 @ return to SVC mode
mov r0, r0"
#endif
#ifdef CONFIG_CPU_32
"mrs %0, cpsr "mrs %0, cpsr
mov %1, %3 mov %1, %3
msr cpsr_c, %1 @ select FIQ mode msr cpsr_c, %1 @ select FIQ mode
...@@ -138,7 +120,6 @@ void set_fiq_regs(struct pt_regs *regs) ...@@ -138,7 +120,6 @@ void set_fiq_regs(struct pt_regs *regs)
ldmia %2, {r8 - r14} ldmia %2, {r8 - r14}
msr cpsr_c, %0 @ return to SVC mode msr cpsr_c, %0 @ return to SVC mode
mov r0, r0" mov r0, r0"
#endif
: "=&r" (tmp), "=&r" (tmp2) : "=&r" (tmp), "=&r" (tmp2)
: "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE) : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)
/* These registers aren't modified by the above code in a way /* These registers aren't modified by the above code in a way
...@@ -152,17 +133,6 @@ void get_fiq_regs(struct pt_regs *regs) ...@@ -152,17 +133,6 @@ void get_fiq_regs(struct pt_regs *regs)
{ {
register unsigned long tmp, tmp2; register unsigned long tmp, tmp2;
__asm__ volatile ( __asm__ volatile (
#ifdef CONFIG_CPU_26
"mov %0, pc
bic %1, %0, #0x3
orr %1, %1, %3
teqp %1, #0 @ select FIQ mode
mov r0, r0
stmia %2, {r8 - r14}
teqp %0, #0 @ return to SVC mode
mov r0, r0"
#endif
#ifdef CONFIG_CPU_32
"mrs %0, cpsr "mrs %0, cpsr
mov %1, %3 mov %1, %3
msr cpsr_c, %1 @ select FIQ mode msr cpsr_c, %1 @ select FIQ mode
...@@ -170,7 +140,6 @@ void get_fiq_regs(struct pt_regs *regs) ...@@ -170,7 +140,6 @@ void get_fiq_regs(struct pt_regs *regs)
stmia %2, {r8 - r14} stmia %2, {r8 - r14}
msr cpsr_c, %0 @ return to SVC mode msr cpsr_c, %0 @ return to SVC mode
mov r0, r0" mov r0, r0"
#endif
: "=&r" (tmp), "=&r" (tmp2) : "=&r" (tmp), "=&r" (tmp2)
: "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE) : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)
/* These registers aren't modified by the above code in a way /* These registers aren't modified by the above code in a way
......
...@@ -205,18 +205,6 @@ __create_page_tables: ...@@ -205,18 +205,6 @@ __create_page_tables:
add r3, r3, #1 << 20 add r3, r3, #1 << 20
str r3, [r0], #4 @ KERNEL + 3MB str r3, [r0], #4 @ KERNEL + 3MB
/*
* Ensure that the first section of RAM is present.
* we assume that:
* 1. the RAM is aligned to a 32MB boundary
* 2. the kernel is executing in the same 32MB chunk
* as the start of RAM.
*/
bic r0, r0, #0x01f00000 >> 18 @ round down
and r2, r5, #0xfe000000 @ round down
add r3, r8, r2 @ flags + rambase
str r3, [r0]
bic r8, r8, #0x0c @ turn off cacheable bic r8, r8, #0x0c @ turn off cacheable
@ and bufferable bits @ and bufferable bits
#ifdef CONFIG_DEBUG_LL #ifdef CONFIG_DEBUG_LL
......
...@@ -188,7 +188,6 @@ void show_regs(struct pt_regs * regs) ...@@ -188,7 +188,6 @@ void show_regs(struct pt_regs * regs)
processor_modes[processor_mode(regs)], processor_modes[processor_mode(regs)],
thumb_mode(regs) ? " (T)" : "", thumb_mode(regs) ? " (T)" : "",
get_fs() == get_ds() ? "kernel" : "user"); get_fs() == get_ds() ? "kernel" : "user");
#if defined(CONFIG_CPU_32)
{ {
unsigned int ctrl, transbase, dac; unsigned int ctrl, transbase, dac;
__asm__ ( __asm__ (
...@@ -199,7 +198,6 @@ void show_regs(struct pt_regs * regs) ...@@ -199,7 +198,6 @@ void show_regs(struct pt_regs * regs)
printk("Control: %04X Table: %08X DAC: %08X\n", printk("Control: %04X Table: %08X DAC: %08X\n",
ctrl, transbase, dac); ctrl, transbase, dac);
} }
#endif
} }
void show_fpregs(struct user_fp *regs) void show_fpregs(struct user_fp *regs)
...@@ -237,18 +235,9 @@ void show_fpregs(struct user_fp *regs) ...@@ -237,18 +235,9 @@ void show_fpregs(struct user_fp *regs)
static unsigned long *thread_info_head; static unsigned long *thread_info_head;
static unsigned int nr_thread_info; static unsigned int nr_thread_info;
#ifdef CONFIG_CPU_32
#define EXTRA_TASK_STRUCT 4 #define EXTRA_TASK_STRUCT 4
#define ll_alloc_task_struct() ((struct thread_info *) __get_free_pages(GFP_KERNEL,1)) #define ll_alloc_task_struct() ((struct thread_info *) __get_free_pages(GFP_KERNEL,1))
#define ll_free_task_struct(p) free_pages((unsigned long)(p),1) #define ll_free_task_struct(p) free_pages((unsigned long)(p),1)
#else
extern unsigned long get_page_8k(int priority);
extern void free_page_8k(unsigned long page);
#define EXTRA_TASK_STRUCT 0
#define ll_alloc_task_struct() ((struct task_struct *)get_page_8k(GFP_KERNEL))
#define ll_free_task_struct(p) free_page_8k((unsigned long)(p))
#endif
struct thread_info *alloc_thread_info(void) struct thread_info *alloc_thread_info(void)
{ {
......
...@@ -177,44 +177,6 @@ int __down_trylock(struct semaphore * sem) ...@@ -177,44 +177,6 @@ int __down_trylock(struct semaphore * sem)
* registers (r0 to r3 and lr), but not ip, as we use it as a return * registers (r0 to r3 and lr), but not ip, as we use it as a return
* value in some cases.. * value in some cases..
*/ */
#ifdef CONFIG_CPU_26
asm(" .align 5 \n\
.globl __down_failed \n\
__down_failed: \n\
stmfd sp!, {r0 - r3, lr} \n\
mov r0, ip \n\
bl __down \n\
ldmfd sp!, {r0 - r3, pc}^ \n\
\n\
.align 5 \n\
.globl __down_interruptible_failed \n\
__down_interruptible_failed: \n\
stmfd sp!, {r0 - r3, lr} \n\
mov r0, ip \n\
bl __down_interruptible \n\
mov ip, r0 \n\
ldmfd sp!, {r0 - r3, pc}^ \n\
\n\
.align 5 \n\
.globl __down_trylock_failed \n\
__down_trylock_failed: \n\
stmfd sp!, {r0 - r3, lr} \n\
mov r0, ip \n\
bl __down_trylock \n\
mov ip, r0 \n\
ldmfd sp!, {r0 - r3, pc}^ \n\
\n\
.align 5 \n\
.globl __up_wakeup \n\
__up_wakeup: \n\
stmfd sp!, {r0 - r3, lr} \n\
mov r0, ip \n\
bl __up \n\
ldmfd sp!, {r0 - r3, pc}^ \n\
");
#else
/* 32 bit version */
asm(" .align 5 \n\ asm(" .align 5 \n\
.globl __down_failed \n\ .globl __down_failed \n\
__down_failed: \n\ __down_failed: \n\
...@@ -250,4 +212,3 @@ __up_wakeup: \n\ ...@@ -250,4 +212,3 @@ __up_wakeup: \n\
ldmfd sp!, {r0 - r3, pc} \n\ ldmfd sp!, {r0 - r3, pc} \n\
"); ");
#endif
...@@ -113,7 +113,6 @@ static struct resource io_res[] = { ...@@ -113,7 +113,6 @@ static struct resource io_res[] = {
#define lp1 io_res[1] #define lp1 io_res[1]
#define lp2 io_res[2] #define lp2 io_res[2]
#ifdef CONFIG_CPU_32
static const char *cache_types[16] = { static const char *cache_types[16] = {
"write-through", "write-through",
"write-back", "write-back",
...@@ -231,10 +230,6 @@ static void __init dump_cpu_info(void) ...@@ -231,10 +230,6 @@ static void __init dump_cpu_info(void)
} }
} }
#else
#define dump_cpu_info() do { } while (0)
#endif
int cpu_architecture(void) int cpu_architecture(void)
{ {
int cpu_arch; int cpu_arch;
...@@ -768,7 +763,6 @@ static int c_show(struct seq_file *m, void *v) ...@@ -768,7 +763,6 @@ static int c_show(struct seq_file *m, void *v)
} }
seq_printf(m, "CPU revision\t: %d\n", processor_id & 15); seq_printf(m, "CPU revision\t: %d\n", processor_id & 15);
#ifdef CONFIG_CPU_32
{ {
unsigned int cache_info; unsigned int cache_info;
...@@ -791,7 +785,6 @@ static int c_show(struct seq_file *m, void *v) ...@@ -791,7 +785,6 @@ static int c_show(struct seq_file *m, void *v)
} }
} }
} }
#endif
seq_puts(m, "\n"); seq_puts(m, "\n");
......
...@@ -174,9 +174,7 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc) ...@@ -174,9 +174,7 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
__get_user_error(regs->ARM_sp, &sc->arm_sp, err); __get_user_error(regs->ARM_sp, &sc->arm_sp, err);
__get_user_error(regs->ARM_lr, &sc->arm_lr, err); __get_user_error(regs->ARM_lr, &sc->arm_lr, err);
__get_user_error(regs->ARM_pc, &sc->arm_pc, err); __get_user_error(regs->ARM_pc, &sc->arm_pc, err);
#ifdef CONFIG_CPU_32
__get_user_error(regs->ARM_cpsr, &sc->arm_cpsr, err); __get_user_error(regs->ARM_cpsr, &sc->arm_cpsr, err);
#endif
err |= !valid_user_regs(regs); err |= !valid_user_regs(regs);
...@@ -292,9 +290,7 @@ setup_sigcontext(struct sigcontext *sc, /*struct _fpstate *fpstate,*/ ...@@ -292,9 +290,7 @@ setup_sigcontext(struct sigcontext *sc, /*struct _fpstate *fpstate,*/
__put_user_error(regs->ARM_sp, &sc->arm_sp, err); __put_user_error(regs->ARM_sp, &sc->arm_sp, err);
__put_user_error(regs->ARM_lr, &sc->arm_lr, err); __put_user_error(regs->ARM_lr, &sc->arm_lr, err);
__put_user_error(regs->ARM_pc, &sc->arm_pc, err); __put_user_error(regs->ARM_pc, &sc->arm_pc, err);
#ifdef CONFIG_CPU_32
__put_user_error(regs->ARM_cpsr, &sc->arm_cpsr, err); __put_user_error(regs->ARM_cpsr, &sc->arm_cpsr, err);
#endif
__put_user_error(current->thread.trap_no, &sc->trap_no, err); __put_user_error(current->thread.trap_no, &sc->trap_no, err);
__put_user_error(current->thread.error_code, &sc->error_code, err); __put_user_error(current->thread.error_code, &sc->error_code, err);
...@@ -328,7 +324,6 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, ...@@ -328,7 +324,6 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,
unsigned long handler = (unsigned long)ka->sa.sa_handler; unsigned long handler = (unsigned long)ka->sa.sa_handler;
unsigned long retcode; unsigned long retcode;
int thumb = 0; int thumb = 0;
#ifdef CONFIG_CPU_32
unsigned long cpsr = regs->ARM_cpsr & ~PSR_f; unsigned long cpsr = regs->ARM_cpsr & ~PSR_f;
/* /*
...@@ -350,7 +345,6 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, ...@@ -350,7 +345,6 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,
else else
cpsr &= ~PSR_T_BIT; cpsr &= ~PSR_T_BIT;
} }
#endif
#endif #endif
if (ka->sa.sa_flags & SA_RESTORER) { if (ka->sa.sa_flags & SA_RESTORER) {
...@@ -378,10 +372,7 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, ...@@ -378,10 +372,7 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,
regs->ARM_sp = (unsigned long)frame; regs->ARM_sp = (unsigned long)frame;
regs->ARM_lr = retcode; regs->ARM_lr = retcode;
regs->ARM_pc = handler; regs->ARM_pc = handler;
#ifdef CONFIG_CPU_32
regs->ARM_cpsr = cpsr; regs->ARM_cpsr = cpsr;
#endif
return 0; return 0;
} }
......
...@@ -229,7 +229,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -229,7 +229,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
return sys_shmctl (first, second, return sys_shmctl (first, second,
(struct shmid_ds *) ptr); (struct shmid_ds *) ptr);
default: default:
return -EINVAL; return -ENOSYS;
} }
} }
......
...@@ -271,31 +271,6 @@ asmlinkage void do_undefinstr(struct pt_regs *regs) ...@@ -271,31 +271,6 @@ asmlinkage void do_undefinstr(struct pt_regs *regs)
die_if_kernel("Oops - undefined instruction", regs, 0); die_if_kernel("Oops - undefined instruction", regs, 0);
} }
#ifdef CONFIG_CPU_26
asmlinkage void do_excpt(unsigned long address, struct pt_regs *regs, int mode)
{
siginfo_t info;
#ifdef CONFIG_DEBUG_USER
printk(KERN_INFO "%s (%d): address exception: pc=%08lx\n",
current->comm, current->pid, instruction_pointer(regs));
dump_instr(regs);
#endif
current->thread.error_code = 0;
current->thread.trap_no = 11;
info.si_signo = SIGBUS;
info.si_errno = 0;
info.si_code = BUS_ADRERR;
info.si_addr = (void *)address;
force_sig_info(SIGBUS, &info, current);
die_if_kernel("Oops - address exception", regs, mode);
}
#endif
asmlinkage void do_unexp_fiq (struct pt_regs *regs) asmlinkage void do_unexp_fiq (struct pt_regs *regs)
{ {
#ifndef CONFIG_IGNORE_FIQ #ifndef CONFIG_IGNORE_FIQ
...@@ -405,7 +380,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) ...@@ -405,7 +380,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
ptrace_break(current, regs); ptrace_break(current, regs);
return regs->ARM_r0; return regs->ARM_r0;
#ifdef CONFIG_CPU_32
/* /*
* Flush a region from virtual address 'r0' to virtual address 'r1' * Flush a region from virtual address 'r0' to virtual address 'r1'
* _inclusive_. There is no alignment requirement on either address; * _inclusive_. There is no alignment requirement on either address;
...@@ -435,14 +409,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) ...@@ -435,14 +409,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
break; break;
regs->ARM_cpsr |= MODE32_BIT; regs->ARM_cpsr |= MODE32_BIT;
return regs->ARM_r0; return regs->ARM_r0;
#else
case NR(cacheflush):
return 0;
case NR(usr26):
case NR(usr32):
break;
#endif
default: default:
/* Calls 9f00xx..9f07ff are defined to return -ENOSYS /* Calls 9f00xx..9f07ff are defined to return -ENOSYS
...@@ -563,7 +529,5 @@ void __init trap_init(void) ...@@ -563,7 +529,5 @@ void __init trap_init(void)
if (base != 0) if (base != 0)
printk(KERN_DEBUG "Relocating machine vectors to 0x%08lx\n", printk(KERN_DEBUG "Relocating machine vectors to 0x%08lx\n",
base); base);
#ifdef CONFIG_CPU_32
modify_domain(DOMAIN_USER, DOMAIN_CLIENT); modify_domain(DOMAIN_USER, DOMAIN_CLIENT);
#endif
} }
...@@ -39,8 +39,6 @@ obj-$(v3) += io-readsw-armv3.o io-writesw-armv3.o io-readsl-armv3.o ...@@ -39,8 +39,6 @@ obj-$(v3) += io-readsw-armv3.o io-writesw-armv3.o io-readsl-armv3.o
obj-$(v4) += io-readsw-armv4.o io-writesw-armv4.o io-readsl-armv4.o obj-$(v4) += io-readsw-armv4.o io-writesw-armv4.o io-readsl-armv4.o
obj-y += io-writesl.o obj-y += io-writesl.o
obj-$(CONFIG_CPU_26) += uaccess-armo.o
$(obj)/csumpartialcopy.o: $(obj)/csumpartialcopygeneric.S $(obj)/csumpartialcopy.o: $(obj)/csumpartialcopygeneric.S
$(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S $(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*
* 27/03/03 Ian Molton Clean up CONFIG_CPU
*
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
...@@ -31,13 +34,9 @@ ENTRY(c_backtrace) ...@@ -31,13 +34,9 @@ ENTRY(c_backtrace)
#else #else
stmfd sp!, {r4 - r8, lr} @ Save an extra register so we have a location... stmfd sp!, {r4 - r8, lr} @ Save an extra register so we have a location...
#ifdef CONFIG_CPU_32
tst r1, #0x10 @ 26 or 32-bit? tst r1, #0x10 @ 26 or 32-bit?
moveq mask, #0xfc000003 moveq mask, #0xfc000003
movne mask, #0 movne mask, #0
#else
mov mask, #0xfc000003
#endif
tst mask, r0 tst mask, r0
movne r0, #0 movne r0, #0
movs frame, r0 movs frame, r0
......
...@@ -13,6 +13,12 @@ ...@@ -13,6 +13,12 @@
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/constants.h> #include <asm/constants.h>
#ifndef PLD
#define COPY_COUNT PAGE_SZ/64
#else
#define COPY_COUNT PAGE_SZ/64-1
#endif
.text .text
.align 5 .align 5
/* /*
...@@ -23,9 +29,13 @@ ...@@ -23,9 +29,13 @@
*/ */
ENTRY(copy_page) ENTRY(copy_page)
stmfd sp!, {r4, lr} @ 2 stmfd sp!, {r4, lr} @ 2
mov r2, #PAGE_SZ/64 @ 1 PLD( pld [r1, #0] )
PLD( pld [r1, #32] )
mov r2, #COPY_COUNT @ 1
ldmia r1!, {r3, r4, ip, lr} @ 4+1 ldmia r1!, {r3, r4, ip, lr} @ 4+1
1: stmia r0!, {r3, r4, ip, lr} @ 4 1: PLD( pld [r1, #64] )
PLD( pld [r1, #96] )
2: stmia r0!, {r3, r4, ip, lr} @ 4
ldmia r1!, {r3, r4, ip, lr} @ 4+1 ldmia r1!, {r3, r4, ip, lr} @ 4+1
stmia r0!, {r3, r4, ip, lr} @ 4 stmia r0!, {r3, r4, ip, lr} @ 4
ldmia r1!, {r3, r4, ip, lr} @ 4+1 ldmia r1!, {r3, r4, ip, lr} @ 4+1
...@@ -33,6 +43,8 @@ ENTRY(copy_page) ...@@ -33,6 +43,8 @@ ENTRY(copy_page)
ldmia r1!, {r3, r4, ip, lr} @ 4 ldmia r1!, {r3, r4, ip, lr} @ 4
subs r2, r2, #1 @ 1 subs r2, r2, #1 @ 1
stmia r0!, {r3, r4, ip, lr} @ 4 stmia r0!, {r3, r4, ip, lr} @ 4
ldmneia r1!, {r3, r4, ip, lr} @ 4 ldmgtia r1!, {r3, r4, ip, lr} @ 4
bne 1b @ 1 bgt 1b @ 1
PLD( ldmeqia r1!, {r3, r4, ip, lr} )
PLD( beq 2b )
LOADREGS(fd, sp!, {r4, pc}) @ 3 LOADREGS(fd, sp!, {r4, pc}) @ 3
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*
* 27/03/03 Ian Molton Clean up CONFIG_CPU
*
*/ */
#include <linux/config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/errno.h> #include <asm/errno.h>
...@@ -15,8 +17,6 @@ ...@@ -15,8 +17,6 @@
.text .text
#if defined(CONFIG_CPU_32)
.macro save_regs .macro save_regs
stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc} stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc}
.endm .endm
...@@ -72,82 +72,6 @@ ...@@ -72,82 +72,6 @@
.previous .previous
.endm .endm
#elif defined(CONFIG_CPU_26)
.macro save_regs
stmfd sp!, {r1 - r2, r4 - r9, fp, ip, lr, pc}
mov r9, sp, lsr #13
mov r9, r9, lsl #13
ldr r9, [r9, #TSK_ADDR_LIMIT]
mov r9, r9, lsr #24
.endm
.macro load_regs,flags
ldm\flags fp, {r1, r2, r4-r9, fp, sp, pc}^
.endm
.macro load1b, reg1
tst r9, #0x01
9999: ldreqbt \reg1, [r0], #1
ldrneb \reg1, [r0], #1
.section __ex_table, "a"
.align 3
.long 9999b, 6001f
.previous
.endm
.macro load2b, reg1, reg2
tst r9, #0x01
9999: ldreqbt \reg1, [r0], #1
ldrneb \reg1, [r0], #1
9998: ldreqbt \reg2, [r0], #1
ldrneb \reg2, [r0], #1
.section __ex_table, "a"
.long 9999b, 6001f
.long 9998b, 6001f
.previous
.endm
.macro load1l, reg1
tst r9, #0x01
9999: ldreqt \reg1, [r0], #4
ldrne \reg1, [r0], #4
.section __ex_table, "a"
.align 3
.long 9999b, 6001f
.previous
.endm
.macro load2l, reg1, reg2
tst r9, #0x01
ldmneia r0!, {\reg1, \reg2}
9999: ldreqt \reg1, [r0], #4
9998: ldreqt \reg2, [r0], #4
.section __ex_table, "a"
.long 9999b, 6001f
.long 9998b, 6001f
.previous
.endm
.macro load4l, reg1, reg2, reg3, reg4
tst r9, #0x01
ldmneia r0!, {\reg1, \reg2, \reg3, \reg4}
9999: ldreqt \reg1, [r0], #4
9998: ldreqt \reg2, [r0], #4
9997: ldreqt \reg3, [r0], #4
9996: ldreqt \reg4, [r0], #4
.section __ex_table, "a"
.long 9999b, 6001f
.long 9998b, 6001f
.long 9997b, 6001f
.long 9996b, 6001f
.previous
.endm
#else
#error Unknown CPU architecture
#endif
/* /*
* unsigned int * unsigned int
* csum_partial_copy_from_user(const char *src, char *dst, int len, int sum, int *err_ptr) * csum_partial_copy_from_user(const char *src, char *dst, int len, int sum, int *err_ptr)
...@@ -165,9 +89,7 @@ ...@@ -165,9 +89,7 @@
* so properly, we would have to add in whatever registers were loaded before * so properly, we would have to add in whatever registers were loaded before
* the fault, which, with the current asm above is not predictable. * the fault, which, with the current asm above is not predictable.
*/ */
#if defined(CONFIG_CPU_32)
.section .fixup,"ax" .section .fixup,"ax"
#endif
.align 4 .align 4
6001: mov r4, #-EFAULT 6001: mov r4, #-EFAULT
ldr r5, [fp, #4] @ *err_ptr ldr r5, [fp, #4] @ *err_ptr
...@@ -179,6 +101,4 @@ ...@@ -179,6 +101,4 @@
strneb r0, [r1], #1 strneb r0, [r1], #1
bne 6002b bne 6002b
load_regs ea load_regs ea
#if defined(CONFIG_CPU_32)
.previous .previous
#endif
...@@ -6,19 +6,17 @@ ...@@ -6,19 +6,17 @@
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*
* 27/03/03 Ian Molton Clean up CONFIG_CPU
*
*/ */
#include <linux/config.h> /* for CONFIG_CPU_nn */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#ifdef CONFIG_CPU_26
#define CPSR2SPSR(rt)
#else
#define CPSR2SPSR(rt) \ #define CPSR2SPSR(rt) \
mrs rt, cpsr; \ mrs rt, cpsr; \
msr spsr, rt msr spsr, rt
#endif
@ Purpose: call an expansion card loader to read bytes. @ Purpose: call an expansion card loader to read bytes.
@ Proto : char read_loader(int offset, char *card_base, char *loader); @ Proto : char read_loader(int offset, char *card_base, char *loader);
......
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*
* 27/03/03 Ian Molton Clean up CONFIG_CPU
*
*/ */
#include <linux/config.h> /* for CONFIG_CPU_nn */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/hardware.h> #include <asm/hardware.h>
...@@ -53,21 +55,3 @@ ENTRY(outsl) ...@@ -53,21 +55,3 @@ ENTRY(outsl)
adr r0, .iosl_warning adr r0, .iosl_warning
mov r1, lr mov r1, lr
b printk b printk
@ Purpose: write a memc register
@ Proto : void memc_write(int register, int value);
@ Returns: nothing
#ifdef CONFIG_CPU_26
ENTRY(memc_write)
cmp r0, #7
RETINSTR(movgt,pc,lr)
mov r0, r0, lsl #17
mov r1, r1, lsl #15
mov r1, r1, lsr #17
orr r0, r0, r1, lsl #2
add r0, r0, #0x03600000
strb r0, [r0]
RETINSTR(mov,pc,lr)
#endif
...@@ -33,23 +33,19 @@ Boston, MA 02111-1307, USA. */ ...@@ -33,23 +33,19 @@ Boston, MA 02111-1307, USA. */
This exception does not however invalidate any other reasons why This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. the executable file might be covered by the GNU General Public License.
*/ */
/* This code is derived from gcc 2.95.3 */ /* This code is derived from gcc 2.95.3
/* I Molton 29/07/01 */ * 29/07/01 Adapted for linux
* 27/03/03 Ian Molton Clean up CONFIG_CPU
*/
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <linux/config.h> #include <linux/config.h>
#ifdef CONFIG_CPU_26
#define RET movs
#define RETc(x) mov##x##s
#define RETCOND ^
#else
#define RET mov #define RET mov
#define RETc(x) mov##x #define RETc(x) mov##x
#define RETCOND #define RETCOND
#endif
dividend .req r0 dividend .req r0
divisor .req r1 divisor .req r1
......
...@@ -27,15 +27,15 @@ ...@@ -27,15 +27,15 @@
/* /*
* Prototype: void memcpy(void *to,const void *from,unsigned long n); * Prototype: void memcpy(void *to,const void *from,unsigned long n);
* ARM3: cant use memcopy here!!!
*/ */
ENTRY(memcpy) ENTRY(memcpy)
ENTRY(memmove) ENTRY(memmove)
ENTER ENTER
cmp r1, r0 cmp r1, r0
bcc 19f bcc 23f
subs r2, r2, #4 subs r2, r2, #4
blt 6f blt 6f
PLD( pld [r1, #0] )
ands ip, r0, #3 ands ip, r0, #3
bne 7f bne 7f
ands ip, r1, #3 ands ip, r1, #3
...@@ -43,29 +43,42 @@ ENTRY(memmove) ...@@ -43,29 +43,42 @@ ENTRY(memmove)
1: subs r2, r2, #8 1: subs r2, r2, #8
blt 5f blt 5f
subs r2, r2, #0x14 subs r2, r2, #20
blt 3f blt 4f
2: ldmia r1!,{r3 - r9, ip} PLD( pld [r1, #28] )
stmia r0!,{r3 - r9, ip} PLD( subs r2, r2, #64 )
PLD( blt 3f )
2: PLD( pld [r1, #60] )
PLD( pld [r1, #92] )
ldmia r1!, {r3 - r9, ip}
subs r2, r2, #32 subs r2, r2, #32
stmgeia r0!, {r3 - r9, ip}
ldmgeia r1!, {r3 - r9, ip}
subges r2, r2, #32
stmia r0!, {r3 - r9, ip}
bge 2b bge 2b
cmn r2, #16 3: PLD( ldmia r1!, {r3 - r9, ip} )
PLD( adds r2, r2, #32 )
PLD( stmgeia r0!, {r3 - r9, ip} )
PLD( ldmgeia r1!, {r3 - r9, ip} )
PLD( subges r2, r2, #32 )
PLD( stmia r0!, {r3 - r9, ip} )
4: cmn r2, #16
ldmgeia r1!, {r3 - r6} ldmgeia r1!, {r3 - r6}
subge r2, r2, #16
stmgeia r0!, {r3 - r6} stmgeia r0!, {r3 - r6}
subge r2, r2, #0x10 adds r2, r2, #20
3: adds r2, r2, #0x14 ldmgeia r1!, {r3 - r5}
4: ldmgeia r1!, {r3 - r5} subge r2, r2, #12
stmgeia r0!, {r3 - r5} stmgeia r0!, {r3 - r5}
subges r2, r2, #12
bge 4b
5: adds r2, r2, #8 5: adds r2, r2, #8
blt 6f blt 6f
subs r2, r2, #4 subs r2, r2, #4
ldrlt r3, [r1], #4 ldrlt r3, [r1], #4
ldmgeia r1!, {r4, r5} ldmgeia r1!, {r4, r5}
subge r2, r2, #4
strlt r3, [r0], #4 strlt r3, [r0], #4
stmgeia r0!, {r4, r5} stmgeia r0!, {r4, r5}
subge r2, r2, #4
6: adds r2, r2, #4 6: adds r2, r2, #4
EXITEQ EXITEQ
...@@ -94,13 +107,19 @@ ENTRY(memmove) ...@@ -94,13 +107,19 @@ ENTRY(memmove)
8: bic r1, r1, #3 8: bic r1, r1, #3
ldr r7, [r1], #4 ldr r7, [r1], #4
cmp ip, #2 cmp ip, #2
bgt 15f bgt 18f
beq 11f beq 13f
cmp r2, #12 cmp r2, #12
blt 10f blt 11f
PLD( pld [r1, #12] )
sub r2, r2, #12 sub r2, r2, #12
9: mov r3, r7, pull #8 PLD( subs r2, r2, #32 )
PLD( blt 10f )
PLD( pld [r1, #28] )
9: PLD( pld [r1, #44] )
10: mov r3, r7, pull #8
ldmia r1!, {r4 - r7} ldmia r1!, {r4 - r7}
subs r2, r2, #16
orr r3, r3, r4, push #24 orr r3, r3, r4, push #24
mov r4, r4, pull #8 mov r4, r4, pull #8
orr r4, r4, r5, push #24 orr r4, r4, r5, push #24
...@@ -109,24 +128,32 @@ ENTRY(memmove) ...@@ -109,24 +128,32 @@ ENTRY(memmove)
mov r6, r6, pull #8 mov r6, r6, pull #8
orr r6, r6, r7, push #24 orr r6, r6, r7, push #24
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
subs r2, r2, #16
bge 9b bge 9b
PLD( cmn r2, #32 )
PLD( bge 10b )
PLD( add r2, r2, #32 )
adds r2, r2, #12 adds r2, r2, #12
blt 100f blt 12f
10: mov r3, r7, pull #8 11: mov r3, r7, pull #8
ldr r7, [r1], #4 ldr r7, [r1], #4
subs r2, r2, #4 subs r2, r2, #4
orr r3, r3, r7, push #24 orr r3, r3, r7, push #24
str r3, [r0], #4 str r3, [r0], #4
bge 10b bge 11b
100: sub r1, r1, #3 12: sub r1, r1, #3
b 6b b 6b
11: cmp r2, #12 13: cmp r2, #12
blt 13f /* */ blt 16f
PLD( pld [r1, #12] )
sub r2, r2, #12 sub r2, r2, #12
12: mov r3, r7, pull #16 PLD( subs r2, r2, #32 )
PLD( blt 15f )
PLD( pld [r1, #28] )
14: PLD( pld [r1, #44] )
15: mov r3, r7, pull #16
ldmia r1!, {r4 - r7} ldmia r1!, {r4 - r7}
subs r2, r2, #16
orr r3, r3, r4, push #16 orr r3, r3, r4, push #16
mov r4, r4, pull #16 mov r4, r4, pull #16
orr r4, r4, r5, push #16 orr r4, r4, r5, push #16
...@@ -135,24 +162,32 @@ ENTRY(memmove) ...@@ -135,24 +162,32 @@ ENTRY(memmove)
mov r6, r6, pull #16 mov r6, r6, pull #16
orr r6, r6, r7, push #16 orr r6, r6, r7, push #16
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
subs r2, r2, #16 bge 14b
bge 12b PLD( cmn r2, #32 )
PLD( bge 15b )
PLD( add r2, r2, #32 )
adds r2, r2, #12 adds r2, r2, #12
blt 14f blt 17f
13: mov r3, r7, pull #16 16: mov r3, r7, pull #16
ldr r7, [r1], #4 ldr r7, [r1], #4
subs r2, r2, #4 subs r2, r2, #4
orr r3, r3, r7, push #16 orr r3, r3, r7, push #16
str r3, [r0], #4 str r3, [r0], #4
bge 13b bge 16b
14: sub r1, r1, #2 17: sub r1, r1, #2
b 6b b 6b
15: cmp r2, #12 18: cmp r2, #12
blt 17f blt 21f
PLD( pld [r1, #12] )
sub r2, r2, #12 sub r2, r2, #12
16: mov r3, r7, pull #24 PLD( subs r2, r2, #32 )
PLD( blt 20f )
PLD( pld [r1, #28] )
19: PLD( pld [r1, #44] )
20: mov r3, r7, pull #24
ldmia r1!, {r4 - r7} ldmia r1!, {r4 - r7}
subs r2, r2, #16
orr r3, r3, r4, push #8 orr r3, r3, r4, push #8
mov r4, r4, pull #24 mov r4, r4, pull #24
orr r4, r4, r5, push #8 orr r4, r4, r5, push #8
...@@ -161,55 +196,72 @@ ENTRY(memmove) ...@@ -161,55 +196,72 @@ ENTRY(memmove)
mov r6, r6, pull #24 mov r6, r6, pull #24
orr r6, r6, r7, push #8 orr r6, r6, r7, push #8
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
subs r2, r2, #16 bge 19b
bge 16b PLD( cmn r2, #32 )
PLD( bge 20b )
PLD( add r2, r2, #32 )
adds r2, r2, #12 adds r2, r2, #12
blt 18f blt 22f
17: mov r3, r7, pull #24 21: mov r3, r7, pull #24
ldr r7, [r1], #4 ldr r7, [r1], #4
subs r2, r2, #4 subs r2, r2, #4
orr r3, r3, r7, push #8 orr r3, r3, r7, push #8
str r3, [r0], #4 str r3, [r0], #4
bge 17b bge 21b
18: sub r1, r1, #1 22: sub r1, r1, #1
b 6b b 6b
19: add r1, r1, r2 23: add r1, r1, r2
add r0, r0, r2 add r0, r0, r2
subs r2, r2, #4 subs r2, r2, #4
blt 24f blt 29f
PLD( pld [r1, #-4] )
ands ip, r0, #3 ands ip, r0, #3
bne 25f bne 30f
ands ip, r1, #3 ands ip, r1, #3
bne 26f bne 31f
20: subs r2, r2, #8 24: subs r2, r2, #8
blt 23f blt 28f
subs r2, r2, #0x14 subs r2, r2, #20
blt 22f blt 27f
21: ldmdb r1!, {r3 - r9, ip} PLD( pld [r1, #-32] )
stmdb r0!, {r3 - r9, ip} PLD( subs r2, r2, #64 )
PLD( blt 26f )
25: PLD( pld [r1, #-64] )
PLD( pld [r1, #-96] )
ldmdb r1!, {r3 - r9, ip}
subs r2, r2, #32 subs r2, r2, #32
bge 21b stmgedb r0!, {r3 - r9, ip}
22: cmn r2, #16 ldmgedb r1!, {r3 - r9, ip}
subges r2, r2, #32
stmdb r0!, {r3 - r9, ip}
bge 25b
26: PLD( ldmdb r1!, {r3 - r9, ip} )
PLD( adds r2, r2, #32 )
PLD( stmgedb r0!, {r3 - r9, ip} )
PLD( ldmgedb r1!, {r3 - r9, ip} )
PLD( subges r2, r2, #32 )
PLD( stmdb r0!, {r3 - r9, ip} )
27: cmn r2, #16
ldmgedb r1!, {r3 - r6} ldmgedb r1!, {r3 - r6}
stmgedb r0!, {r3 - r6}
subge r2, r2, #16 subge r2, r2, #16
stmgedb r0!, {r3 - r6}
adds r2, r2, #20 adds r2, r2, #20
ldmgedb r1!, {r3 - r5} ldmgedb r1!, {r3 - r5}
stmgedb r0!, {r3 - r5}
subge r2, r2, #12 subge r2, r2, #12
23: adds r2, r2, #8 stmgedb r0!, {r3 - r5}
blt 24f 28: adds r2, r2, #8
blt 29f
subs r2, r2, #4 subs r2, r2, #4
ldrlt r3, [r1, #-4]! ldrlt r3, [r1, #-4]!
ldmgedb r1!, {r4, r5} ldmgedb r1!, {r4, r5}
subge r2, r2, #4
strlt r3, [r0, #-4]! strlt r3, [r0, #-4]!
stmgedb r0!, {r4, r5} stmgedb r0!, {r4, r5}
subge r2, r2, #4
24: adds r2, r2, #4 29: adds r2, r2, #4
EXITEQ EXITEQ
cmp r2, #2 cmp r2, #2
ldrb r3, [r1, #-1]! ldrb r3, [r1, #-1]!
...@@ -220,7 +272,7 @@ ENTRY(memmove) ...@@ -220,7 +272,7 @@ ENTRY(memmove)
strgtb r5, [r0, #-1]! strgtb r5, [r0, #-1]!
EXIT EXIT
25: cmp ip, #2 30: cmp ip, #2
ldrb r3, [r1, #-1]! ldrb r3, [r1, #-1]!
ldrgeb r4, [r1, #-1]! ldrgeb r4, [r1, #-1]!
ldrgtb r5, [r1, #-1]! ldrgtb r5, [r1, #-1]!
...@@ -228,20 +280,26 @@ ENTRY(memmove) ...@@ -228,20 +280,26 @@ ENTRY(memmove)
strgeb r4, [r0, #-1]! strgeb r4, [r0, #-1]!
strgtb r5, [r0, #-1]! strgtb r5, [r0, #-1]!
subs r2, r2, ip subs r2, r2, ip
blt 24b blt 29b
ands ip, r1, #3 ands ip, r1, #3
beq 20b beq 24b
26: bic r1, r1, #3 31: bic r1, r1, #3
ldr r3, [r1], #0 ldr r3, [r1], #0
cmp ip, #2 cmp ip, #2
blt 34f blt 41f
beq 30f beq 36f
cmp r2, #12 cmp r2, #12
blt 28f blt 34f
PLD( pld [r1, #-16] )
sub r2, r2, #12 sub r2, r2, #12
27: mov r7, r3, push #8 PLD( subs r2, r2, #32 )
PLD( blt 33f )
PLD( pld [r1, #-32] )
32: PLD( pld [r1, #-48] )
33: mov r7, r3, push #8
ldmdb r1!, {r3, r4, r5, r6} ldmdb r1!, {r3, r4, r5, r6}
subs r2, r2, #16
orr r7, r7, r6, pull #24 orr r7, r7, r6, pull #24
mov r6, r6, push #8 mov r6, r6, push #8
orr r6, r6, r5, pull #24 orr r6, r6, r5, pull #24
...@@ -250,24 +308,32 @@ ENTRY(memmove) ...@@ -250,24 +308,32 @@ ENTRY(memmove)
mov r4, r4, push #8 mov r4, r4, push #8
orr r4, r4, r3, pull #24 orr r4, r4, r3, pull #24
stmdb r0!, {r4, r5, r6, r7} stmdb r0!, {r4, r5, r6, r7}
subs r2, r2, #16 bge 32b
bge 27b PLD( cmn r2, #32 )
PLD( bge 33b )
PLD( add r2, r2, #32 )
adds r2, r2, #12 adds r2, r2, #12
blt 29f blt 35f
28: mov ip, r3, push #8 34: mov ip, r3, push #8
ldr r3, [r1, #-4]! ldr r3, [r1, #-4]!
subs r2, r2, #4 subs r2, r2, #4
orr ip, ip, r3, pull #24 orr ip, ip, r3, pull #24
str ip, [r0, #-4]! str ip, [r0, #-4]!
bge 28b bge 34b
29: add r1, r1, #3 35: add r1, r1, #3
b 24b b 29b
30: cmp r2, #12 36: cmp r2, #12
blt 32f blt 39f
PLD( pld [r1, #-16] )
sub r2, r2, #12 sub r2, r2, #12
31: mov r7, r3, push #16 PLD( subs r2, r2, #32 )
PLD( blt 38f )
PLD( pld [r1, #-32] )
37: PLD( pld [r1, #-48] )
38: mov r7, r3, push #16
ldmdb r1!, {r3, r4, r5, r6} ldmdb r1!, {r3, r4, r5, r6}
subs r2, r2, #16
orr r7, r7, r6, pull #16 orr r7, r7, r6, pull #16
mov r6, r6, push #16 mov r6, r6, push #16
orr r6, r6, r5, pull #16 orr r6, r6, r5, pull #16
...@@ -276,24 +342,32 @@ ENTRY(memmove) ...@@ -276,24 +342,32 @@ ENTRY(memmove)
mov r4, r4, push #16 mov r4, r4, push #16
orr r4, r4, r3, pull #16 orr r4, r4, r3, pull #16
stmdb r0!, {r4, r5, r6, r7} stmdb r0!, {r4, r5, r6, r7}
subs r2, r2, #16 bge 37b
bge 31b PLD( cmn r2, #32 )
PLD( bge 38b )
PLD( add r2, r2, #32 )
adds r2, r2, #12 adds r2, r2, #12
blt 33f blt 40f
32: mov ip, r3, push #16 39: mov ip, r3, push #16
ldr r3, [r1, #-4]! ldr r3, [r1, #-4]!
subs r2, r2, #4 subs r2, r2, #4
orr ip, ip, r3, pull #16 orr ip, ip, r3, pull #16
str ip, [r0, #-4]! str ip, [r0, #-4]!
bge 32b bge 39b
33: add r1, r1, #2 40: add r1, r1, #2
b 24b b 29b
34: cmp r2, #12 41: cmp r2, #12
blt 36f blt 44f
PLD( pld [r1, #-16] )
sub r2, r2, #12 sub r2, r2, #12
35: mov r7, r3, push #24 PLD( subs r2, r2, #32 )
PLD( blt 43f )
PLD( pld [r1, #-32] )
42: PLD( pld [r1, #-48] )
43: mov r7, r3, push #24
ldmdb r1!, {r3, r4, r5, r6} ldmdb r1!, {r3, r4, r5, r6}
subs r2, r2, #16
orr r7, r7, r6, pull #8 orr r7, r7, r6, pull #8
mov r6, r6, push #24 mov r6, r6, push #24
orr r6, r6, r5, pull #8 orr r6, r6, r5, pull #8
...@@ -302,17 +376,18 @@ ENTRY(memmove) ...@@ -302,17 +376,18 @@ ENTRY(memmove)
mov r4, r4, push #24 mov r4, r4, push #24
orr r4, r4, r3, pull #8 orr r4, r4, r3, pull #8
stmdb r0!, {r4, r5, r6, r7} stmdb r0!, {r4, r5, r6, r7}
subs r2, r2, #16 bge 42b
bge 35b PLD( cmn r2, #32 )
PLD( bge 43b )
PLD( add r2, r2, #32 )
adds r2, r2, #12 adds r2, r2, #12
blt 37f blt 45f
36: mov ip, r3, push #24 44: mov ip, r3, push #24
ldr r3, [r1, #-4]! ldr r3, [r1, #-4]!
subs r2, r2, #4 subs r2, r2, #4
orr ip, ip, r3, pull #8 orr ip, ip, r3, pull #8
str ip, [r0, #-4]! str ip, [r0, #-4]!
bge 36b bge 44b
37: add r1, r1, #1 45: add r1, r1, #1
b 24b b 29b
.align
/*
* linux/arch/arm/lib/uaccess-armo.S
*
* Copyright (C) 1998 Russell King
*
* Note! Some code fragments found in here have a special calling
* convention - they are not APCS compliant!
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
.text
.globl uaccess_user
uaccess_user:
.word uaccess_user_put_byte
.word uaccess_user_get_byte
.word uaccess_user_put_half
.word uaccess_user_get_half
.word uaccess_user_put_word
.word uaccess_user_get_word
.word __arch_copy_from_user
.word __arch_copy_to_user
.word __arch_clear_user
.word __arch_strncpy_from_user
.word __arch_strnlen_user
@ In : r0 = x, r1 = addr, r2 = error
@ Out: r2 = error
uaccess_user_put_byte:
stmfd sp!, {lr}
USER( strbt r0, [r1])
ldmfd sp!, {pc}^
@ In : r0 = x, r1 = addr, r2 = error
@ Out: r2 = error
uaccess_user_put_half:
stmfd sp!, {lr}
USER( strbt r0, [r1], #1)
mov r0, r0, lsr #8
USER( strbt r0, [r1])
ldmfd sp!, {pc}^
@ In : r0 = x, r1 = addr, r2 = error
@ Out: r2 = error
uaccess_user_put_word:
stmfd sp!, {lr}
USER( strt r0, [r1])
ldmfd sp!, {pc}^
9001: mov r2, #-EFAULT
ldmfd sp!, {pc}^
@ In : r0 = addr, r1 = error
@ Out: r0 = x, r1 = error
uaccess_user_get_byte:
stmfd sp!, {lr}
USER( ldrbt r0, [r0])
ldmfd sp!, {pc}^
@ In : r0 = addr, r1 = error
@ Out: r0 = x, r1 = error
uaccess_user_get_half:
stmfd sp!, {lr}
USER( ldrt r0, [r0])
mov r0, r0, lsl #16
mov r0, r0, lsr #16
ldmfd sp!, {pc}^
@ In : r0 = addr, r1 = error
@ Out: r0 = x, r1 = error
uaccess_user_get_word:
stmfd sp!, {lr}
USER( ldrt r0, [r0])
ldmfd sp!, {pc}^
9001: mov r1, #-EFAULT
ldmfd sp!, {pc}^
.globl uaccess_kernel
uaccess_kernel:
.word uaccess_kernel_put_byte
.word uaccess_kernel_get_byte
.word uaccess_kernel_put_half
.word uaccess_kernel_get_half
.word uaccess_kernel_put_word
.word uaccess_kernel_get_word
.word uaccess_kernel_copy
.word uaccess_kernel_copy
.word uaccess_kernel_clear
.word uaccess_kernel_strncpy_from
.word uaccess_kernel_strnlen
@ In : r0 = x, r1 = addr, r2 = error
@ Out: r2 = error
uaccess_kernel_put_byte:
stmfd sp!, {lr}
strb r0, [r1]
ldmfd sp!, {pc}^
@ In : r0 = x, r1 = addr, r2 = error
@ Out: r2 = error
uaccess_kernel_put_half:
stmfd sp!, {lr}
strb r0, [r1]
mov r0, r0, lsr #8
strb r0, [r1, #1]
ldmfd sp!, {pc}^
@ In : r0 = x, r1 = addr, r2 = error
@ Out: r2 = error
uaccess_kernel_put_word:
stmfd sp!, {lr}
str r0, [r1]
ldmfd sp!, {pc}^
@ In : r0 = addr, r1 = error
@ Out: r0 = x, r1 = error
uaccess_kernel_get_byte:
stmfd sp!, {lr}
ldrb r0, [r0]
ldmfd sp!, {pc}^
@ In : r0 = addr, r1 = error
@ Out: r0 = x, r1 = error
uaccess_kernel_get_half:
stmfd sp!, {lr}
ldr r0, [r0]
mov r0, r0, lsl #16
mov r0, r0, lsr #16
ldmfd sp!, {pc}^
@ In : r0 = addr, r1 = error
@ Out: r0 = x, r1 = error
uaccess_kernel_get_word:
stmfd sp!, {lr}
ldr r0, [r0]
ldmfd sp!, {pc}^
/* Prototype: int uaccess_kernel_copy(void *to, const char *from, size_t n)
* Purpose : copy a block to kernel memory from kernel memory
* Params : to - kernel memory
* : from - kernel memory
* : n - number of bytes to copy
* Returns : Number of bytes NOT copied.
*/
uaccess_kernel_copy:
stmfd sp!, {lr}
bl memcpy
mov r0, #0
ldmfd sp!, {pc}^
/* Prototype: int uaccess_kernel_clear(void *addr, size_t sz)
* Purpose : clear some kernel memory
* Params : addr - kernel memory address to clear
* : sz - number of bytes to clear
* Returns : number of bytes NOT cleared
*/
uaccess_kernel_clear:
stmfd sp!, {lr}
mov r2, #0
cmp r1, #4
blt 2f
ands ip, r0, #3
beq 1f
cmp ip, #1
strb r2, [r0], #1
strleb r2, [r0], #1
strltb r2, [r0], #1
rsb ip, ip, #4
sub r1, r1, ip @ 7 6 5 4 3 2 1
1: subs r1, r1, #8 @ -1 -2 -3 -4 -5 -6 -7
bmi 2f
str r2, [r0], #4
str r2, [r0], #4
b 1b
2: adds r1, r1, #4 @ 3 2 1 0 -1 -2 -3
strpl r2, [r0], #4
tst r1, #2 @ 1x 1x 0x 0x 1x 1x 0x
strneb r2, [r0], #1
strneb r2, [r0], #1
tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1
strneb r2, [r0], #1
mov r0, #0
ldmfd sp!, {pc}^
/* Prototype: size_t uaccess_kernel_strncpy_from(char *dst, char *src, size_t len)
* Purpose : copy a string from kernel memory to kernel memory
* Params : dst - kernel memory destination
* : src - kernel memory source
* : len - maximum length of string
* Returns : number of characters copied
*/
uaccess_kernel_strncpy_from:
stmfd sp!, {lr}
mov ip, r2
1: subs r2, r2, #1
bmi 2f
ldrb r3, [r1], #1
strb r3, [r0], #1
teq r3, #0
bne 1b
2: subs r0, ip, r2
ldmfd sp!, {pc}^
/* Prototype: int uaccess_kernel_strlen(char *str, long n)
* Purpose : get length of a string in kernel memory
* Params : str - address of string in kernel memory
* Returns : length of string *including terminator*,
* or zero on exception, or n + 1 if too long
*/
uaccess_kernel_strnlen:
stmfd sp!, {lr}
mov r2, r0
1: ldrb r1, [r0], #1
teq r1, #0
beq 2f
subs r1, r1, #1
bne 1b
add r0, r0, #1
2: sub r0, r0, r2
ldmfd sp!, {pc}^
...@@ -43,6 +43,8 @@ ENTRY(__arch_copy_to_user) ...@@ -43,6 +43,8 @@ ENTRY(__arch_copy_to_user)
stmfd sp!, {r2, r4 - r7, lr} stmfd sp!, {r2, r4 - r7, lr}
cmp r2, #4 cmp r2, #4
blt .c2u_not_enough blt .c2u_not_enough
PLD( pld [r1, #0] )
PLD( pld [r0, #0] )
ands ip, r0, #3 ands ip, r0, #3
bne .c2u_dest_not_aligned bne .c2u_dest_not_aligned
.c2u_dest_aligned: .c2u_dest_aligned:
...@@ -71,13 +73,26 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -71,13 +73,26 @@ USER( strt r3, [r0], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #32 subs ip, ip, #32
blt .c2u_0rem8lp blt .c2u_0rem8lp
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
PLD( subs ip, ip, #64 )
PLD( blt .c2u_0cpynopld )
PLD( pld [r1, #60] )
PLD( pld [r0, #60] )
.c2u_0cpy8lp: ldmia r1!, {r3 - r6} .c2u_0cpy8lp:
PLD( pld [r1, #92] )
PLD( pld [r0, #92] )
.c2u_0cpynopld: ldmia r1!, {r3 - r6}
stmia r0!, {r3 - r6} @ Shouldnt fault stmia r0!, {r3 - r6} @ Shouldnt fault
ldmia r1!, {r3 - r6} ldmia r1!, {r3 - r6}
stmia r0!, {r3 - r6} @ Shouldnt fault
subs ip, ip, #32 subs ip, ip, #32
stmia r0!, {r3 - r6} @ Shouldnt fault
bpl .c2u_0cpy8lp bpl .c2u_0cpy8lp
PLD( cmn ip, #64 )
PLD( bge .c2u_0cpynopld )
PLD( add ip, ip, #64 )
.c2u_0rem8lp: cmn ip, #16 .c2u_0rem8lp: cmn ip, #16
ldmgeia r1!, {r3 - r6} ldmgeia r1!, {r3 - r6}
stmgeia r0!, {r3 - r6} @ Shouldnt fault stmgeia r0!, {r3 - r6} @ Shouldnt fault
...@@ -128,9 +143,19 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -128,9 +143,19 @@ USER( strt r3, [r0], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #16 subs ip, ip, #16
blt .c2u_1rem8lp blt .c2u_1rem8lp
PLD( pld [r1, #12] )
PLD( pld [r0, #12] )
PLD( subs ip, ip, #32 )
PLD( blt .c2u_1cpynopld )
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
.c2u_1cpy8lp: mov r3, r7, pull #8 .c2u_1cpy8lp:
PLD( pld [r1, #44] )
PLD( pld [r0, #44] )
.c2u_1cpynopld: mov r3, r7, pull #8
ldmia r1!, {r4 - r7} ldmia r1!, {r4 - r7}
subs ip, ip, #16
orr r3, r3, r4, push #24 orr r3, r3, r4, push #24
mov r4, r4, pull #8 mov r4, r4, pull #8
orr r4, r4, r5, push #24 orr r4, r4, r5, push #24
...@@ -139,8 +164,11 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -139,8 +164,11 @@ USER( strt r3, [r0], #4) @ May fault
mov r6, r6, pull #8 mov r6, r6, pull #8
orr r6, r6, r7, push #24 orr r6, r6, r7, push #24
stmia r0!, {r3 - r6} @ Shouldnt fault stmia r0!, {r3 - r6} @ Shouldnt fault
subs ip, ip, #16
bpl .c2u_1cpy8lp bpl .c2u_1cpy8lp
PLD( cmn ip, #32 )
PLD( bge .c2u_1cpynopld )
PLD( add ip, ip, #32 )
.c2u_1rem8lp: tst ip, #8 .c2u_1rem8lp: tst ip, #8
movne r3, r7, pull #8 movne r3, r7, pull #8
ldmneia r1!, {r4, r7} ldmneia r1!, {r4, r7}
...@@ -182,9 +210,19 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -182,9 +210,19 @@ USER( strt r3, [r0], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #16 subs ip, ip, #16
blt .c2u_2rem8lp blt .c2u_2rem8lp
PLD( pld [r1, #12] )
PLD( pld [r0, #12] )
PLD( subs ip, ip, #32 )
PLD( blt .c2u_2cpynopld )
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
.c2u_2cpy8lp: mov r3, r7, pull #16 .c2u_2cpy8lp:
PLD( pld [r1, #44] )
PLD( pld [r0, #44] )
.c2u_2cpynopld: mov r3, r7, pull #16
ldmia r1!, {r4 - r7} ldmia r1!, {r4 - r7}
subs ip, ip, #16
orr r3, r3, r4, push #16 orr r3, r3, r4, push #16
mov r4, r4, pull #16 mov r4, r4, pull #16
orr r4, r4, r5, push #16 orr r4, r4, r5, push #16
...@@ -193,8 +231,11 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -193,8 +231,11 @@ USER( strt r3, [r0], #4) @ May fault
mov r6, r6, pull #16 mov r6, r6, pull #16
orr r6, r6, r7, push #16 orr r6, r6, r7, push #16
stmia r0!, {r3 - r6} @ Shouldnt fault stmia r0!, {r3 - r6} @ Shouldnt fault
subs ip, ip, #16
bpl .c2u_2cpy8lp bpl .c2u_2cpy8lp
PLD( cmn ip, #32 )
PLD( bge .c2u_2cpynopld )
PLD( add ip, ip, #32 )
.c2u_2rem8lp: tst ip, #8 .c2u_2rem8lp: tst ip, #8
movne r3, r7, pull #16 movne r3, r7, pull #16
ldmneia r1!, {r4, r7} ldmneia r1!, {r4, r7}
...@@ -236,9 +277,19 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -236,9 +277,19 @@ USER( strt r3, [r0], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #16 subs ip, ip, #16
blt .c2u_3rem8lp blt .c2u_3rem8lp
PLD( pld [r1, #12] )
PLD( pld [r0, #12] )
PLD( subs ip, ip, #32 )
PLD( blt .c2u_3cpynopld )
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
.c2u_3cpy8lp: mov r3, r7, pull #24 .c2u_3cpy8lp:
PLD( pld [r1, #44] )
PLD( pld [r0, #44] )
.c2u_3cpynopld: mov r3, r7, pull #24
ldmia r1!, {r4 - r7} ldmia r1!, {r4 - r7}
subs ip, ip, #16
orr r3, r3, r4, push #8 orr r3, r3, r4, push #8
mov r4, r4, pull #24 mov r4, r4, pull #24
orr r4, r4, r5, push #8 orr r4, r4, r5, push #8
...@@ -247,8 +298,11 @@ USER( strt r3, [r0], #4) @ May fault ...@@ -247,8 +298,11 @@ USER( strt r3, [r0], #4) @ May fault
mov r6, r6, pull #24 mov r6, r6, pull #24
orr r6, r6, r7, push #8 orr r6, r6, r7, push #8
stmia r0!, {r3 - r6} @ Shouldnt fault stmia r0!, {r3 - r6} @ Shouldnt fault
subs ip, ip, #16
bpl .c2u_3cpy8lp bpl .c2u_3cpy8lp
PLD( cmn ip, #32 )
PLD( bge .c2u_3cpynopld )
PLD( add ip, ip, #32 )
.c2u_3rem8lp: tst ip, #8 .c2u_3rem8lp: tst ip, #8
movne r3, r7, pull #24 movne r3, r7, pull #24
ldmneia r1!, {r4, r7} ldmneia r1!, {r4, r7}
...@@ -302,6 +356,8 @@ ENTRY(__arch_copy_from_user) ...@@ -302,6 +356,8 @@ ENTRY(__arch_copy_from_user)
stmfd sp!, {r0, r2, r4 - r7, lr} stmfd sp!, {r0, r2, r4 - r7, lr}
cmp r2, #4 cmp r2, #4
blt .cfu_not_enough blt .cfu_not_enough
PLD( pld [r1, #0] )
PLD( pld [r0, #0] )
ands ip, r0, #3 ands ip, r0, #3
bne .cfu_dest_not_aligned bne .cfu_dest_not_aligned
.cfu_dest_aligned: .cfu_dest_aligned:
...@@ -329,13 +385,26 @@ USER( ldrt r3, [r1], #4) ...@@ -329,13 +385,26 @@ USER( ldrt r3, [r1], #4)
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #32 subs ip, ip, #32
blt .cfu_0rem8lp blt .cfu_0rem8lp
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
PLD( subs ip, ip, #64 )
PLD( blt .cfu_0cpynopld )
PLD( pld [r1, #60] )
PLD( pld [r0, #60] )
.cfu_0cpy8lp: ldmia r1!, {r3 - r6} @ Shouldnt fault .cfu_0cpy8lp:
PLD( pld [r1, #92] )
PLD( pld [r0, #92] )
.cfu_0cpynopld: ldmia r1!, {r3 - r6} @ Shouldnt fault
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
ldmia r1!, {r3 - r6} @ Shouldnt fault ldmia r1!, {r3 - r6} @ Shouldnt fault
stmia r0!, {r3 - r6}
subs ip, ip, #32 subs ip, ip, #32
stmia r0!, {r3 - r6}
bpl .cfu_0cpy8lp bpl .cfu_0cpy8lp
PLD( cmn ip, #64 )
PLD( bge .cfu_0cpynopld )
PLD( add ip, ip, #64 )
.cfu_0rem8lp: cmn ip, #16 .cfu_0rem8lp: cmn ip, #16
ldmgeia r1!, {r3 - r6} @ Shouldnt fault ldmgeia r1!, {r3 - r6} @ Shouldnt fault
stmgeia r0!, {r3 - r6} stmgeia r0!, {r3 - r6}
...@@ -387,9 +456,19 @@ USER( ldrt r7, [r1], #4) @ May fault ...@@ -387,9 +456,19 @@ USER( ldrt r7, [r1], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #16 subs ip, ip, #16
blt .cfu_1rem8lp blt .cfu_1rem8lp
PLD( pld [r1, #12] )
PLD( pld [r0, #12] )
PLD( subs ip, ip, #32 )
PLD( blt .cfu_1cpynopld )
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
.cfu_1cpy8lp: mov r3, r7, pull #8 .cfu_1cpy8lp:
PLD( pld [r1, #44] )
PLD( pld [r0, #44] )
.cfu_1cpynopld: mov r3, r7, pull #8
ldmia r1!, {r4 - r7} @ Shouldnt fault ldmia r1!, {r4 - r7} @ Shouldnt fault
subs ip, ip, #16
orr r3, r3, r4, push #24 orr r3, r3, r4, push #24
mov r4, r4, pull #8 mov r4, r4, pull #8
orr r4, r4, r5, push #24 orr r4, r4, r5, push #24
...@@ -398,8 +477,11 @@ USER( ldrt r7, [r1], #4) @ May fault ...@@ -398,8 +477,11 @@ USER( ldrt r7, [r1], #4) @ May fault
mov r6, r6, pull #8 mov r6, r6, pull #8
orr r6, r6, r7, push #24 orr r6, r6, r7, push #24
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
subs ip, ip, #16
bpl .cfu_1cpy8lp bpl .cfu_1cpy8lp
PLD( cmn ip, #32 )
PLD( bge .cfu_1cpynopld )
PLD( add ip, ip, #32 )
.cfu_1rem8lp: tst ip, #8 .cfu_1rem8lp: tst ip, #8
movne r3, r7, pull #8 movne r3, r7, pull #8
ldmneia r1!, {r4, r7} @ Shouldnt fault ldmneia r1!, {r4, r7} @ Shouldnt fault
...@@ -441,9 +523,19 @@ USER( ldrt r7, [r1], #4) @ May fault ...@@ -441,9 +523,19 @@ USER( ldrt r7, [r1], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #16 subs ip, ip, #16
blt .cfu_2rem8lp blt .cfu_2rem8lp
PLD( pld [r1, #12] )
PLD( pld [r0, #12] )
PLD( subs ip, ip, #32 )
PLD( blt .cfu_2cpynopld )
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
.cfu_2cpy8lp: mov r3, r7, pull #16 .cfu_2cpy8lp:
PLD( pld [r1, #44] )
PLD( pld [r0, #44] )
.cfu_2cpynopld: mov r3, r7, pull #16
ldmia r1!, {r4 - r7} @ Shouldnt fault ldmia r1!, {r4 - r7} @ Shouldnt fault
subs ip, ip, #16
orr r3, r3, r4, push #16 orr r3, r3, r4, push #16
mov r4, r4, pull #16 mov r4, r4, pull #16
orr r4, r4, r5, push #16 orr r4, r4, r5, push #16
...@@ -452,8 +544,11 @@ USER( ldrt r7, [r1], #4) @ May fault ...@@ -452,8 +544,11 @@ USER( ldrt r7, [r1], #4) @ May fault
mov r6, r6, pull #16 mov r6, r6, pull #16
orr r6, r6, r7, push #16 orr r6, r6, r7, push #16
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
subs ip, ip, #16
bpl .cfu_2cpy8lp bpl .cfu_2cpy8lp
PLD( cmn ip, #32 )
PLD( bge .cfu_2cpynopld )
PLD( add ip, ip, #32 )
.cfu_2rem8lp: tst ip, #8 .cfu_2rem8lp: tst ip, #8
movne r3, r7, pull #16 movne r3, r7, pull #16
ldmneia r1!, {r4, r7} @ Shouldnt fault ldmneia r1!, {r4, r7} @ Shouldnt fault
...@@ -495,8 +590,17 @@ USER( ldrt r7, [r1], #4) @ May fault ...@@ -495,8 +590,17 @@ USER( ldrt r7, [r1], #4) @ May fault
sub r2, r2, ip sub r2, r2, ip
subs ip, ip, #16 subs ip, ip, #16
blt .cfu_3rem8lp blt .cfu_3rem8lp
PLD( pld [r1, #12] )
PLD( pld [r0, #12] )
PLD( subs ip, ip, #32 )
PLD( blt .cfu_3cpynopld )
PLD( pld [r1, #28] )
PLD( pld [r0, #28] )
.cfu_3cpy8lp: mov r3, r7, pull #24 .cfu_3cpy8lp:
PLD( pld [r1, #44] )
PLD( pld [r0, #44] )
.cfu_3cpynopld: mov r3, r7, pull #24
ldmia r1!, {r4 - r7} @ Shouldnt fault ldmia r1!, {r4 - r7} @ Shouldnt fault
orr r3, r3, r4, push #8 orr r3, r3, r4, push #8
mov r4, r4, pull #24 mov r4, r4, pull #24
...@@ -508,6 +612,10 @@ USER( ldrt r7, [r1], #4) @ May fault ...@@ -508,6 +612,10 @@ USER( ldrt r7, [r1], #4) @ May fault
stmia r0!, {r3 - r6} stmia r0!, {r3 - r6}
subs ip, ip, #16 subs ip, ip, #16
bpl .cfu_3cpy8lp bpl .cfu_3cpy8lp
PLD( cmn ip, #32 )
PLD( bge .cfu_3cpynopld )
PLD( add ip, ip, #32 )
.cfu_3rem8lp: tst ip, #8 .cfu_3rem8lp: tst ip, #8
movne r3, r7, pull #24 movne r3, r7, pull #24
ldmneia r1!, {r4, r7} @ Shouldnt fault ldmneia r1!, {r4, r7} @ Shouldnt fault
......
/* /*
* linux/arch/arm/mach-iop310/arch.c * linux/arch/arm/mach-iop3xx/arch.c
* *
* Author: Nicolas Pitre <nico@cam.org> * Author: Nicolas Pitre <nico@cam.org>
* Copyright (C) 2001 MontaVista Software, Inc. * Copyright (C) 2001 MontaVista Software, Inc.
......
/* /*
* linux/arch/arm/mach-iop310/iop310-irq.c * linux/arch/arm/mach-iop3xx/iop310-irq.c
* *
* Generic IOP310 IRQ handling functionality * Generic IOP310 IRQ handling functionality
* *
......
/* /*
* arch/arm/mach-iop310/iop310-pci.c * arch/arm/mach-iop3xx/iop310-pci.c
* *
* PCI support for the Intel IOP310 chipset * PCI support for the Intel IOP310 chipset
* *
......
/* /*
* linux/arch/arm/mach-iop310/iq80310-irq.c * linux/arch/arm/mach-iop3xx/iq80310-irq.c
* *
* IRQ hadling/demuxing for IQ80310 board * IRQ hadling/demuxing for IQ80310 board
* *
......
/* /*
* arch/arm/mach-iop310/iq80310-pci.c * arch/arm/mach-iop3xx/iq80310-pci.c
* *
* PCI support for the Intel IQ80310 reference board * PCI support for the Intel IQ80310 reference board
* *
......
/* /*
* linux/arch/arm/mach-iop310/time-iq80310.c * linux/arch/arm/mach-iop3xx/time-iq80310.c
* *
* Timer functions for IQ80310 onboard timer * Timer functions for IQ80310 onboard timer
* *
......
/* /*
* linux/arch/arm/mach-iop310/mm.c * linux/arch/arm/mach-iop3xx/mm.c
* *
* Low level memory initialization for IOP310 based systems * Low level memory initialization for IOP310 based systems
* *
......
/* /*
* linux/arch/arm/mach-iop310/xs80200-irq.c * linux/arch/arm/mach-iop3xx/xs80200-irq.c
* *
* Generic IRQ handling for the XS80200 XScale core. * Generic IRQ handling for the XS80200 XScale core.
* *
......
...@@ -186,11 +186,26 @@ static struct map_desc badge4_io_desc[] __initdata = { ...@@ -186,11 +186,26 @@ static struct map_desc badge4_io_desc[] __initdata = {
{0xf4000000, 0x48000000, 0x00100000, MT_DEVICE } /* SA-1111 */ {0xf4000000, 0x48000000, 0x00100000, MT_DEVICE } /* SA-1111 */
}; };
static void
badge4_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
{
if (!state) {
Ser1SDCR0 |= SDCR0_UART;
}
}
static struct sa1100_port_fns badge4_port_fns __initdata = {
//.get_mctrl = badge4_get_mctrl,
//.set_mctrl = badge4_set_mctrl,
.pm = badge4_uart_pm,
};
static void __init badge4_map_io(void) static void __init badge4_map_io(void)
{ {
sa1100_map_io(); sa1100_map_io();
iotable_init(badge4_io_desc, ARRAY_SIZE(badge4_io_desc)); iotable_init(badge4_io_desc, ARRAY_SIZE(badge4_io_desc));
sa1100_register_uart_fns(&badge4_port_fns);
sa1100_register_uart(0, 3); sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1); sa1100_register_uart(1, 1);
} }
......
...@@ -39,11 +39,25 @@ ENTRY(xscale_mc_copy_user_page) ...@@ -39,11 +39,25 @@ ENTRY(xscale_mc_copy_user_page)
mov r0, r1 mov r0, r1
bl map_page_minicache bl map_page_minicache
mov r1, r5 mov r1, r5
mov lr, #PAGE_SZ/32 mov lr, #PAGE_SZ/64-1
1: mov ip, r1 /*
ldrd r2, [r0], #8 * Strangely enough, best performance is achieved
* when prefetching destination as well. (NP)
*/
pld [r0, #0]
pld [r0, #32]
pld [r1, #0]
pld [r1, #32]
1: pld [r0, #64]
pld [r0, #96]
pld [r1, #64]
pld [r1, #96]
2: ldrd r2, [r0], #8
ldrd r4, [r0], #8 ldrd r4, [r0], #8
mov ip, r1
strd r2, [r1], #8 strd r2, [r1], #8
ldrd r2, [r0], #8 ldrd r2, [r0], #8
strd r4, [r1], #8 strd r4, [r1], #8
...@@ -51,9 +65,21 @@ ENTRY(xscale_mc_copy_user_page) ...@@ -51,9 +65,21 @@ ENTRY(xscale_mc_copy_user_page)
strd r2, [r1], #8 strd r2, [r1], #8
strd r4, [r1], #8 strd r4, [r1], #8
mcr p15, 0, ip, c7, c10, 1 @ clean D line mcr p15, 0, ip, c7, c10, 1 @ clean D line
ldrd r2, [r0], #8
mcr p15, 0, ip, c7, c6, 1 @ invalidate D line mcr p15, 0, ip, c7, c6, 1 @ invalidate D line
ldrd r4, [r0], #8
mov ip, r1
strd r2, [r1], #8
ldrd r2, [r0], #8
strd r4, [r1], #8
ldrd r4, [r0], #8
strd r2, [r1], #8
strd r4, [r1], #8
mcr p15, 0, ip, c7, c10, 1 @ clean D line
subs lr, lr, #1 subs lr, lr, #1
bne 1b mcr p15, 0, ip, c7, c6, 1 @ invalidate D line
bgt 1b
beq 2b
ldmfd sp!, {r4, r5, pc} ldmfd sp!, {r4, r5, pc}
...@@ -64,7 +90,6 @@ ENTRY(xscale_mc_copy_user_page) ...@@ -64,7 +90,6 @@ ENTRY(xscale_mc_copy_user_page)
* r1 = virtual user address of ultimate destination page * r1 = virtual user address of ultimate destination page
*/ */
ENTRY(xscale_mc_clear_user_page) ENTRY(xscale_mc_clear_user_page)
str lr, [sp, #-4]!
mov r1, #PAGE_SZ/32 mov r1, #PAGE_SZ/32
mov r2, #0 mov r2, #0
mov r3, #0 mov r3, #0
...@@ -74,10 +99,10 @@ ENTRY(xscale_mc_clear_user_page) ...@@ -74,10 +99,10 @@ ENTRY(xscale_mc_clear_user_page)
strd r2, [r0], #8 strd r2, [r0], #8
strd r2, [r0], #8 strd r2, [r0], #8
mcr p15, 0, ip, c7, c10, 1 @ clean D line mcr p15, 0, ip, c7, c10, 1 @ clean D line
mcr p15, 0, ip, c7, c6, 1 @ invalidate D line
subs r1, r1, #1 subs r1, r1, #1
mcr p15, 0, ip, c7, c6, 1 @ invalidate D line
bne 1b bne 1b
ldr pc, [sp], #4 mov pc, lr
__INIT __INIT
......
/* /*
* linux/arch/arm/mm/extable.c * linux/arch/arm/mm/extable.c
*/ */
#include <linux/config.h> #include <linux/module.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
const struct exception_table_entry * const struct exception_table_entry *
...@@ -24,3 +24,14 @@ search_extable(const struct exception_table_entry *first, ...@@ -24,3 +24,14 @@ search_extable(const struct exception_table_entry *first,
} }
return NULL; return NULL;
} }
int fixup_exception(struct pt_regs *regs)
{
const struct exception_table_entry *fixup;
fixup = search_exception_tables(instruction_pointer(regs));
if (fixup)
regs->ARM_pc = fixup->fixup;
return fixup != NULL;
}
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/uaccess.h>
#include "fault.h" #include "fault.h"
...@@ -103,20 +104,11 @@ static void ...@@ -103,20 +104,11 @@ static void
__do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr, __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
struct pt_regs *regs) struct pt_regs *regs)
{ {
const struct exception_table_entry *fixup;
/* /*
* Are we prepared to handle this kernel fault? * Are we prepared to handle this kernel fault?
*/ */
fixup = search_exception_tables(instruction_pointer(regs)); if (fixup_exception(regs))
if (fixup) {
#ifdef DEBUG
printk(KERN_DEBUG "%s: Exception at [<%lx>] addr=%lx (fixup: %lx)\n",
current->comm, regs->ARM_pc, addr, fixup->fixup);
#endif
regs->ARM_pc = fixup->fixup;
return; return;
}
/* /*
* No handler, we'll have to terminate things with extreme prejudice. * No handler, we'll have to terminate things with extreme prejudice.
......
...@@ -17,21 +17,15 @@ ...@@ -17,21 +17,15 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27/03/03 Ian Molton Clean up CONFIG_CPU
*/ */
#ifndef __FPMODULE_H__ #ifndef __FPMODULE_H__
#define __FPMODULE_H__ #define __FPMODULE_H__
#include <linux/config.h>
#ifdef CONFIG_CPU_32
#define REG_ORIG_R0 17 #define REG_ORIG_R0 17
#define REG_CPSR 16 #define REG_CPSR 16
#else
#define REG_ORIG_R0 16
#define REG_CPSR 15
#endif
#define REG_PC 15 #define REG_PC 15
#define REG_LR 14 #define REG_LR 14
#define REG_SP 13 #define REG_SP 13
......
...@@ -174,9 +174,15 @@ static struct mtd_partition assabet5_partitions[] = { ...@@ -174,9 +174,15 @@ static struct mtd_partition assabet5_partitions[] = {
#ifdef CONFIG_SA1100_BADGE4 #ifdef CONFIG_SA1100_BADGE4
/* /*
* 1 x Intel 28F320C3BA100 Advanced+ Boot Block Flash (32 Mi bit) * 1 x Intel 28F320C3 Advanced+ Boot Block Flash (32 Mi bit)
* Eight 4 KiW Parameter Bottom Blocks (64 KiB) * Eight 4 KiW Parameter Bottom Blocks (64 KiB)
* Sixty-three 32 KiW Main Blocks (4032 Ki b) * Sixty-three 32 KiW Main Blocks (4032 Ki b)
*
* <or>
*
* 1 x Intel 28F640C3 Advanced+ Boot Block Flash (64 Mi bit)
* Eight 4 KiW Parameter Bottom Blocks (64 KiB)
* One-hundred-twenty-seven 32 KiW Main Blocks (8128 Ki b)
*/ */
static struct mtd_partition badge4_partitions[] = { static struct mtd_partition badge4_partitions[] = {
{ {
...@@ -187,10 +193,6 @@ static struct mtd_partition badge4_partitions[] = { ...@@ -187,10 +193,6 @@ static struct mtd_partition badge4_partitions[] = {
.name = "params", .name = "params",
.offset = MTDPART_OFS_APPEND, .offset = MTDPART_OFS_APPEND,
.size = 0x00006000 .size = 0x00006000
}, {
.name = "kernel",
.offset = MTDPART_OFS_APPEND,
.size = 0x00100000
}, { }, {
.name = "root", .name = "root",
.offset = MTDPART_OFS_APPEND, .offset = MTDPART_OFS_APPEND,
...@@ -1087,8 +1089,10 @@ static void __exit sa1100_destroy_mtd(struct sa_info *sa, struct mtd_info *mtd) ...@@ -1087,8 +1089,10 @@ static void __exit sa1100_destroy_mtd(struct sa_info *sa, struct mtd_info *mtd)
del_mtd_partitions(mtd); del_mtd_partitions(mtd);
#ifdef CONFIG_MTD_CONCAT
if (mtd != sa[0].mtd) if (mtd != sa[0].mtd)
mtd_concat_destroy(mtd); mtd_concat_destroy(mtd);
#endif
for (i = NR_SUBMTD; i >= 0; i--) { for (i = NR_SUBMTD; i >= 0; i--) {
if (sa[i].mtd) if (sa[i].mtd)
...@@ -1119,7 +1123,7 @@ static int __init sa1100_locate_flash(void) ...@@ -1119,7 +1123,7 @@ static int __init sa1100_locate_flash(void)
} }
if (machine_is_badge4()) { if (machine_is_badge4()) {
info[0].base = SA1100_CS0_PHYS; info[0].base = SA1100_CS0_PHYS;
info[0].size = SZ_4M; info[0].size = SZ_64M;
nr = 1; nr = 1;
} }
if (machine_is_cerf()) { if (machine_is_cerf()) {
......
...@@ -7,6 +7,7 @@ extern int sa1111_pcmcia_configure_socket(struct sa1100_pcmcia_socket *, const s ...@@ -7,6 +7,7 @@ extern int sa1111_pcmcia_configure_socket(struct sa1100_pcmcia_socket *, const s
extern void sa1111_pcmcia_socket_init(struct sa1100_pcmcia_socket *); extern void sa1111_pcmcia_socket_init(struct sa1100_pcmcia_socket *);
extern void sa1111_pcmcia_socket_suspend(struct sa1100_pcmcia_socket *); extern void sa1111_pcmcia_socket_suspend(struct sa1100_pcmcia_socket *);
extern int pcmcia_badge4_init(struct device *);
extern int pcmcia_jornada720_init(struct device *); extern int pcmcia_jornada720_init(struct device *);
extern int pcmcia_neponset_init(struct device *); extern int pcmcia_neponset_init(struct device *);
...@@ -342,7 +342,7 @@ static void __init clps711x_guess_lcd_params(struct fb_info *info) ...@@ -342,7 +342,7 @@ static void __init clps711x_guess_lcd_params(struct fb_info *info)
* CLPS7110 - no on-board SRAM * CLPS7110 - no on-board SRAM
* EP7212 - 38400 bytes * EP7212 - 38400 bytes
*/ */
if (size < 38400) { if (size <= 38400) {
printk(KERN_INFO "CLPS711xFB: could use on-board SRAM?\n"); printk(KERN_INFO "CLPS711xFB: could use on-board SRAM?\n");
} }
......
/* /*
* include/asm-arm/arch-iop310/ide.h * include/asm-arm/arch-iop3xx/ide.h
* *
* Generic IDE functions for IOP310 systems * Generic IDE functions for IOP310 systems
* *
......
/* /*
* linux/include/asm-arm/arch-iop310/io.h * linux/include/asm-arm/arch-iop3xx/io.h
* *
* Copyright (C) 2001 MontaVista Software, Inc. * Copyright (C) 2001 MontaVista Software, Inc.
* *
......
/* /*
* linux/include/asm/arch-iop310/iop310.h * linux/include/asm/arch-iop3xx/iop310.h
* *
* Intel IOP310 Compainion Chip definitions * Intel IOP310 Compainion Chip definitions
* *
......
/* /*
* linux/include/asm-arm/arch-iop310/irqs.h * linux/include/asm-arm/arch-iop3xx/irqs.h
* *
* Author: Nicolas Pitre * Author: Nicolas Pitre
* Copyright: (C) 2001 MontaVista Software Inc. * Copyright: (C) 2001 MontaVista Software Inc.
......
/* /*
* include/asm-arm/arch-iop310/serial.h * include/asm-arm/arch-iop3xx/serial.h
*/ */
#include <linux/config.h> #include <linux/config.h>
......
/* /*
* linux/include/asm-arm/arch-iop310/vmalloc.h * linux/include/asm-arm/arch-iop3xx/vmalloc.h
*/ */
/* /*
......
...@@ -26,3 +26,13 @@ ...@@ -26,3 +26,13 @@
#define push lsr #define push lsr
#define byte(x) ((3-x)*8) #define byte(x) ((3-x)*8)
#endif #endif
/*
* Data preload for architectures that support it
*/
#if __LINUX_ARM_ARCH__ >= 5
#define PLD(code...) code
#else
#define PLD(code...)
#endif
...@@ -553,6 +553,7 @@ struct sa1111_dev { ...@@ -553,6 +553,7 @@ struct sa1111_dev {
void *mapbase; void *mapbase;
unsigned int skpcr_mask; unsigned int skpcr_mask;
unsigned int irq[6]; unsigned int irq[6];
u64 dma_mask;
}; };
#define SA1111_DEV(_d) container_of((_d), struct sa1111_dev, dev) #define SA1111_DEV(_d) container_of((_d), struct sa1111_dev, dev)
......
...@@ -28,8 +28,7 @@ struct exception_table_entry ...@@ -28,8 +28,7 @@ struct exception_table_entry
unsigned long insn, fixup; unsigned long insn, fixup;
}; };
/* Returns 0 if exception not found and fixup otherwise. */ extern int fixup_exception(struct pt_regs *regs);
extern unsigned long search_exception_table(unsigned long);
#define get_ds() (KERNEL_DS) #define get_ds() (KERNEL_DS)
#define get_fs() (current_thread_info()->addr_limit) #define get_fs() (current_thread_info()->addr_limit)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment