Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
fb2de489
Commit
fb2de489
authored
Feb 01, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Manual merge of ARM assembly code clash.
I must be crazy, but it looked obvious enough. Check with rmk.
parents
57cf7297
accf94a1
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
1861 additions
and
375 deletions
+1861
-375
arch/arm/boot/compressed/head-xscale.S
arch/arm/boot/compressed/head-xscale.S
+5
-0
arch/arm/configs/omap_h2_1610_defconfig
arch/arm/configs/omap_h2_1610_defconfig
+935
-0
arch/arm/kernel/asm-offsets.c
arch/arm/kernel/asm-offsets.c
+1
-0
arch/arm/kernel/calls.S
arch/arm/kernel/calls.S
+1
-1
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-armv.S
+400
-278
arch/arm/kernel/entry-common.S
arch/arm/kernel/entry-common.S
+4
-3
arch/arm/kernel/entry-header.S
arch/arm/kernel/entry-header.S
+0
-7
arch/arm/kernel/process.c
arch/arm/kernel/process.c
+3
-0
arch/arm/kernel/ptrace.c
arch/arm/kernel/ptrace.c
+5
-0
arch/arm/kernel/sys_arm.c
arch/arm/kernel/sys_arm.c
+4
-8
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+12
-0
arch/arm/mach-iop3xx/iop321-pci.c
arch/arm/mach-iop3xx/iop321-pci.c
+15
-14
arch/arm/mach-iop3xx/iq31244-pci.c
arch/arm/mach-iop3xx/iq31244-pci.c
+4
-7
arch/arm/mach-iop3xx/iq80321-pci.c
arch/arm/mach-iop3xx/iq80321-pci.c
+4
-7
arch/arm/mach-iop3xx/iq80331-pci.c
arch/arm/mach-iop3xx/iq80331-pci.c
+4
-7
arch/arm/mach-iop3xx/iq80332-pci.c
arch/arm/mach-iop3xx/iq80332-pci.c
+4
-7
arch/arm/mach-ixp4xx/Kconfig
arch/arm/mach-ixp4xx/Kconfig
+18
-0
arch/arm/mach-ixp4xx/Makefile
arch/arm/mach-ixp4xx/Makefile
+1
-0
arch/arm/mach-ixp4xx/gtwx5715-pci.c
arch/arm/mach-ixp4xx/gtwx5715-pci.c
+101
-0
arch/arm/mach-ixp4xx/gtwx5715-setup.c
arch/arm/mach-ixp4xx/gtwx5715-setup.c
+153
-0
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/corgi.c
+17
-6
include/asm-arm/arch-iop3xx/iop321.h
include/asm-arm/arch-iop3xx/iop321.h
+4
-5
include/asm-arm/arch-iop3xx/iop331.h
include/asm-arm/arch-iop3xx/iop331.h
+5
-5
include/asm-arm/arch-ixp4xx/gtwx5715.h
include/asm-arm/arch-ixp4xx/gtwx5715.h
+120
-0
include/asm-arm/arch-ixp4xx/uncompress.h
include/asm-arm/arch-ixp4xx/uncompress.h
+2
-2
include/asm-arm/arch-pxa/corgi.h
include/asm-arm/arch-pxa/corgi.h
+30
-15
include/asm-arm/arch-pxa/pxa-regs.h
include/asm-arm/arch-pxa/pxa-regs.h
+1
-1
include/asm-arm/elf.h
include/asm-arm/elf.h
+3
-1
include/asm-arm/ptrace.h
include/asm-arm/ptrace.h
+1
-0
include/asm-arm/thread_info.h
include/asm-arm/thread_info.h
+1
-0
include/asm-arm/unistd.h
include/asm-arm/unistd.h
+3
-1
No files found.
arch/arm/boot/compressed/head-xscale.S
View file @
fb2de489
...
@@ -42,3 +42,8 @@ __XScale_start:
...
@@ -42,3 +42,8 @@ __XScale_start:
mov
r7
,
#
MACH_TYPE_COTULLA_IDP
mov
r7
,
#
MACH_TYPE_COTULLA_IDP
#endif
#endif
#ifdef CONFIG_MACH_GTWX5715
mov
r7
,
#(
MACH_TYPE_GTWX5715
&
0xff
)
orr
r7
,
r7
,
#(
MACH_TYPE_GTWX5715
&
0xff00
)
#endif
arch/arm/configs/omap_h2_1610_defconfig
0 → 100644
View file @
fb2de489
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.11-rc2
# Tue Feb 1 14:01:46 2005
#
CONFIG_ARM=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_IOMAP=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_HOTPLUG is not set
CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_KMOD is not set
#
# System Type
#
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP3XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
CONFIG_ARCH_OMAP=y
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_H720X is not set
#
# TI OMAP Implementations
#
#
# OMAP Core Type
#
# CONFIG_ARCH_OMAP730 is not set
# CONFIG_ARCH_OMAP1510 is not set
CONFIG_ARCH_OMAP16XX=y
CONFIG_ARCH_OMAP_OTG=y
#
# OMAP Board Type
#
# CONFIG_MACH_OMAP_INNOVATOR is not set
CONFIG_MACH_OMAP_H2=y
# CONFIG_MACH_OMAP_H3 is not set
# CONFIG_MACH_OMAP_H4 is not set
# CONFIG_MACH_OMAP_OSK is not set
# CONFIG_MACH_OMAP_GENERIC is not set
#
# OMAP Feature Selections
#
CONFIG_OMAP_MUX=y
# CONFIG_OMAP_MUX_DEBUG is not set
CONFIG_OMAP_MUX_WARNINGS=y
CONFIG_OMAP_LL_DEBUG_UART1=y
# CONFIG_OMAP_LL_DEBUG_UART2 is not set
# CONFIG_OMAP_LL_DEBUG_UART3 is not set
CONFIG_OMAP_ARM_192MHZ=y
# CONFIG_OMAP_ARM_168MHZ is not set
# CONFIG_OMAP_ARM_120MHZ is not set
# CONFIG_OMAP_ARM_60MHZ is not set
# CONFIG_OMAP_ARM_30MHZ is not set
#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM926T=y
CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5TJ=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
#
# General setup
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
# CONFIG_XIP_KERNEL is not set
#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set
#
# PC-card bridges
#
#
# At least one math emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
# CONFIG_VFP is not set
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
# CONFIG_BINFMT_MISC is not set
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
CONFIG_DEBUG_DRIVER=y
CONFIG_PM=y
CONFIG_PREEMPT=y
# CONFIG_APM is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
# CONFIG_LEDS is not set
CONFIG_ALIGNMENT_TRAP=y
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
CONFIG_MTD_DEBUG=y
CONFIG_MTD_DEBUG_VERBOSE=3
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_CONCAT is not set
# CONFIG_MTD_REDBOOT_PARTS is not set
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_AFS_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_XIP is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_EDB7312 is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
#
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
#
# Plug and Play support
#
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CDROM_PKTCDVD is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_ATA_OVER_ETH=m
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
#
# Networking support
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
CONFIG_IP_TCPDIAG=y
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_SMC91X=y
#
# Ethernet (1000 Mbit)
#
#
# Ethernet (10000 Mbit)
#
#
# Token Ring devices
#
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
CONFIG_PPP=y
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPPOE is not set
CONFIG_SLIP=y
CONFIG_SLIP_COMPRESSED=y
# CONFIG_SLIP_SMART is not set
# CONFIG_SLIP_MODE_SLIP6 is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
# SCSI device support
#
CONFIG_SCSI=y
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
# CONFIG_BLK_DEV_SD is not set
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
#
# SCSI Transport Attributes
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
#
# SCSI low-level drivers
#
# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DEBUG is not set
#
# Fusion MPT device support
#
#
# IEEE 1394 (FireWire) support
#
#
# I2O device support
#
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Input device support
#
CONFIG_INPUT=y
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_EVBUG=y
#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_RAW is not set
#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=y
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y
#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#
# CONFIG_I2C_ALGOBIT is not set
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
#
# CONFIG_I2C_ISA is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_PCA_ISA is not set
#
# Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_FSCHER is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
# CONFIG_SENSORS_LM80 is not set
# CONFIG_SENSORS_LM83 is not set
# CONFIG_SENSORS_LM85 is not set
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
CONFIG_ISP1301_OMAP=y
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# File systems
#
CONFIG_EXT2_FS=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=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS 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=y
CONFIG_MSDOS_FS=y
# CONFIG_VFAT_FS is not set
CONFIG_FAT_DEFAULT_CODEPAGE=437
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVPTS_FS_XATTR is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=2
# CONFIG_JFFS2_FS_NAND is not set
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
# CONFIG_EXPORTFS is not set
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
#
# Profiling support
#
# CONFIG_PROFILING is not set
#
# Graphics support
#
CONFIG_FB=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FONTS=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
# CONFIG_FONT_MINI_4x6 is not set
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
#
# Logo configuration
#
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Sound
#
CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
# CONFIG_SND is not set
#
# Open Sound System
#
CONFIG_SOUND_PRIME=y
# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_CS4281 is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_SOUND_TVMIXER is not set
# CONFIG_SOUND_AD1980 is not set
#
# Misc devices
#
#
# USB support
#
# CONFIG_USB is not set
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
#
#
# USB Gadget Support
#
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_SA1100 is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
CONFIG_USB_GADGET_OMAP=y
CONFIG_USB_OMAP=y
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
#
# MMC/SD Card support
#
# CONFIG_MMC is not set
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_WAITQ is not set
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
# Cryptographic options
#
CONFIG_CRYPTO=y
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
# CONFIG_CRYPTO_SHA1 is not set
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_TEST is not set
#
# Hardware crypto devices
#
#
# Library routines
#
# CONFIG_CRC_CCITT is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
arch/arm/kernel/asm-offsets.c
View file @
fb2de489
...
@@ -59,6 +59,7 @@ int main(void)
...
@@ -59,6 +59,7 @@ int main(void)
DEFINE
(
TI_CPU_DOMAIN
,
offsetof
(
struct
thread_info
,
cpu_domain
));
DEFINE
(
TI_CPU_DOMAIN
,
offsetof
(
struct
thread_info
,
cpu_domain
));
DEFINE
(
TI_CPU_SAVE
,
offsetof
(
struct
thread_info
,
cpu_context
));
DEFINE
(
TI_CPU_SAVE
,
offsetof
(
struct
thread_info
,
cpu_context
));
DEFINE
(
TI_USED_CP
,
offsetof
(
struct
thread_info
,
used_cp
));
DEFINE
(
TI_USED_CP
,
offsetof
(
struct
thread_info
,
used_cp
));
DEFINE
(
TI_TP_VALUE
,
offsetof
(
struct
thread_info
,
tp_value
));
DEFINE
(
TI_FPSTATE
,
offsetof
(
struct
thread_info
,
fpstate
));
DEFINE
(
TI_FPSTATE
,
offsetof
(
struct
thread_info
,
fpstate
));
DEFINE
(
TI_VFPSTATE
,
offsetof
(
struct
thread_info
,
vfpstate
));
DEFINE
(
TI_VFPSTATE
,
offsetof
(
struct
thread_info
,
vfpstate
));
DEFINE
(
TI_IWMMXT_STATE
,
(
offsetof
(
struct
thread_info
,
fpstate
)
+
4
)
&~
7
);
DEFINE
(
TI_IWMMXT_STATE
,
(
offsetof
(
struct
thread_info
,
fpstate
)
+
4
)
&~
7
);
...
...
arch/arm/kernel/calls.S
View file @
fb2de489
...
@@ -270,7 +270,7 @@ __syscall_start:
...
@@ -270,7 +270,7 @@ __syscall_start:
.
long
sys_remap_file_pages
.
long
sys_remap_file_pages
.
long
sys_ni_syscall
/*
sys_set_thread_area
*/
.
long
sys_ni_syscall
/*
sys_set_thread_area
*/
/*
255
*/
.
long
sys_ni_syscall
/*
sys_get_thread_area
*/
/*
255
*/
.
long
sys_ni_syscall
/*
sys_get_thread_area
*/
.
long
sys_
ni_syscall
/*
sys_set_tid_address
*/
.
long
sys_
set_tid_address
.
long
sys_timer_create
.
long
sys_timer_create
.
long
sys_timer_settime
.
long
sys_timer_settime
.
long
sys_timer_gettime
.
long
sys_timer_gettime
...
...
arch/arm/kernel/entry-armv.S
View file @
fb2de489
...
@@ -34,27 +34,27 @@
...
@@ -34,27 +34,27 @@
.
endm
.
endm
__pabt_invalid
:
__pabt_invalid
:
inv_entry
abt
,
BAD_PREFETCH
inv_entry
abt
,
BAD_PREFETCH
b
1
f
b
1
f
__dabt_invalid
:
__dabt_invalid
:
inv_entry
abt
,
BAD_DATA
inv_entry
abt
,
BAD_DATA
b
1
f
b
1
f
__irq_invalid
:
__irq_invalid
:
inv_entry
irq
,
BAD_IRQ
inv_entry
irq
,
BAD_IRQ
b
1
f
b
1
f
__und_invalid
:
__und_invalid
:
inv_entry
und
,
BAD_UNDEFINSTR
inv_entry
und
,
BAD_UNDEFINSTR
1
:
zero_fp
1
:
zero_fp
ldmia
r4
,
{
r5
-
r7
}
@
Get
XXX
pc
,
cpsr
,
old_r0
ldmia
r4
,
{
r5
-
r7
}
@
Get
XXX
pc
,
cpsr
,
old_r0
add
r4
,
sp
,
#
S_PC
add
r4
,
sp
,
#
S_PC
stmia
r4
,
{
r5
-
r7
}
@
Save
XXX
pc
,
cpsr
,
old_r0
stmia
r4
,
{
r5
-
r7
}
@
Save
XXX
pc
,
cpsr
,
old_r0
mov
r0
,
sp
mov
r0
,
sp
and
r2
,
r6
,
#
31
@
int
mode
and
r2
,
r6
,
#
31
@
int
mode
b
bad_mode
b
bad_mode
/*
/*
*
SVC
mode
handlers
*
SVC
mode
handlers
...
@@ -67,123 +67,196 @@ __und_invalid:
...
@@ -67,123 +67,196 @@ __und_invalid:
ldmia
r2
,
{
r2
-
r4
}
@
get
pc
,
cpsr
ldmia
r2
,
{
r2
-
r4
}
@
get
pc
,
cpsr
add
r5
,
sp
,
#
S_SP
add
r5
,
sp
,
#
S_SP
mov
r1
,
lr
mov
r1
,
lr
stmia
r5
,
{
r0
-
r4
}
@
save
sp_SVC
,
lr_SVC
,
pc
,
cpsr
,
old_ro
@
@
We
are
now
ready
to
fill
in
the
remaining
blanks
on
the
stack
:
@
@
r0
-
sp_svc
@
r1
-
lr_svc
@
r2
-
lr_
<
exception
>,
already
fixed
up
for
correct
return
/
restart
@
r3
-
spsr_
<
exception
>
@
r4
-
orig_r0
(
see
pt_regs
definition
in
ptrace
.
h
)
@
stmia
r5
,
{
r0
-
r4
}
.
endm
.
endm
.
align
5
.
align
5
__dabt_svc
:
__dabt_svc
:
svc_entry
abt
svc_entry
abt
mrs
r9
,
cpsr
@
Enable
interrupts
if
they
were
tst
r3
,
#
PSR_I_BIT
@
biceq
r9
,
r9
,
#
PSR_I_BIT
@
previously
@
get
ready
to
re
-
enable
interrupts
if
appropriate
/*
@
*
This
routine
must
not
corrupt
r9
mrs
r9
,
cpsr
*/
tst
r3
,
#
PSR_I_BIT
biceq
r9
,
r9
,
#
PSR_I_BIT
@
@
Call
the
processor
-
specific
abort
handler
:
@
@
r2
-
aborted
context
pc
@
r3
-
aborted
context
cpsr
@
@
The
abort
handler
must
return
the
aborted
address
in
r0
,
and
@
the
fault
status
register
in
r1
.
r9
must
be
preserved
.
@
#ifdef MULTI_ABORT
#ifdef MULTI_ABORT
ldr
r4
,
.
LCprocfns
@
pass
r2
,
r3
to
ldr
r4
,
.
LCprocfns
mov
lr
,
pc
@
processor
code
mov
lr
,
pc
ldr
pc
,
[
r4
]
@
call
processor
specific
code
ldr
pc
,
[
r4
]
#else
#else
bl
CPU_ABORT_HANDLER
bl
CPU_ABORT_HANDLER
#endif
#endif
msr
cpsr_c
,
r9
mov
r2
,
sp
@
bl
do_DataAbort
@
set
desired
IRQ
state
,
then
call
main
handler
disable_irq
r0
@
ldr
r0
,
[
sp
,
#
S_PSR
]
msr
cpsr_c
,
r9
msr
spsr_cxsf
,
r0
mov
r2
,
sp
ldmia
sp
,
{
r0
-
pc
}^
@
load
r0
-
pc
,
cpsr
bl
do_DataAbort
.
align
5
@
@
IRQs
off
again
before
pulling
preserved
data
off
the
stack
@
disable_irq
r0
@
@
restore
SPSR
and
restart
the
instruction
@
ldr
r0
,
[
sp
,
#
S_PSR
]
msr
spsr_cxsf
,
r0
ldmia
sp
,
{
r0
-
pc
}^
@
load
r0
-
pc
,
cpsr
.
align
5
__irq_svc
:
__irq_svc
:
svc_entry
irq
svc_entry
irq
#ifdef CONFIG_PREEMPT
#ifdef CONFIG_PREEMPT
get_thread_info
r8
get_thread_info
r8
ldr
r9
,
[
r8
,
#
TI_PREEMPT
]
@
get
preempt
count
ldr
r9
,
[
r8
,
#
TI_PREEMPT
]
@
get
preempt
count
add
r7
,
r9
,
#
1
@
increment
it
add
r7
,
r9
,
#
1
@
increment
it
str
r7
,
[
r8
,
#
TI_PREEMPT
]
str
r7
,
[
r8
,
#
TI_PREEMPT
]
#endif
#endif
1
:
get_irqnr_and_base
r0
,
r6
,
r5
,
lr
1
:
get_irqnr_and_base
r0
,
r6
,
r5
,
lr
movne
r1
,
sp
movne
r1
,
sp
@
@
@
routine
called
with
r0
=
irq
number
,
r1
=
struct
pt_regs
*
@
routine
called
with
r0
=
irq
number
,
r1
=
struct
pt_regs
*
@
@
adrsvc
ne
,
lr
,
1
b
adrne
lr
,
1
b
bne
asm_do_IRQ
bne
asm_do_IRQ
#ifdef CONFIG_PREEMPT
#ifdef CONFIG_PREEMPT
ldr
r0
,
[
r8
,
#
TI_FLAGS
]
@
get
flags
ldr
r0
,
[
r8
,
#
TI_FLAGS
]
@
get
flags
tst
r0
,
#
_TIF_NEED_RESCHED
tst
r0
,
#
_TIF_NEED_RESCHED
blne
svc_preempt
blne
svc_preempt
preempt_return
:
preempt_return
:
ldr
r0
,
[
r8
,
#
TI_PREEMPT
]
@
read
preempt
value
ldr
r0
,
[
r8
,
#
TI_PREEMPT
]
@
read
preempt
value
teq
r0
,
r7
teq
r0
,
r7
str
r9
,
[
r8
,
#
TI_PREEMPT
]
@
restore
preempt
count
str
r9
,
[
r8
,
#
TI_PREEMPT
]
@
restore
preempt
count
strne
r0
,
[
r0
,
-
r0
]
@
bug
()
strne
r0
,
[
r0
,
-
r0
]
@
bug
()
#endif
#endif
ldr
r0
,
[
sp
,
#
S_PSR
]
@
irqs
are
already
disabled
ldr
r0
,
[
sp
,
#
S_PSR
]
@
irqs
are
already
disabled
msr
spsr_cxsf
,
r0
msr
spsr_cxsf
,
r0
ldmia
sp
,
{
r0
-
pc
}^
@
load
r0
-
pc
,
cpsr
ldmia
sp
,
{
r0
-
pc
}^
@
load
r0
-
pc
,
cpsr
.
ltorg
.
ltorg
#ifdef CONFIG_PREEMPT
#ifdef CONFIG_PREEMPT
svc_preempt
:
teq
r9
,
#
0
@
was
preempt
count
=
0
svc_preempt
:
ldreq
r6
,
.
LCirq_stat
teq
r9
,
#
0
@
was
preempt
count
=
0
movne
pc
,
lr
@
no
ldreq
r6
,
.
LCirq_stat
ldr
r0
,
[
r6
,
#
4
]
@
local_irq_count
movne
pc
,
lr
@
no
ldr
r1
,
[
r6
,
#
8
]
@
local_bh_count
ldr
r0
,
[
r6
,
#
4
]
@
local_irq_count
adds
r0
,
r0
,
r1
ldr
r1
,
[
r6
,
#
8
]
@
local_bh_count
movne
pc
,
lr
adds
r0
,
r0
,
r1
mov
r7
,
#
0
@
preempt_schedule_irq
movne
pc
,
lr
str
r7
,
[
r8
,
#
TI_PREEMPT
]
@
expects
preempt_count
==
0
mov
r7
,
#
0
@
preempt_schedule_irq
1
:
bl
preempt_schedule_irq
@
irq
en
/
disable
is
done
inside
str
r7
,
[
r8
,
#
TI_PREEMPT
]
@
expects
preempt_count
==
0
ldr
r0
,
[
r8
,
#
TI_FLAGS
]
@
get
new
tasks
TI_FLAGS
1
:
bl
preempt_schedule_irq
@
irq
en
/
disable
is
done
inside
tst
r0
,
#
_TIF_NEED_RESCHED
ldr
r0
,
[
r8
,
#
TI_FLAGS
]
@
get
new
tasks
TI_FLAGS
beq
preempt_return
@
go
again
tst
r0
,
#
_TIF_NEED_RESCHED
b
1
b
beq
preempt_return
@
go
again
b
1
b
#endif
#endif
.
align
5
.
align
5
__und_svc
:
__und_svc
:
svc_entry
und
svc_entry
und
@
@
call
emulation
code
,
which
returns
using
r9
if
it
has
emulated
@
the
instruction
,
or
the
more
conventional
lr
if
we
are
to
treat
@
this
as
a
real
undefined
instruction
@
@
r0
-
instruction
@
ldr
r0
,
[
r2
,
#-
4
]
adr
r9
,
1
f
bl
call_fpe
ldr
r0
,
[
r2
,
#-
4
]
@
r0
=
instruction
mov
r0
,
sp
@
struct
pt_regs
*
regs
adrsvc
al
,
r9
,
1
f
@
r9
=
normal
FP
return
bl
do_undefinstr
bl
call_fpe
@
lr
=
undefined
instr
return
mov
r0
,
sp
@
struct
pt_regs
*
regs
@
bl
do_undefinstr
@
IRQs
off
again
before
pulling
preserved
data
off
the
stack
@
1
:
disable_irq
r0
1
:
disable_irq
r0
@
ldr
lr
,
[
sp
,
#
S_PSR
]
@
Get
SVC
cpsr
@
restore
SPSR
and
restart
the
instruction
msr
spsr_cxsf
,
lr
@
ldmia
sp
,
{
r0
-
pc
}^
@
Restore
SVC
registers
ldr
lr
,
[
sp
,
#
S_PSR
]
@
Get
SVC
cpsr
msr
spsr_cxsf
,
lr
ldmia
sp
,
{
r0
-
pc
}^
@
Restore
SVC
registers
.
align
5
.
align
5
__pabt_svc
:
__pabt_svc
:
svc_entry
abt
svc_entry
abt
mrs
r9
,
cpsr
@
Enable
interrupts
if
they
were
tst
r3
,
#
PSR_I_BIT
@
biceq
r9
,
r9
,
#
PSR_I_BIT
@
previously
@
re
-
enable
interrupts
if
appropriate
msr
cpsr_c
,
r9
@
mov
r0
,
r2
@
address
(
pc
)
mrs
r9
,
cpsr
mov
r1
,
sp
@
regs
tst
r3
,
#
PSR_I_BIT
bl
do_PrefetchAbort
@
call
abort
handler
biceq
r9
,
r9
,
#
PSR_I_BIT
disable_irq
r0
msr
cpsr_c
,
r9
ldr
r0
,
[
sp
,
#
S_PSR
]
msr
spsr_cxsf
,
r0
@
ldmia
sp
,
{
r0
-
pc
}^
@
load
r0
-
pc
,
cpsr
@
set
args
,
then
call
main
handler
@
.
align
5
@
r0
-
address
of
faulting
instruction
.
LCirq
:
.
word
__temp_irq
@
r1
-
pointer
to
registers
on
stack
.
LCund
:
.
word
__temp_und
@
.
LCabt
:
.
word
__temp_abt
mov
r0
,
r2
@
address
(
pc
)
mov
r1
,
sp
@
regs
bl
do_PrefetchAbort
@
call
abort
handler
@
@
IRQs
off
again
before
pulling
preserved
data
off
the
stack
@
disable_irq
r0
@
@
restore
SPSR
and
restart
the
instruction
@
ldr
r0
,
[
sp
,
#
S_PSR
]
msr
spsr_cxsf
,
r0
ldmia
sp
,
{
r0
-
pc
}^
@
load
r0
-
pc
,
cpsr
.
align
5
.
LCirq
:
.
word
__temp_irq
.
LCund
:
.
word
__temp_und
.
LCabt
:
.
word
__temp_abt
#ifdef MULTI_ABORT
#ifdef MULTI_ABORT
.
LCprocfns
:
.
word
processor
.
LCprocfns
:
.
word
processor
#endif
#endif
.
LCfp
:
.
word
fp_enter
.
LCfp
:
.
word
fp_enter
#ifdef CONFIG_PREEMPT
#ifdef CONFIG_PREEMPT
.
LCirq_stat
:
.
word
irq_stat
.
LCirq_stat
:
.
word
irq_stat
#endif
#endif
/*
/*
...
@@ -195,80 +268,115 @@ __pabt_svc:
...
@@ -195,80 +268,115 @@ __pabt_svc:
ldr
r7
,
.
LC
\
sym
ldr
r7
,
.
LC
\
sym
add
r5
,
sp
,
#
S_PC
add
r5
,
sp
,
#
S_PC
ldmia
r7
,
{
r2
-
r4
}
@
Get
USR
pc
,
cpsr
ldmia
r7
,
{
r2
-
r4
}
@
Get
USR
pc
,
cpsr
stmia
r5
,
{
r2
-
r4
}
@
Save
USR
pc
,
cpsr
,
old_r0
@
@
We
are
now
ready
to
fill
in
the
remaining
blanks
on
the
stack
:
@
@
r2
-
lr_
<
exception
>,
already
fixed
up
for
correct
return
/
restart
@
r3
-
spsr_
<
exception
>
@
r4
-
orig_r0
(
see
pt_regs
definition
in
ptrace
.
h
)
@
@
Also
,
separately
save
sp_usr
and
lr_usr
@
stmia
r5
,
{
r2
-
r4
}
stmdb
r5
,
{
sp
,
lr
}^
stmdb
r5
,
{
sp
,
lr
}^
.
endm
.
endm
.
align
5
.
align
5
__dabt_usr
:
__dabt_usr
:
usr_entry
abt
usr_entry
abt
alignment_trap
r7
,
r0
,
__temp_abt
alignment_trap
r7
,
r0
,
__temp_abt
zero_fp
zero_fp
@
@
Call
the
processor
-
specific
abort
handler
:
@
@
r2
-
aborted
context
pc
@
r3
-
aborted
context
cpsr
@
@
The
abort
handler
must
return
the
aborted
address
in
r0
,
and
@
the
fault
status
register
in
r1
.
@
#ifdef MULTI_ABORT
#ifdef MULTI_ABORT
ldr
r4
,
.
LCprocfns
@
pass
r2
,
r3
to
ldr
r4
,
.
LCprocfns
mov
lr
,
pc
@
processor
code
mov
lr
,
pc
ldr
pc
,
[
r4
]
@
call
processor
specific
code
ldr
pc
,
[
r4
]
#else
#else
bl
CPU_ABORT_HANDLER
bl
CPU_ABORT_HANDLER
#endif
#endif
enable_irq
r2
@
Enable
interrupts
mov
r2
,
sp
adrsvc
al
,
lr
,
ret_from_exception
b
do_DataAbort
.
align
5
@
@
IRQs
on
,
then
call
the
main
handler
@
enable_irq
r2
mov
r2
,
sp
adr
lr
,
ret_from_exception
b
do_DataAbort
.
align
5
__irq_usr
:
__irq_usr
:
usr_entry
irq
usr_entry
irq
alignment_trap
r7
,
r0
,
__temp_irq
alignment_trap
r7
,
r0
,
__temp_irq
zero_fp
zero_fp
#ifdef CONFIG_PREEMPT
#ifdef CONFIG_PREEMPT
get_thread_info
r8
get_thread_info
r8
ldr
r9
,
[
r8
,
#
TI_PREEMPT
]
@
get
preempt
count
ldr
r9
,
[
r8
,
#
TI_PREEMPT
]
@
get
preempt
count
add
r7
,
r9
,
#
1
@
increment
it
add
r7
,
r9
,
#
1
@
increment
it
str
r7
,
[
r8
,
#
TI_PREEMPT
]
str
r7
,
[
r8
,
#
TI_PREEMPT
]
#endif
#endif
1
:
get_irqnr_and_base
r0
,
r6
,
r5
,
lr
1
:
get_irqnr_and_base
r0
,
r6
,
r5
,
lr
movne
r1
,
sp
movne
r1
,
sp
adrsvc
ne
,
lr
,
1
b
adrne
lr
,
1
b
@
@
@
routine
called
with
r0
=
irq
number
,
r1
=
struct
pt_regs
*
@
routine
called
with
r0
=
irq
number
,
r1
=
struct
pt_regs
*
@
@
bne
asm_do_IRQ
bne
asm_do_IRQ
#ifdef CONFIG_PREEMPT
#ifdef CONFIG_PREEMPT
ldr
r0
,
[
r8
,
#
TI_PREEMPT
]
ldr
r0
,
[
r8
,
#
TI_PREEMPT
]
teq
r0
,
r7
teq
r0
,
r7
str
r9
,
[
r8
,
#
TI_PREEMPT
]
str
r9
,
[
r8
,
#
TI_PREEMPT
]
strne
r0
,
[
r0
,
-
r0
]
strne
r0
,
[
r0
,
-
r0
]
mov
tsk
,
r8
mov
tsk
,
r8
#else
#else
get_thread_info
tsk
get_thread_info
tsk
#endif
#endif
mov
why
,
#
0
mov
why
,
#
0
b
ret_to_user
b
ret_to_user
.
ltorg
.
ltorg
.
align
5
.
align
5
__und_usr
:
__und_usr
:
usr_entry
und
usr_entry
und
alignment_trap
r7
,
r0
,
__temp_und
alignment_trap
r7
,
r0
,
__temp_und
zero_fp
zero_fp
tst
r3
,
#
PSR_T_BIT
@
Thumb
mode
?
tst
r3
,
#
PSR_T_BIT
@
Thumb
mode
?
bne
fpundefinstr
@
ignore
FP
bne
fpundefinstr
@
ignore
FP
sub
r4
,
r2
,
#
4
sub
r4
,
r2
,
#
4
1
:
ldrt
r0
,
[
r4
]
@
r0
=
instruction
adrsvc
al
,
r9
,
ret_from_exception
@
r9
=
normal
FP
return
@
adrsvc
al
,
lr
,
fpundefinstr
@
lr
=
undefined
instr
return
@
fall
through
to
the
emulation
code
,
which
returns
using
r9
if
@
it
has
emulated
the
instruction
,
or
the
more
conventional
lr
@
if
we
are
to
treat
this
as
a
real
undefined
instruction
@
@
r0
-
instruction
@
1
:
ldrt
r0
,
[
r4
]
adr
r9
,
ret_from_exception
adr
lr
,
fpundefinstr
@
@
fallthrough
to
call_fpe
@
/*
/*
*
The
out
of
line
fixup
for
the
ldrt
above
.
*
The
out
of
line
fixup
for
the
ldrt
above
.
*/
*/
.
section
.
fixup
,
"ax"
.
section
.
fixup
,
"ax"
2
:
mov
pc
,
r9
2
:
mov
pc
,
r9
.
previous
.
previous
.
section
__ex_table
,
"a"
.
section
__ex_table
,
"a"
.
long
1
b
,
2
b
.
long
1
b
,
2
b
.
previous
.
previous
/*
/*
*
r0
=
instruction
.
*
r0
=
instruction
.
...
@@ -287,53 +395,54 @@ __und_usr:
...
@@ -287,53 +395,54 @@ __und_usr:
*
r10
-
this
threads
thread_info
structure
.
*
r10
-
this
threads
thread_info
structure
.
*/
*/
call_fpe
:
call_fpe
:
tst
r0
,
#
0x08000000
@
only
CDP
/
CPRT
/
LDC
/
STC
have
bit
27
tst
r0
,
#
0x08000000
@
only
CDP
/
CPRT
/
LDC
/
STC
have
bit
27
#if defined(CONFIG_CPU_ARM610) || defined(CONFIG_CPU_ARM710)
#if defined(CONFIG_CPU_ARM610) || defined(CONFIG_CPU_ARM710)
and
r8
,
r0
,
#
0x0f000000
@
mask
out
op
-
code
bits
and
r8
,
r0
,
#
0x0f000000
@
mask
out
op
-
code
bits
teqne
r8
,
#
0x0f000000
@
SWI
(
ARM6
/
7
bug
)?
teqne
r8
,
#
0x0f000000
@
SWI
(
ARM6
/
7
bug
)?
#endif
#endif
moveq
pc
,
lr
moveq
pc
,
lr
get_thread_info
r10
@
get
current
thread
get_thread_info
r10
@
get
current
thread
and
r8
,
r0
,
#
0x00000f00
@
mask
out
CP
number
and
r8
,
r0
,
#
0x00000f00
@
mask
out
CP
number
mov
r7
,
#
1
mov
r7
,
#
1
add
r6
,
r10
,
#
TI_USED_CP
add
r6
,
r10
,
#
TI_USED_CP
strb
r7
,
[
r6
,
r8
,
lsr
#
8
]
@
set
appropriate
used_cp
[]
strb
r7
,
[
r6
,
r8
,
lsr
#
8
]
@
set
appropriate
used_cp
[]
#ifdef CONFIG_IWMMXT
#ifdef CONFIG_IWMMXT
@
Test
if
we
need
to
give
access
to
iWMMXt
coprocessors
@
Test
if
we
need
to
give
access
to
iWMMXt
coprocessors
ldr
r5
,
[
r10
,
#
TI_FLAGS
]
ldr
r5
,
[
r10
,
#
TI_FLAGS
]
rsbs
r7
,
r8
,
#(
1
<<
8
)
@
CP
0
or
1
only
rsbs
r7
,
r8
,
#(
1
<<
8
)
@
CP
0
or
1
only
movcss
r7
,
r5
,
lsr
#(
TIF_USING_IWMMXT
+
1
)
movcss
r7
,
r5
,
lsr
#(
TIF_USING_IWMMXT
+
1
)
bcs
iwmmxt_task_enable
bcs
iwmmxt_task_enable
#endif
#endif
enable_irq
r7
enable_irq
r7
add
pc
,
pc
,
r8
,
lsr
#
6
add
pc
,
pc
,
r8
,
lsr
#
6
mov
r0
,
r0
mov
r0
,
r0
mov
pc
,
lr
@
CP
#
0
mov
pc
,
lr
@
CP
#
0
b
do_fpe
@
CP
#
1
(
FPE
)
b
do_fpe
@
CP
#
1
(
FPE
)
b
do_fpe
@
CP
#
2
(
FPE
)
b
do_fpe
@
CP
#
2
(
FPE
)
mov
pc
,
lr
@
CP
#
3
mov
pc
,
lr
@
CP
#
3
mov
pc
,
lr
@
CP
#
4
mov
pc
,
lr
@
CP
#
4
mov
pc
,
lr
@
CP
#
5
mov
pc
,
lr
@
CP
#
5
mov
pc
,
lr
@
CP
#
6
mov
pc
,
lr
@
CP
#
6
mov
pc
,
lr
@
CP
#
7
mov
pc
,
lr
@
CP
#
7
mov
pc
,
lr
@
CP
#
8
mov
pc
,
lr
@
CP
#
8
mov
pc
,
lr
@
CP
#
9
mov
pc
,
lr
@
CP
#
9
#ifdef CONFIG_VFP
#ifdef CONFIG_VFP
b
do_vfp
@
CP
#
10
(
VFP
)
b
do_vfp
@
CP
#
10
(
VFP
)
b
do_vfp
@
CP
#
11
(
VFP
)
b
do_vfp
@
CP
#
11
(
VFP
)
#else
#else
mov
pc
,
lr
@
CP
#
10
(
VFP
)
mov
pc
,
lr
@
CP
#
10
(
VFP
)
mov
pc
,
lr
@
CP
#
11
(
VFP
)
mov
pc
,
lr
@
CP
#
11
(
VFP
)
#endif
#endif
mov
pc
,
lr
@
CP
#
12
mov
pc
,
lr
@
CP
#
12
mov
pc
,
lr
@
CP
#
13
mov
pc
,
lr
@
CP
#
13
mov
pc
,
lr
@
CP
#
14
(
Debug
)
mov
pc
,
lr
@
CP
#
14
(
Debug
)
mov
pc
,
lr
@
CP
#
15
(
Control
)
mov
pc
,
lr
@
CP
#
15
(
Control
)
do_fpe
:
ldr
r4
,
.
LCfp
do_fpe
:
add
r10
,
r10
,
#
TI_FPSTATE
@
r10
=
workspace
ldr
r4
,
.
LCfp
ldr
pc
,
[
r4
]
@
Call
FP
module
USR
entry
point
add
r10
,
r10
,
#
TI_FPSTATE
@
r10
=
workspace
ldr
pc
,
[
r4
]
@
Call
FP
module
USR
entry
point
/*
/*
*
The
FP
module
is
called
with
these
registers
set
:
*
The
FP
module
is
called
with
these
registers
set
:
...
@@ -344,32 +453,33 @@ do_fpe: ldr r4, .LCfp
...
@@ -344,32 +453,33 @@ do_fpe: ldr r4, .LCfp
*
lr
=
unrecognised
FP
instruction
return
address
*
lr
=
unrecognised
FP
instruction
return
address
*/
*/
.
data
.
data
ENTRY
(
fp_enter
)
ENTRY
(
fp_enter
)
.
word
fpundefinstr
.
word
fpundefinstr
.
text
.
text
fpundefinstr
:
mov
r0
,
sp
fpundefinstr
:
adrsvc
al
,
lr
,
ret_from_exception
mov
r0
,
sp
b
do_undefinstr
adr
lr
,
ret_from_exception
b
do_undefinstr
.
align
5
.
align
5
__pabt_usr
:
__pabt_usr
:
usr_entry
abt
usr_entry
abt
alignment_trap
r7
,
r0
,
__temp_abt
alignment_trap
r7
,
r0
,
__temp_abt
zero_fp
zero_fp
enable_irq
r0
@
Enable
interrupts
enable_irq
r0
@
Enable
interrupts
mov
r0
,
r5
@
address
(
pc
)
mov
r0
,
r2
@
address
(
pc
)
mov
r1
,
sp
@
regs
mov
r1
,
sp
@
regs
bl
do_PrefetchAbort
@
call
abort
handler
bl
do_PrefetchAbort
@
call
abort
handler
/
*
fall
through
*/
/
*
fall
through
*/
/*
/*
*
This
is
the
return
code
to
user
mode
for
abort
handlers
*
This
is
the
return
code
to
user
mode
for
abort
handlers
*/
*/
ENTRY
(
ret_from_exception
)
ENTRY
(
ret_from_exception
)
get_thread_info
tsk
get_thread_info
tsk
mov
why
,
#
0
mov
why
,
#
0
b
ret_to_user
b
ret_to_user
/*
/*
*
Register
switch
for
ARMv3
and
ARMv4
processors
*
Register
switch
for
ARMv3
and
ARMv4
processors
...
@@ -377,31 +487,34 @@ ENTRY(ret_from_exception)
...
@@ -377,31 +487,34 @@ ENTRY(ret_from_exception)
*
previous
and
next
are
guaranteed
not
to
be
the
same
.
*
previous
and
next
are
guaranteed
not
to
be
the
same
.
*/
*/
ENTRY
(
__switch_to
)
ENTRY
(
__switch_to
)
add
ip
,
r1
,
#
TI_CPU_SAVE
add
ip
,
r1
,
#
TI_CPU_SAVE
ldr
r3
,
[
r2
,
#
TI_CPU_DOMAIN
]!
ldr
r3
,
[
r2
,
#
TI_TP_VALUE
]
stmia
ip
!,
{
r4
-
sl
,
fp
,
sp
,
lr
}
@
Store
most
regs
on
stack
stmia
ip
!,
{
r4
-
sl
,
fp
,
sp
,
lr
}
@
Store
most
regs
on
stack
ldr
r6
,
[
r2
,
#
TI_CPU_DOMAIN
]!
#if defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_IWMMXT)
#if defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_IWMMXT)
mra
r4
,
r5
,
acc0
mra
r4
,
r5
,
acc0
stmia
ip
,
{
r4
,
r5
}
stmia
ip
,
{
r4
,
r5
}
#endif
#endif
mcr
p15
,
0
,
r3
,
c3
,
c0
,
0
@
Set
domain
register
mov
r4
,
#
0xffff0fff
str
r3
,
[
r4
,
#-
3
]
@
Set
TLS
ptr
mcr
p15
,
0
,
r6
,
c3
,
c0
,
0
@
Set
domain
register
#ifdef CONFIG_VFP
#ifdef CONFIG_VFP
@
Always
disable
VFP
so
we
can
lazily
save
/
restore
the
old
@
Always
disable
VFP
so
we
can
lazily
save
/
restore
the
old
@
state
.
This
occurs
in
the
context
of
the
previous
thread
.
@
state
.
This
occurs
in
the
context
of
the
previous
thread
.
VFPFMRX
r4
,
FPEXC
VFPFMRX
r4
,
FPEXC
bic
r4
,
r4
,
#
FPEXC_ENABLE
bic
r4
,
r4
,
#
FPEXC_ENABLE
VFPFMXR
FPEXC
,
r4
VFPFMXR
FPEXC
,
r4
#endif
#endif
#if defined(CONFIG_IWMMXT)
#if defined(CONFIG_IWMMXT)
bl
iwmmxt_task_switch
bl
iwmmxt_task_switch
#elif defined(CONFIG_CPU_XSCALE)
#elif defined(CONFIG_CPU_XSCALE)
add
r4
,
r2
,
#
40
@
cpu_context_save
->
extra
add
r4
,
r2
,
#
40
@
cpu_context_save
->
extra
ldmib
r4
,
{
r4
,
r5
}
ldmib
r4
,
{
r4
,
r5
}
mar
acc0
,
r4
,
r5
mar
acc0
,
r4
,
r5
#endif
#endif
ldmib
r2
,
{
r4
-
sl
,
fp
,
sp
,
pc
}
@
Load
all
regs
saved
previously
ldmib
r2
,
{
r4
-
sl
,
fp
,
sp
,
pc
}
@
Load
all
regs
saved
previously
__INIT
__INIT
/*
/*
*
Vector
stubs
.
*
Vector
stubs
.
*
*
...
@@ -539,8 +652,9 @@ __stubs_start:
...
@@ -539,8 +652,9 @@ __stubs_start:
*
other
mode
than
FIQ
...
Ok
you
can
switch
to
another
mode
,
but
you
can
't
*
other
mode
than
FIQ
...
Ok
you
can
switch
to
another
mode
,
but
you
can
't
*
get
out
of
that
mode
without
clobbering
one
register
.
*
get
out
of
that
mode
without
clobbering
one
register
.
*/
*/
vector_fiq
:
disable_fiq
vector_fiq
:
subs
pc
,
lr
,
#
4
disable_fiq
subs
pc
,
lr
,
#
4
/*=============================================================================
/*=============================================================================
*
Address
exception
handler
*
Address
exception
handler
...
@@ -550,70 +664,78 @@ vector_fiq: disable_fiq
...
@@ -550,70 +664,78 @@ vector_fiq: disable_fiq
*/
*/
vector_addrexcptn
:
vector_addrexcptn
:
b
vector_addrexcptn
b
vector_addrexcptn
/*
/*
*
We
group
all
the
following
data
together
to
optimise
*
We
group
all
the
following
data
together
to
optimise
*
for
CPUs
with
separate
I
&
D
caches
.
*
for
CPUs
with
separate
I
&
D
caches
.
*/
*/
.
align
5
.
align
5
.
LCvswi
:
.
word
vector_swi
.
LCvswi
:
.
word
vector_swi
.
LCsirq
:
.
word
__temp_irq
.
LCsirq
:
.
LCsund
:
.
word
__temp_und
.
word
__temp_irq
.
LCsabt
:
.
word
__temp_abt
.
LCsund
:
.
word
__temp_und
.
LCsabt
:
.
word
__temp_abt
__stubs_end
:
__stubs_end
:
.
equ
__real_stubs_start
,
.
LCvectors
+
0x200
.
equ
__real_stubs_start
,
.
LCvectors
+
0x200
.
LCvectors
:
swi
SYS_ERROR0
.
LCvectors
:
b
__real_stubs_start
+
(
vector_und
-
__stubs_start
)
swi
SYS_ERROR0
ldr
pc
,
__real_stubs_start
+
(
.
LCvswi
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_und
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_pabt
-
__stubs_start
)
ldr
pc
,
__real_stubs_start
+
(
.
LCvswi
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_dabt
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_pabt
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_addrexcptn
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_dabt
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_irq
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_addrexcptn
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_fiq
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_irq
-
__stubs_start
)
b
__real_stubs_start
+
(
vector_fiq
-
__stubs_start
)
ENTRY
(
__trap_init
)
ENTRY
(
__trap_init
)
stmfd
sp
!,
{
r4
-
r6
,
lr
}
stmfd
sp
!,
{
r4
-
r6
,
lr
}
mov
r0
,
#
0xff000000
mov
r0
,
#
0xff000000
orr
r0
,
r0
,
#
0x00ff0000
@
high
vectors
position
orr
r0
,
r0
,
#
0x00ff0000
@
high
vectors
position
adr
r1
,
.
LCvectors
@
set
up
the
vectors
adr
r1
,
.
LCvectors
@
set
up
the
vectors
ldmia
r1
,
{
r1
,
r2
,
r3
,
r4
,
r5
,
r6
,
ip
,
lr
}
ldmia
r1
,
{
r1
,
r2
,
r3
,
r4
,
r5
,
r6
,
ip
,
lr
}
stmia
r0
,
{
r1
,
r2
,
r3
,
r4
,
r5
,
r6
,
ip
,
lr
}
stmia
r0
,
{
r1
,
r2
,
r3
,
r4
,
r5
,
r6
,
ip
,
lr
}
add
r2
,
r0
,
#
0x200
add
r2
,
r0
,
#
0x200
adr
r0
,
__stubs_start
@
copy
stubs
to
0x200
adr
r0
,
__stubs_start
@
copy
stubs
to
0x200
adr
r1
,
__stubs_end
adr
r1
,
__stubs_end
1
:
ldr
r3
,
[
r0
],
#
4
1
:
ldr
r3
,
[
r0
],
#
4
str
r3
,
[
r2
],
#
4
str
r3
,
[
r2
],
#
4
cmp
r0
,
r1
cmp
r0
,
r1
blt
1
b
blt
1
b
LOADREGS
(
fd
,
sp
!,
{
r4
-
r6
,
pc
})
LOADREGS
(
fd
,
sp
!,
{
r4
-
r6
,
pc
})
.
data
.
data
/*
/*
*
Do
not
reorder
these
,
and
do
not
insert
extra
data
between
...
*
Do
not
reorder
these
,
and
do
not
insert
extra
data
between
...
*/
*/
__temp_irq
:
.
word
0
@
saved
lr_irq
__temp_irq
:
.
word
0
@
saved
spsr_irq
.
word
0
@
saved
lr_irq
.
word
-
1
@
old_r0
.
word
0
@
saved
spsr_irq
__temp_und
:
.
word
0
@
Saved
lr_und
.
word
-
1
@
old_r0
.
word
0
@
Saved
spsr_und
__temp_und
:
.
word
-
1
@
old_r0
.
word
0
@
Saved
lr_und
__temp_abt
:
.
word
0
@
Saved
lr_abt
.
word
0
@
Saved
spsr_und
.
word
0
@
Saved
spsr_abt
.
word
-
1
@
old_r0
.
word
-
1
@
old_r0
__temp_abt
:
.
word
0
@
Saved
lr_abt
.
globl
cr_alignment
.
word
0
@
Saved
spsr_abt
.
globl
cr_no_alignment
.
word
-
1
@
old_r0
.
globl
cr_alignment
.
globl
cr_no_alignment
cr_alignment
:
cr_alignment
:
.
space
4
.
space
4
cr_no_alignment
:
cr_no_alignment
:
.
space
4
.
space
4
arch/arm/kernel/entry-common.S
View file @
fb2de489
...
@@ -137,7 +137,7 @@ ENTRY(vector_swi)
...
@@ -137,7 +137,7 @@ ENTRY(vector_swi)
tst
ip
,
#
_TIF_SYSCALL_TRACE
@
are
we
tracing
syscalls
?
tst
ip
,
#
_TIF_SYSCALL_TRACE
@
are
we
tracing
syscalls
?
bne
__sys_trace
bne
__sys_trace
adr
svc
al
,
lr
,
ret_fast_syscall
@
return
address
adr
lr
,
ret_fast_syscall
@
return
address
cmp
scno
,
#
NR_syscalls
@
check
upper
syscall
limit
cmp
scno
,
#
NR_syscalls
@
check
upper
syscall
limit
ldrcc
pc
,
[
tbl
,
scno
,
lsl
#
2
]
@
call
sys_
*
routine
ldrcc
pc
,
[
tbl
,
scno
,
lsl
#
2
]
@
call
sys_
*
routine
...
@@ -157,7 +157,7 @@ __sys_trace:
...
@@ -157,7 +157,7 @@ __sys_trace:
mov
r0
,
#
0
@
trace
entry
[
IP
=
0
]
mov
r0
,
#
0
@
trace
entry
[
IP
=
0
]
bl
syscall_trace
bl
syscall_trace
adr
svc
al
,
lr
,
__sys_trace_return
@
return
address
adr
lr
,
__sys_trace_return
@
return
address
add
r1
,
sp
,
#
S_R0
+
S_OFF
@
pointer
to
regs
add
r1
,
sp
,
#
S_R0
+
S_OFF
@
pointer
to
regs
cmp
scno
,
#
NR_syscalls
@
check
upper
syscall
limit
cmp
scno
,
#
NR_syscalls
@
check
upper
syscall
limit
ldmccia
r1
,
{
r0
-
r3
}
@
have
to
reload
r0
-
r3
ldmccia
r1
,
{
r0
-
r3
}
@
have
to
reload
r0
-
r3
...
@@ -212,7 +212,8 @@ sys_execve_wrapper:
...
@@ -212,7 +212,8 @@ sys_execve_wrapper:
b
sys_execve
b
sys_execve
sys_clone_wapper
:
sys_clone_wapper
:
add
r2
,
sp
,
#
S_OFF
add
ip
,
sp
,
#
S_OFF
str
ip
,
[
sp
,
#
4
]
b
sys_clone
b
sys_clone
sys_sigsuspend_wrapper
:
sys_sigsuspend_wrapper
:
...
...
arch/arm/kernel/entry-header.S
View file @
fb2de489
...
@@ -141,13 +141,6 @@
...
@@ -141,13 +141,6 @@
mov
\
rd
,
\
rd
,
lsl
#
13
mov
\
rd
,
\
rd
,
lsl
#
13
.
endm
.
endm
/*
*
Like
adr
,
but
force
SVC
mode
(
if
required
)
*/
.
macro
adrsvc
,
cond
,
reg
,
label
adr
\
cond
\
reg
,
\
label
.
endm
.
macro
alignment_trap
,
rbase
,
rtemp
,
sym
.
macro
alignment_trap
,
rbase
,
rtemp
,
sym
#ifdef CONFIG_ALIGNMENT_TRAP
#ifdef CONFIG_ALIGNMENT_TRAP
#define OFF_CR_ALIGNMENT(x) cr_alignment - x
#define OFF_CR_ALIGNMENT(x) cr_alignment - x
...
...
arch/arm/kernel/process.c
View file @
fb2de489
...
@@ -352,6 +352,9 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start,
...
@@ -352,6 +352,9 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start,
thread
->
cpu_context
.
sp
=
(
unsigned
long
)
childregs
;
thread
->
cpu_context
.
sp
=
(
unsigned
long
)
childregs
;
thread
->
cpu_context
.
pc
=
(
unsigned
long
)
ret_from_fork
;
thread
->
cpu_context
.
pc
=
(
unsigned
long
)
ret_from_fork
;
if
(
clone_flags
&
CLONE_SETTLS
)
thread
->
tp_value
=
regs
->
ARM_r3
;
return
0
;
return
0
;
}
}
...
...
arch/arm/kernel/ptrace.c
View file @
fb2de489
...
@@ -719,6 +719,11 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
...
@@ -719,6 +719,11 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
ret
=
ptrace_setfpregs
(
child
,
(
void
__user
*
)
data
);
ret
=
ptrace_setfpregs
(
child
,
(
void
__user
*
)
data
);
break
;
break
;
case
PTRACE_GET_THREAD_AREA
:
ret
=
put_user
(
child
->
thread_info
->
tp_value
,
(
unsigned
long
__user
*
)
data
);
break
;
default:
default:
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
);
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
);
break
;
break
;
...
...
arch/arm/kernel/sys_arm.c
View file @
fb2de489
...
@@ -241,18 +241,14 @@ asmlinkage int sys_fork(struct pt_regs *regs)
...
@@ -241,18 +241,14 @@ asmlinkage int sys_fork(struct pt_regs *regs)
/* Clone a task - this clones the calling program thread.
/* Clone a task - this clones the calling program thread.
* This is called indirectly via a small wrapper
* This is called indirectly via a small wrapper
*/
*/
asmlinkage
int
sys_clone
(
unsigned
long
clone_flags
,
unsigned
long
newsp
,
struct
pt_regs
*
regs
)
asmlinkage
int
sys_clone
(
unsigned
long
clone_flags
,
unsigned
long
newsp
,
int
*
parent_tidptr
,
int
tls_val
,
int
*
child_tidptr
,
struct
pt_regs
*
regs
)
{
{
/*
* We don't support SETTID / CLEARTID
*/
if
(
clone_flags
&
(
CLONE_PARENT_SETTID
|
CLONE_CHILD_CLEARTID
))
return
-
EINVAL
;
if
(
!
newsp
)
if
(
!
newsp
)
newsp
=
regs
->
ARM_sp
;
newsp
=
regs
->
ARM_sp
;
return
do_fork
(
clone_flags
,
newsp
,
regs
,
0
,
NULL
,
NULL
);
return
do_fork
(
clone_flags
,
newsp
,
regs
,
0
,
parent_tidptr
,
child_tidptr
);
}
}
asmlinkage
int
sys_vfork
(
struct
pt_regs
*
regs
)
asmlinkage
int
sys_vfork
(
struct
pt_regs
*
regs
)
...
...
arch/arm/kernel/traps.c
View file @
fb2de489
...
@@ -393,6 +393,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
...
@@ -393,6 +393,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
#define NR(x) ((__ARM_NR_##x) - __ARM_NR_BASE)
#define NR(x) ((__ARM_NR_##x) - __ARM_NR_BASE)
asmlinkage
int
arm_syscall
(
int
no
,
struct
pt_regs
*
regs
)
asmlinkage
int
arm_syscall
(
int
no
,
struct
pt_regs
*
regs
)
{
{
struct
thread_info
*
thread
=
current_thread_info
();
siginfo_t
info
;
siginfo_t
info
;
if
((
no
>>
16
)
!=
0x9f
)
if
((
no
>>
16
)
!=
0x9f
)
...
@@ -445,6 +446,17 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
...
@@ -445,6 +446,17 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
regs
->
ARM_cpsr
|=
MODE32_BIT
;
regs
->
ARM_cpsr
|=
MODE32_BIT
;
return
regs
->
ARM_r0
;
return
regs
->
ARM_r0
;
case
NR
(
set_tls
):
thread
->
tp_value
=
regs
->
ARM_r0
;
/*
* Our user accessible TLS ptr is located at 0xffff0ffc.
* On SMP read access to this address must raise a fault
* and be emulated from the data abort handler.
* m
*/
*
((
unsigned
long
*
)
0xffff0ffc
)
=
thread
->
tp_value
;
return
0
;
default:
default:
/* Calls 9f00xx..9f07ff are defined to return -ENOSYS
/* Calls 9f00xx..9f07ff are defined to return -ENOSYS
if not implemented, rather than raising SIGILL. This
if not implemented, rather than raising SIGILL. This
...
...
arch/arm/mach-iop3xx/iop321-pci.c
View file @
fb2de489
...
@@ -198,22 +198,23 @@ struct pci_bus *iop321_scan_bus(int nr, struct pci_sys_data *sys)
...
@@ -198,22 +198,23 @@ struct pci_bus *iop321_scan_bus(int nr, struct pci_sys_data *sys)
void
iop321_init
(
void
)
void
iop321_init
(
void
)
{
{
DBG
(
"PCI: Intel 80321 PCI init code.
\n
"
);
DBG
(
"PCI: Intel 80321 PCI init code.
\n
"
);
DBG
(
"
\t
ATU: IOP321_ATUCMD=0x%04x
\n
"
,
*
IOP321_ATUCMD
);
DBG
(
"ATU: IOP321_ATUCMD=0x%04x
\n
"
,
*
IOP321_ATUCMD
);
DBG
(
"
\t
ATU: IOP321_OMWTVR0=0x%04x, IOP321_OIOWTVR=0x%04x
\n
"
,
DBG
(
"ATU: IOP321_OMWTVR0=0x%04x, IOP321_OIOWTVR=0x%04x
\n
"
,
*
IOP321_OMWTVR0
,
*
IOP321_OMWTVR0
,
*
IOP321_OIOWTVR
);
*
IOP321_OIOWTVR
);
DBG
(
"
\t
ATU: IOP321_ATUCR=0x%08x
\n
"
,
*
IOP321_ATUCR
);
DBG
(
"ATU: IOP321_ATUCR=0x%08x
\n
"
,
*
IOP321_ATUCR
);
DBG
(
"
\t
ATU: IOP321_IABAR0=0x%08x IOP321_IALR0=0x%08x IOP321_IATVR0=%08x
\n
"
,
*
IOP321_IABAR0
,
*
IOP321_IALR0
,
*
IOP321_IATVR0
);
DBG
(
"ATU: IOP321_IABAR0=0x%08x IOP321_IALR0=0x%08x IOP321_IATVR0=%08x
\n
"
,
DBG
(
"
\t
ATU: IOP321_ERBAR=0x%08x IOP321_ERLR=0x%08x IOP321_ERTVR=%08x
\n
"
,
*
IOP321_ERBAR
,
*
IOP321_ERLR
,
*
IOP321_ERTVR
);
*
IOP321_IABAR0
,
*
IOP321_IALR0
,
*
IOP321_IATVR0
);
DBG
(
"
\t
ATU: IOP321_IABAR2=0x%08x IOP321_IALR2=0x%08x IOP321_IATVR2=%08x
\n
"
,
*
IOP321_IABAR2
,
*
IOP321_IALR2
,
*
IOP321_IATVR2
);
DBG
(
"ATU: IOP321_OMWTVR0=0x%08x
\n
"
,
*
IOP321_OMWTVR0
);
DBG
(
"
\t
ATU: IOP321_IABAR3=0x%08x IOP321_IALR3=0x%08x IOP321_IATVR3=%08x
\n
"
,
*
IOP321_IABAR3
,
*
IOP321_IALR3
,
*
IOP321_IATVR3
);
DBG
(
"ATU: IOP321_IABAR1=0x%08x IOP321_IALR1=0x%08x
\n
"
,
*
IOP321_IABAR1
,
*
IOP321_IALR1
);
#if 0
DBG
(
"ATU: IOP321_ERBAR=0x%08x IOP321_ERLR=0x%08x IOP321_ERTVR=%08x
\n
"
,
hook_fault_code(4, iop321_pci_abort, SIGBUS, "external abort on linefetch");
*
IOP321_ERBAR
,
*
IOP321_ERLR
,
*
IOP321_ERTVR
);
hook_fault_code(6, iop321_pci_abort, SIGBUS, "external abort on linefetch");
DBG
(
"ATU: IOP321_IABAR2=0x%08x IOP321_IALR2=0x%08x IOP321_IATVR2=%08x
\n
"
,
hook_fault_code(8, iop321_pci_abort, SIGBUS, "external abort on non-linefetch");
*
IOP321_IABAR2
,
*
IOP321_IALR2
,
*
IOP321_IATVR2
);
hook_fault_code(10, iop321_pci_abort, SIGBUS, "external abort on non-linefetch");
DBG
(
"ATU: IOP321_IABAR3=0x%08x IOP321_IALR3=0x%08x IOP321_IATVR3=%08x
\n
"
,
#endif
*
IOP321_IABAR3
,
*
IOP321_IALR3
,
*
IOP321_IATVR3
);
hook_fault_code
(
16
+
6
,
iop321_pci_abort
,
SIGBUS
,
"imprecise external abort"
);
hook_fault_code
(
16
+
6
,
iop321_pci_abort
,
SIGBUS
,
"imprecise external abort"
);
}
}
arch/arm/mach-iop3xx/iq31244-pci.c
View file @
fb2de489
...
@@ -78,13 +78,13 @@ static int iq31244_setup(int nr, struct pci_sys_data *sys)
...
@@ -78,13 +78,13 @@ static int iq31244_setup(int nr, struct pci_sys_data *sys)
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
IOP321_PCI_LOWER_IO_
BA
+
IOP321_PCI_IO_OFFSET
;
res
[
0
].
start
=
IOP321_PCI_LOWER_IO_
VA
;
res
[
0
].
end
=
IOP321_PCI_UPPER_IO_
BA
+
IOP321_PCI_IO_OFFSET
;
res
[
0
].
end
=
IOP321_PCI_UPPER_IO_
VA
;
res
[
0
].
name
=
"IQ31244 PCI I/O Space"
;
res
[
0
].
name
=
"IQ31244 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
IOP321_PCI_LOWER_MEM_
BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
start
=
IOP321_PCI_LOWER_MEM_
PA
;
res
[
1
].
end
=
IOP321_PCI_UPPER_MEM_
BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
end
=
IOP321_PCI_UPPER_MEM_
PA
;
res
[
1
].
name
=
"IQ31244 PCI Memory Space"
;
res
[
1
].
name
=
"IQ31244 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
...
@@ -98,9 +98,6 @@ static int iq31244_setup(int nr, struct pci_sys_data *sys)
...
@@ -98,9 +98,6 @@ static int iq31244_setup(int nr, struct pci_sys_data *sys)
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
sys
->
resource
[
2
]
=
NULL
;
iop3xx_pcibios_min_io
=
IOP321_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
IOP321_PCI_LOWER_MEM_VA
;
return
1
;
return
1
;
}
}
...
...
arch/arm/mach-iop3xx/iq80321-pci.c
View file @
fb2de489
...
@@ -72,13 +72,13 @@ static int iq80321_setup(int nr, struct pci_sys_data *sys)
...
@@ -72,13 +72,13 @@ static int iq80321_setup(int nr, struct pci_sys_data *sys)
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
IOP321_PCI_LOWER_IO_
BA
+
IOP321_PCI_IO_OFFSET
;
res
[
0
].
start
=
IOP321_PCI_LOWER_IO_
VA
;
res
[
0
].
end
=
IOP321_PCI_UPPER_IO_
BA
+
IOP321_PCI_IO_OFFSET
;
res
[
0
].
end
=
IOP321_PCI_UPPER_IO_
VA
;
res
[
0
].
name
=
"IQ80321 PCI I/O Space"
;
res
[
0
].
name
=
"IQ80321 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
IOP321_PCI_LOWER_MEM_
BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
start
=
IOP321_PCI_LOWER_MEM_
PA
;
res
[
1
].
end
=
IOP321_PCI_UPPER_MEM_
BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
end
=
IOP321_PCI_UPPER_MEM_
PA
;
res
[
1
].
name
=
"IQ80321 PCI Memory Space"
;
res
[
1
].
name
=
"IQ80321 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
...
@@ -92,9 +92,6 @@ static int iq80321_setup(int nr, struct pci_sys_data *sys)
...
@@ -92,9 +92,6 @@ static int iq80321_setup(int nr, struct pci_sys_data *sys)
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
sys
->
resource
[
2
]
=
NULL
;
iop3xx_pcibios_min_io
=
IOP321_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
IOP321_PCI_LOWER_MEM_VA
;
return
1
;
return
1
;
}
}
...
...
arch/arm/mach-iop3xx/iq80331-pci.c
View file @
fb2de489
...
@@ -68,13 +68,13 @@ static int iq80331_setup(int nr, struct pci_sys_data *sys)
...
@@ -68,13 +68,13 @@ static int iq80331_setup(int nr, struct pci_sys_data *sys)
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
IOP331_PCI_LOWER_IO_
BA
+
IOP331_PCI_IO_OFFSET
;
res
[
0
].
start
=
IOP331_PCI_LOWER_IO_
VA
;
res
[
0
].
end
=
IOP331_PCI_UPPER_IO_
BA
+
IOP331_PCI_IO_OFFSET
;
res
[
0
].
end
=
IOP331_PCI_UPPER_IO_
VA
;
res
[
0
].
name
=
"IQ80331 PCI I/O Space"
;
res
[
0
].
name
=
"IQ80331 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
IOP331_PCI_LOWER_MEM_
BA
+
IOP331_PCI_MEM_OFFSET
;
res
[
1
].
start
=
IOP331_PCI_LOWER_MEM_
PA
;
res
[
1
].
end
=
IOP331_PCI_UPPER_MEM_
BA
+
IOP331_PCI_MEM_OFFSET
;
res
[
1
].
end
=
IOP331_PCI_UPPER_MEM_
PA
;
res
[
1
].
name
=
"IQ80331 PCI Memory Space"
;
res
[
1
].
name
=
"IQ80331 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
...
@@ -88,9 +88,6 @@ static int iq80331_setup(int nr, struct pci_sys_data *sys)
...
@@ -88,9 +88,6 @@ static int iq80331_setup(int nr, struct pci_sys_data *sys)
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
sys
->
resource
[
2
]
=
NULL
;
iop3xx_pcibios_min_io
=
IOP331_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
IOP331_PCI_LOWER_MEM_VA
;
return
1
;
return
1
;
}
}
...
...
arch/arm/mach-iop3xx/iq80332-pci.c
View file @
fb2de489
...
@@ -74,13 +74,13 @@ static int iq80332_setup(int nr, struct pci_sys_data *sys)
...
@@ -74,13 +74,13 @@ static int iq80332_setup(int nr, struct pci_sys_data *sys)
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
IOP331_PCI_LOWER_IO_
BA
+
IOP331_PCI_IO_OFFSET
;
res
[
0
].
start
=
IOP331_PCI_LOWER_IO_
VA
;
res
[
0
].
end
=
IOP331_PCI_UPPER_IO_
BA
+
IOP331_PCI_IO_OFFSET
;
res
[
0
].
end
=
IOP331_PCI_UPPER_IO_
VA
;
res
[
0
].
name
=
"IQ80332 PCI I/O Space"
;
res
[
0
].
name
=
"IQ80332 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
IOP331_PCI_LOWER_MEM_
BA
+
IOP331_PCI_MEM_OFFSET
;
res
[
1
].
start
=
IOP331_PCI_LOWER_MEM_
PA
;
res
[
1
].
end
=
IOP331_PCI_UPPER_MEM_
BA
+
IOP331_PCI_MEM_OFFSET
;
res
[
1
].
end
=
IOP331_PCI_UPPER_MEM_
PA
;
res
[
1
].
name
=
"IQ80332 PCI Memory Space"
;
res
[
1
].
name
=
"IQ80332 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
...
@@ -94,9 +94,6 @@ static int iq80332_setup(int nr, struct pci_sys_data *sys)
...
@@ -94,9 +94,6 @@ static int iq80332_setup(int nr, struct pci_sys_data *sys)
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
sys
->
resource
[
2
]
=
NULL
;
iop3xx_pcibios_min_io
=
IOP331_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
IOP331_PCI_LOWER_MEM_VA
;
return
1
;
return
1
;
}
}
...
...
arch/arm/mach-ixp4xx/Kconfig
View file @
fb2de489
...
@@ -77,6 +77,24 @@ config CPU_IXP46X
...
@@ -77,6 +77,24 @@ config CPU_IXP46X
depends on MACH_IXDP465
depends on MACH_IXDP465
default y
default y
config MACH_GTWX5715
bool "Gemtek WX5715 (Linksys WRV54G)"
depends on ARCH_IXP4XX
help
This board is currently inside the Linksys WRV54G Gateways.
IXP425 - 266mhz
32mb SDRAM
8mb Flash
miniPCI slot 0 does not have a card connector soldered to the board
miniPCI slot 1 has an ISL3880 802.11g card (Prism54)
npe0 is connected to a Kendin KS8995M Switch (4 ports)
npe1 is the "wan" port
"Console" UART is available on J11 as console
"High Speed" UART is n/c (as far as I can tell)
20 Pin ARM/Xscale JTAG interface on J2
comment "IXP4xx Options"
comment "IXP4xx Options"
config IXP4XX_INDIRECT_PCI
config IXP4XX_INDIRECT_PCI
...
...
arch/arm/mach-ixp4xx/Makefile
View file @
fb2de489
...
@@ -8,4 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o
...
@@ -8,4 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o
obj-$(CONFIG_MACH_IXDPG425)
+=
ixdpg425-pci.o coyote-setup.o
obj-$(CONFIG_MACH_IXDPG425)
+=
ixdpg425-pci.o coyote-setup.o
obj-$(CONFIG_ARCH_ADI_COYOTE)
+=
coyote-pci.o coyote-setup.o
obj-$(CONFIG_ARCH_ADI_COYOTE)
+=
coyote-pci.o coyote-setup.o
obj-$(CONFIG_ARCH_PRPMC1100)
+=
prpmc1100-pci.o prpmc1100-setup.o
obj-$(CONFIG_ARCH_PRPMC1100)
+=
prpmc1100-pci.o prpmc1100-setup.o
obj-$(CONFIG_MACH_GTWX5715)
+=
gtwx5715-pci.o gtwx5715-setup.o
arch/arm/mach-ixp4xx/gtwx5715-pci.c
0 → 100644
View file @
fb2de489
/*
* arch/arm/mach-ixp4xx/gtwx5715-pci.c
*
* Gemtek GTWX5715 (Linksys WRV54G) board setup
*
* Copyright (C) 2004 George T. Joseph
* Derived from Coyote
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/arch/gtwx5715.h>
#include <asm/mach/pci.h>
extern
void
ixp4xx_pci_preinit
(
void
);
extern
int
ixp4xx_setup
(
int
nr
,
struct
pci_sys_data
*
sys
);
extern
struct
pci_bus
*
ixp4xx_scan_bus
(
int
nr
,
struct
pci_sys_data
*
sys
);
/*
* The exact GPIO pins and IRQs are defined in arch-ixp4xx/gtwx5715.h
* Slot 0 isn't actually populated with a card connector but
* we initialize it anyway in case a future version has the
* slot populated or someone with good soldering skills has
* some free time.
*/
static
void
gtwx5715_init_gpio
(
u8
pin
,
u32
style
)
{
gpio_line_config
(
pin
,
style
|
IXP4XX_GPIO_ACTIVE_LOW
);
if
(
style
&
IXP4XX_GPIO_IN
)
gpio_line_isr_clear
(
pin
);
}
void
__init
gtwx5715_pci_preinit
(
void
)
{
gtwx5715_init_gpio
(
GTWX5715_PCI_SLOT0_INTA_GPIO
,
IXP4XX_GPIO_IN
);
gtwx5715_init_gpio
(
GTWX5715_PCI_SLOT1_INTA_GPIO
,
IXP4XX_GPIO_IN
);
ixp4xx_pci_preinit
();
}
static
int
__init
gtwx5715_map_irq
(
struct
pci_dev
*
dev
,
u8
slot
,
u8
pin
)
{
int
rc
;
static
int
gtwx5715_irqmap
[
GTWX5715_PCI_SLOT_COUNT
]
[
GTWX5715_PCI_INT_PIN_COUNT
]
=
{
{
GTWX5715_PCI_SLOT0_INTA_IRQ
,
GTWX5715_PCI_SLOT0_INTB_IRQ
},
{
GTWX5715_PCI_SLOT1_INTA_IRQ
,
GTWX5715_PCI_SLOT1_INTB_IRQ
},
};
if
(
slot
>=
GTWX5715_PCI_SLOT_COUNT
||
pin
>=
GTWX5715_PCI_INT_PIN_COUNT
)
rc
=
-
1
;
else
rc
=
gtwx5715_irqmap
[
slot
][
pin
-
1
];
printk
(
"%s: Mapped slot %d pin %d to IRQ %d
\n
"
,
__FUNCTION__
,
slot
,
pin
,
rc
);
return
(
rc
);
}
struct
hw_pci
gtwx5715_pci
__initdata
=
{
.
nr_controllers
=
1
,
.
preinit
=
gtwx5715_pci_preinit
,
.
swizzle
=
pci_std_swizzle
,
.
setup
=
ixp4xx_setup
,
.
scan
=
ixp4xx_scan_bus
,
.
map_irq
=
gtwx5715_map_irq
,
};
int
__init
gtwx5715_pci_init
(
void
)
{
if
(
machine_is_gtwx5715
())
{
pci_common_init
(
&
gtwx5715_pci
);
}
return
0
;
}
subsys_initcall
(
gtwx5715_pci_init
);
arch/arm/mach-ixp4xx/gtwx5715-setup.c
0 → 100644
View file @
fb2de489
/*
* arch/arm/mach-ixp4xx/gtwx5715-setup.c
*
* Gemtek GTWX5715 (Linksys WRV54G) board settup
*
* Copyright (C) 2004 George T. Joseph
* Derived from Coyote
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
#include <linux/init.h>
#include <linux/device.h>
#include <linux/serial.h>
#include <linux/tty.h>
#include <linux/serial_8250.h>
#include <asm/types.h>
#include <asm/setup.h>
#include <asm/memory.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
#include <asm/arch/gtwx5715.h>
/*
* Xscale UART registers are 32 bits wide with only the least
* significant 8 bits having any meaning. From a configuration
* perspective, this means 2 things...
*
* Setting .regshift = 2 so that the standard 16550 registers
* line up on every 4th byte.
*
* Shifting the register start virtual address +3 bytes when
* compiled big-endian. Since register writes are done on a
* single byte basis, if the shift isn't done the driver will
* write the value into the most significant byte of the register,
* which is ignored, instead of the least significant.
*/
#ifdef __ARMEB__
#define REG_OFFSET 3
#else
#define REG_OFFSET 0
#endif
/*
* Only the second or "console" uart is connected on the gtwx5715.
*/
static
struct
resource
gtwx5715_uart_resources
[]
=
{
{
.
start
=
IXP4XX_UART2_BASE_PHYS
,
.
end
=
IXP4XX_UART2_BASE_PHYS
+
0x0fff
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_IXP4XX_UART2
,
.
end
=
IRQ_IXP4XX_UART2
,
.
flags
=
IORESOURCE_IRQ
,
},
{
},
};
static
struct
plat_serial8250_port
gtwx5715_uart_platform_data
[]
=
{
{
.
mapbase
=
IXP4XX_UART2_BASE_PHYS
,
.
membase
=
(
char
*
)
IXP4XX_UART2_BASE_VIRT
+
REG_OFFSET
,
.
irq
=
IRQ_IXP4XX_UART2
,
.
flags
=
UPF_BOOT_AUTOCONF
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
2
,
.
uartclk
=
IXP4XX_UART_XTAL
,
},
{
},
};
static
struct
platform_device
gtwx5715_uart_device
=
{
.
name
=
"serial8250"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
gtwx5715_uart_platform_data
,
},
.
num_resources
=
2
,
.
resource
=
gtwx5715_uart_resources
,
};
void
__init
gtwx5715_map_io
(
void
)
{
ixp4xx_map_io
();
}
static
struct
flash_platform_data
gtwx5715_flash_data
=
{
.
map_name
=
"cfi_probe"
,
.
width
=
2
,
};
static
struct
resource
gtwx5715_flash_resource
=
{
.
start
=
GTWX5715_FLASH_BASE
,
.
end
=
GTWX5715_FLASH_BASE
+
GTWX5715_FLASH_SIZE
,
.
flags
=
IORESOURCE_MEM
,
};
static
struct
platform_device
gtwx5715_flash
=
{
.
name
=
"IXP4XX-Flash"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
gtwx5715_flash_data
,
},
.
num_resources
=
1
,
.
resource
=
&
gtwx5715_flash_resource
,
};
static
struct
platform_device
*
gtwx5715_devices
[]
__initdata
=
{
&
gtwx5715_uart_device
,
&
gtwx5715_flash
,
};
static
void
__init
gtwx5715_init
(
void
)
{
platform_add_devices
(
gtwx5715_devices
,
ARRAY_SIZE
(
gtwx5715_devices
));
}
MACHINE_START
(
GTWX5715
,
"Gemtek GTWX5715 (Linksys WRV54G)"
)
MAINTAINER
(
"George Joseph"
)
BOOT_MEM
(
PHYS_OFFSET
,
IXP4XX_UART2_BASE_PHYS
,
IXP4XX_UART2_BASE_VIRT
)
MAPIO
(
gtwx5715_map_io
)
INITIRQ
(
ixp4xx_init_irq
)
.
timer
=
&
ixp4xx_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
gtwx5715_init
)
MACHINE_END
arch/arm/mach-pxa/corgi.c
View file @
fb2de489
...
@@ -77,8 +77,6 @@ static struct platform_device corgiscoop_device = {
...
@@ -77,8 +77,6 @@ static struct platform_device corgiscoop_device = {
* also use scoop functions and this makes the power up/down order
* also use scoop functions and this makes the power up/down order
* work correctly.
* work correctly.
*/
*/
extern
void
corgi_ssp_lcdtg_send
(
u8
adrs
,
u8
data
);
static
struct
platform_device
corgissp_device
=
{
static
struct
platform_device
corgissp_device
=
{
.
name
=
"corgi-ssp"
,
.
name
=
"corgi-ssp"
,
.
dev
=
{
.
dev
=
{
...
@@ -117,6 +115,18 @@ static struct platform_device corgifb_device = {
...
@@ -117,6 +115,18 @@ static struct platform_device corgifb_device = {
};
};
/*
* Corgi Backlight Device
*/
static
struct
platform_device
corgibl_device
=
{
.
name
=
"corgi-bl"
,
.
dev
=
{
.
parent
=
&
corgifb_device
.
dev
,
},
.
id
=
-
1
,
};
/*
/*
* MMC/SD Device
* MMC/SD Device
*
*
...
@@ -150,6 +160,10 @@ static int corgi_mci_init(struct device *dev, irqreturn_t (*unused_detect_int)(i
...
@@ -150,6 +160,10 @@ static int corgi_mci_init(struct device *dev, irqreturn_t (*unused_detect_int)(i
pxa_gpio_mode
(
CORGI_GPIO_nSD_DETECT
|
GPIO_IN
);
pxa_gpio_mode
(
CORGI_GPIO_nSD_DETECT
|
GPIO_IN
);
pxa_gpio_mode
(
CORGI_GPIO_SD_PWR
|
GPIO_OUT
);
pxa_gpio_mode
(
CORGI_GPIO_SD_PWR
|
GPIO_OUT
);
init_timer
(
&
mmc_detect
.
detect_timer
);
mmc_detect
.
detect_timer
.
function
=
mmc_detect_callback
;
mmc_detect
.
detect_timer
.
data
=
(
unsigned
long
)
&
mmc_detect
;
err
=
request_irq
(
CORGI_IRQ_GPIO_nSD_DETECT
,
corgi_mmc_detect_int
,
SA_INTERRUPT
,
err
=
request_irq
(
CORGI_IRQ_GPIO_nSD_DETECT
,
corgi_mmc_detect_int
,
SA_INTERRUPT
,
"MMC card detect"
,
data
);
"MMC card detect"
,
data
);
if
(
err
)
{
if
(
err
)
{
...
@@ -157,10 +171,6 @@ static int corgi_mci_init(struct device *dev, irqreturn_t (*unused_detect_int)(i
...
@@ -157,10 +171,6 @@ static int corgi_mci_init(struct device *dev, irqreturn_t (*unused_detect_int)(i
return
-
1
;
return
-
1
;
}
}
init_timer
(
&
mmc_detect
.
detect_timer
);
mmc_detect
.
detect_timer
.
function
=
mmc_detect_callback
;
mmc_detect
.
detect_timer
.
data
=
(
unsigned
long
)
&
mmc_detect
;
set_irq_type
(
CORGI_IRQ_GPIO_nSD_DETECT
,
IRQT_BOTHEDGE
);
set_irq_type
(
CORGI_IRQ_GPIO_nSD_DETECT
,
IRQT_BOTHEDGE
);
return
0
;
return
0
;
...
@@ -218,6 +228,7 @@ static struct platform_device *devices[] __initdata = {
...
@@ -218,6 +228,7 @@ static struct platform_device *devices[] __initdata = {
&
corgiscoop_device
,
&
corgiscoop_device
,
&
corgissp_device
,
&
corgissp_device
,
&
corgifb_device
,
&
corgifb_device
,
&
corgibl_device
,
};
};
static
struct
sharpsl_flash_param_info
sharpsl_flash_param
;
static
struct
sharpsl_flash_param_info
sharpsl_flash_param
;
...
...
include/asm-arm/arch-iop3xx/iop321.h
View file @
fb2de489
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
/*
/*
* IOP321 I/O and Mem space regions for PCI autoconfiguration
* IOP321 I/O and Mem space regions for PCI autoconfiguration
*/
*/
#define IOP321_PCI_IO_WINDOW_SIZE 0x10000
#define IOP321_PCI_IO_WINDOW_SIZE 0x
000
10000
#define IOP321_PCI_LOWER_IO_PA 0x90000000
#define IOP321_PCI_LOWER_IO_PA 0x90000000
#define IOP321_PCI_LOWER_IO_VA 0xfe000000
#define IOP321_PCI_LOWER_IO_VA 0xfe000000
#define IOP321_PCI_LOWER_IO_BA (*IOP321_OIOWTVR)
#define IOP321_PCI_LOWER_IO_BA (*IOP321_OIOWTVR)
...
@@ -40,14 +40,13 @@
...
@@ -40,14 +40,13 @@
#define IOP321_PCI_UPPER_IO_BA (IOP321_PCI_LOWER_IO_BA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_IO_BA (IOP321_PCI_LOWER_IO_BA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_IO_OFFSET (IOP321_PCI_LOWER_IO_VA - IOP321_PCI_LOWER_IO_BA)
#define IOP321_PCI_IO_OFFSET (IOP321_PCI_LOWER_IO_VA - IOP321_PCI_LOWER_IO_BA)
#define IOP321_PCI_MEM_WINDOW_SIZE (~*IOP321_IALR1 + 1)
//#define IOP321_PCI_MEM_WINDOW_SIZE (~*IOP321_IALR1 + 1)
#define IOP321_PCI_MEM_WINDOW_SIZE 0x04000000
/* 64M outbound window */
#define IOP321_PCI_LOWER_MEM_PA 0x80000000
#define IOP321_PCI_LOWER_MEM_PA 0x80000000
#define IOP321_PCI_LOWER_MEM_VA 0x80000000
#define IOP321_PCI_LOWER_MEM_BA (*IOP321_OMWTVR0)
#define IOP321_PCI_LOWER_MEM_BA (*IOP321_OMWTVR0)
#define IOP321_PCI_UPPER_MEM_PA (IOP321_PCI_LOWER_MEM_PA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_MEM_PA (IOP321_PCI_LOWER_MEM_PA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_MEM_VA (IOP321_PCI_LOWER_MEM_VA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_MEM_BA (IOP321_PCI_LOWER_MEM_BA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_MEM_BA (IOP321_PCI_LOWER_MEM_BA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_MEM_OFFSET (IOP321_PCI_LOWER_MEM_
V
A - IOP321_PCI_LOWER_MEM_BA)
#define IOP321_PCI_MEM_OFFSET (IOP321_PCI_LOWER_MEM_
P
A - IOP321_PCI_LOWER_MEM_BA)
/*
/*
...
...
include/asm-arm/arch-iop3xx/iop331.h
View file @
fb2de489
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
/*
/*
* IOP331 I/O and Mem space regions for PCI autoconfiguration
* IOP331 I/O and Mem space regions for PCI autoconfiguration
*/
*/
#define IOP331_PCI_IO_WINDOW_SIZE 0x10000
#define IOP331_PCI_IO_WINDOW_SIZE 0x
000
10000
#define IOP331_PCI_LOWER_IO_PA 0x90000000
#define IOP331_PCI_LOWER_IO_PA 0x90000000
#define IOP331_PCI_LOWER_IO_VA 0xfe000000
#define IOP331_PCI_LOWER_IO_VA 0xfe000000
#define IOP331_PCI_LOWER_IO_BA (*IOP331_OIOWTVR)
#define IOP331_PCI_LOWER_IO_BA (*IOP331_OIOWTVR)
...
@@ -40,14 +40,14 @@
...
@@ -40,14 +40,14 @@
#define IOP331_PCI_UPPER_IO_BA (IOP331_PCI_LOWER_IO_BA + IOP331_PCI_IO_WINDOW_SIZE - 1)
#define IOP331_PCI_UPPER_IO_BA (IOP331_PCI_LOWER_IO_BA + IOP331_PCI_IO_WINDOW_SIZE - 1)
#define IOP331_PCI_IO_OFFSET (IOP331_PCI_LOWER_IO_VA - IOP331_PCI_LOWER_IO_BA)
#define IOP331_PCI_IO_OFFSET (IOP331_PCI_LOWER_IO_VA - IOP331_PCI_LOWER_IO_BA)
#define IOP331_PCI_MEM_WINDOW_SIZE (~*IOP331_IALR1 + 1)
/* this can be 128M if OMWTVR1 is set */
#define IOP331_PCI_MEM_WINDOW_SIZE 0x04000000
/* 64M outbound window */
//#define IOP331_PCI_MEM_WINDOW_SIZE (~*IOP331_IALR1 + 1)
#define IOP331_PCI_LOWER_MEM_PA 0x80000000
#define IOP331_PCI_LOWER_MEM_PA 0x80000000
#define IOP331_PCI_LOWER_MEM_VA 0x80000000
#define IOP331_PCI_LOWER_MEM_BA (*IOP331_OMWTVR0)
#define IOP331_PCI_LOWER_MEM_BA (*IOP331_OMWTVR0)
#define IOP331_PCI_UPPER_MEM_PA (IOP331_PCI_LOWER_MEM_PA + IOP331_PCI_MEM_WINDOW_SIZE - 1)
#define IOP331_PCI_UPPER_MEM_PA (IOP331_PCI_LOWER_MEM_PA + IOP331_PCI_MEM_WINDOW_SIZE - 1)
#define IOP331_PCI_UPPER_MEM_VA (IOP331_PCI_LOWER_MEM_VA + IOP331_PCI_MEM_WINDOW_SIZE - 1)
#define IOP331_PCI_UPPER_MEM_BA (IOP331_PCI_LOWER_MEM_BA + IOP331_PCI_MEM_WINDOW_SIZE - 1)
#define IOP331_PCI_UPPER_MEM_BA (IOP331_PCI_LOWER_MEM_BA + IOP331_PCI_MEM_WINDOW_SIZE - 1)
#define IOP331_PCI_MEM_OFFSET (IOP331_PCI_LOWER_MEM_
V
A - IOP331_PCI_LOWER_MEM_BA)
#define IOP331_PCI_MEM_OFFSET (IOP331_PCI_LOWER_MEM_
P
A - IOP331_PCI_LOWER_MEM_BA)
/*
/*
* IOP331 chipset registers
* IOP331 chipset registers
...
...
include/asm-arm/arch-ixp4xx/gtwx5715.h
0 → 100644
View file @
fb2de489
/*
* include/asm-arm/arch-ixp4xx/gtwx5715.h
*
* Gemtek GTWX5715 Gateway (Linksys WRV54G)
*
* Copyright 2004 (c) George T. Joseph
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __ASM_ARCH_HARDWARE_H__
#error "Do not include this directly, instead #include <asm/hardware.h>"
#endif
#include "irqs.h"
#define GTWX5715_GPIO0 0
#define GTWX5715_GPIO1 1
#define GTWX5715_GPIO2 2
#define GTWX5715_GPIO3 3
#define GTWX5715_GPIO4 4
#define GTWX5715_GPIO5 5
#define GTWX5715_GPIO6 6
#define GTWX5715_GPIO7 7
#define GTWX5715_GPIO8 8
#define GTWX5715_GPIO9 9
#define GTWX5715_GPIO10 10
#define GTWX5715_GPIO11 11
#define GTWX5715_GPIO12 12
#define GTWX5715_GPIO13 13
#define GTWX5715_GPIO14 14
#define GTWX5715_GPIO0_IRQ IRQ_IXP4XX_GPIO0
#define GTWX5715_GPIO1_IRQ IRQ_IXP4XX_GPIO1
#define GTWX5715_GPIO2_IRQ IRQ_IXP4XX_GPIO2
#define GTWX5715_GPIO3_IRQ IRQ_IXP4XX_GPIO3
#define GTWX5715_GPIO4_IRQ IRQ_IXP4XX_GPIO4
#define GTWX5715_GPIO5_IRQ IRQ_IXP4XX_GPIO5
#define GTWX5715_GPIO6_IRQ IRQ_IXP4XX_GPIO6
#define GTWX5715_GPIO7_IRQ IRQ_IXP4XX_GPIO7
#define GTWX5715_GPIO8_IRQ IRQ_IXP4XX_GPIO8
#define GTWX5715_GPIO9_IRQ IRQ_IXP4XX_GPIO9
#define GTWX5715_GPIO10_IRQ IRQ_IXP4XX_GPIO10
#define GTWX5715_GPIO11_IRQ IRQ_IXP4XX_GPIO11
#define GTWX5715_GPIO12_IRQ IRQ_IXP4XX_GPIO12
#define GTWX5715_GPIO13_IRQ IRQ_IXP4XX_SW_INT1
#define GTWX5715_GPIO14_IRQ IRQ_IXP4XX_SW_INT2
#define GTWX5715_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS
#define GTWX5715_FLASH_SIZE (0x00800000)
/* PCI controller GPIO to IRQ pin mappings
INTA INTB
SLOT 0 10 11
SLOT 1 11 10
*/
#define GTWX5715_PCI_SLOT0_DEVID 0
#define GTWX5715_PCI_SLOT0_INTA_GPIO GTWX5715_GPIO10
#define GTWX5715_PCI_SLOT0_INTB_GPIO GTWX5715_GPIO11
#define GTWX5715_PCI_SLOT0_INTA_IRQ GTWX5715_GPIO10_IRQ
#define GTWX5715_PCI_SLOT0_INTB_IRQ GTWX5715_GPIO11_IRQ
#define GTWX5715_PCI_SLOT1_DEVID 1
#define GTWX5715_PCI_SLOT1_INTA_GPIO GTWX5715_GPIO11
#define GTWX5715_PCI_SLOT1_INTB_GPIO GTWX5715_GPIO10
#define GTWX5715_PCI_SLOT1_INTA_IRQ GTWX5715_GPIO11_IRQ
#define GTWX5715_PCI_SLOT1_INTB_IRQ GTWX5715_GPIO10_IRQ
#define GTWX5715_PCI_SLOT_COUNT 2
#define GTWX5715_PCI_INT_PIN_COUNT 2
/*
* GPIO 5,6,7 and12 are hard wired to the Kendin KS8995M Switch
* and operate as an SPI type interface. The details of the interface
* are available on Kendin/Micrel's web site.
*/
#define GTWX5715_KSSPI_SELECT GTWX5715_GPIO5
#define GTWX5715_KSSPI_TXD GTWX5715_GPIO6
#define GTWX5715_KSSPI_CLOCK GTWX5715_GPIO7
#define GTWX5715_KSSPI_RXD GTWX5715_GPIO12
/*
* The "reset" button is wired to GPIO 3.
* The GPIO is brought "low" when the button is pushed.
*/
#define GTWX5715_BUTTON_GPIO GTWX5715_GPIO3
#define GTWX5715_BUTTON_IRQ GTWX5715_GPIO3_IRQ
/*
* Board Label Front Label
* LED1 Power
* LED2 Wireless-G
* LED3 not populated but could be
* LED4 Internet
* LED5 - LED8 Controlled by KS8995M Switch
* LED9 DMZ
*/
#define GTWX5715_LED1_GPIO GTWX5715_GPIO2
#define GTWX5715_LED2_GPIO GTWX5715_GPIO9
#define GTWX5715_LED3_GPIO GTWX5715_GPIO8
#define GTWX5715_LED4_GPIO GTWX5715_GPIO1
#define GTWX5715_LED9_GPIO GTWX5715_GPIO4
include/asm-arm/arch-ixp4xx/uncompress.h
View file @
fb2de489
...
@@ -46,9 +46,9 @@ static void putstr(const char *s)
...
@@ -46,9 +46,9 @@ static void putstr(const char *s)
static
__inline__
void
__arch_decomp_setup
(
unsigned
long
arch_id
)
static
__inline__
void
__arch_decomp_setup
(
unsigned
long
arch_id
)
{
{
/*
/*
* Coyote
only has
UART2 connected
* Coyote
and gtwx5715 only have
UART2 connected
*/
*/
if
(
machine_is_adi_coyote
())
if
(
machine_is_adi_coyote
()
||
machine_is_gtwx5715
()
)
uart_base
=
(
volatile
u32
*
)
IXP4XX_UART2_BASE_PHYS
;
uart_base
=
(
volatile
u32
*
)
IXP4XX_UART2_BASE_PHYS
;
else
else
uart_base
=
(
volatile
u32
*
)
IXP4XX_UART1_BASE_PHYS
;
uart_base
=
(
volatile
u32
*
)
IXP4XX_UART1_BASE_PHYS
;
...
...
include/asm-arm/arch-pxa/corgi.h
View file @
fb2de489
...
@@ -18,29 +18,30 @@
...
@@ -18,29 +18,30 @@
* Corgi (Non Standard) GPIO Definitions
* Corgi (Non Standard) GPIO Definitions
*/
*/
#define CORGI_GPIO_KEY_INT (0)
/* Keyboard Interrupt */
#define CORGI_GPIO_KEY_INT (0)
/* Keyboard Interrupt */
#define CORGI_GPIO_AC_IN (1)
#define CORGI_GPIO_AC_IN (1)
/* Charger Detection */
#define CORGI_GPIO_WAKEUP (3)
#define CORGI_GPIO_WAKEUP (3)
/* System wakeup notification? */
#define CORGI_GPIO_AK_INT (4)
/*
IR Controller
Interrupt */
#define CORGI_GPIO_AK_INT (4)
/*
Headphone Jack Control
Interrupt */
#define CORGI_GPIO_TP_INT (5)
/* Touch Panel Interrupt */
#define CORGI_GPIO_TP_INT (5)
/* Touch Panel Interrupt */
#define CORGI_GPIO_nSD_WP (7)
#define CORGI_GPIO_nSD_WP (7)
/* SD Write Protect? */
#define CORGI_GPIO_nSD_DETECT (9)
/* MMC/SD Card Detect */
#define CORGI_GPIO_nSD_DETECT (9)
/* MMC/SD Card Detect */
#define CORGI_GPIO_nSD_INT (10)
#define CORGI_GPIO_nSD_INT (10)
/* SD Interrupt for SDIO? */
#define CORGI_GPIO_MAIN_BAT_LOW (11)
#define CORGI_GPIO_MAIN_BAT_LOW (11)
/* Main Battery Low Notification */
#define CORGI_GPIO_BAT_COVER (11)
#define CORGI_GPIO_BAT_COVER (11)
/* Battery Cover Detect */
#define CORGI_GPIO_LED_ORANGE (13)
#define CORGI_GPIO_LED_ORANGE (13)
/* Orange LED Control */
#define CORGI_GPIO_CF_CD (14)
/* Compact Flash Card Detect */
#define CORGI_GPIO_CF_CD (14)
/* Compact Flash Card Detect */
#define CORGI_GPIO_CHRG_FULL (16)
#define CORGI_GPIO_CHRG_FULL (16)
/* Charging Complete Notification */
#define CORGI_GPIO_CF_IRQ (17)
/* Compact Flash Interrupt */
#define CORGI_GPIO_CF_IRQ (17)
/* Compact Flash Interrupt */
#define CORGI_GPIO_LCDCON_CS (19)
/* LCD Control Chip Select */
#define CORGI_GPIO_LCDCON_CS (19)
/* LCD Control Chip Select */
#define CORGI_GPIO_MAX1111_CS (20)
/* MAX111 Chip Select */
#define CORGI_GPIO_MAX1111_CS (20)
/* MAX111
1
Chip Select */
#define CORGI_GPIO_ADC_TEMP_ON (21)
#define CORGI_GPIO_ADC_TEMP_ON (21)
/* Select battery voltage or temperature */
#define CORGI_GPIO_IR_ON (22)
#define CORGI_GPIO_IR_ON (22)
/* Enable IR Transciever */
#define CORGI_GPIO_ADS7846_CS (24)
/* ADS7846 Chip Select */
#define CORGI_GPIO_ADS7846_CS (24)
/* ADS7846 Chip Select */
#define CORGI_GPIO_SD_PWR (33)
/* MMC/SD Power */
#define CORGI_GPIO_SD_PWR (33)
/* MMC/SD Power */
#define CORGI_GPIO_CHRG_ON (38)
#define CORGI_GPIO_CHRG_ON (38)
/* Enable battery Charging */
#define CORGI_GPIO_DISCHARGE_ON (42)
#define CORGI_GPIO_DISCHARGE_ON (42)
/* Enable battery Discharge */
#define CORGI_GPIO_CHRG_UKN (43)
/* Unknown Charging (Bypass Control?) */
#define CORGI_GPIO_HSYNC (44)
/* LCD HSync Pulse */
#define CORGI_GPIO_HSYNC (44)
/* LCD HSync Pulse */
#define CORGI_GPIO_USB_PULLUP (45)
#define CORGI_GPIO_USB_PULLUP (45)
/* USB show presence to host */
/*
/*
...
@@ -97,6 +98,7 @@
...
@@ -97,6 +98,7 @@
CORGI_SCP_MIC_BIAS )
CORGI_SCP_MIC_BIAS )
#define CORGI_SCOOP_IO_OUT ( CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R )
#define CORGI_SCOOP_IO_OUT ( CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R )
/*
/*
* Corgi Parameter Area Definitions
* Corgi Parameter Area Definitions
*/
*/
...
@@ -131,5 +133,18 @@ struct sharpsl_flash_param_info {
...
@@ -131,5 +133,18 @@ struct sharpsl_flash_param_info {
unsigned
int
phadadj
;
unsigned
int
phadadj
;
};
};
/*
* External Functions
*/
extern
unsigned
long
corgi_ssp_ads7846_putget
(
unsigned
long
);
extern
unsigned
long
corgi_ssp_ads7846_get
(
void
);
extern
void
corgi_ssp_ads7846_put
(
ulong
data
);
extern
void
corgi_ssp_ads7846_lock
(
void
);
extern
void
corgi_ssp_ads7846_unlock
(
void
);
extern
void
corgi_ssp_lcdtg_send
(
u8
adrs
,
u8
data
);
extern
void
corgi_ssp_blduty_set
(
int
duty
);
extern
int
corgi_ssp_max1111_get
(
ulong
data
);
#endif
/* __ASM_ARCH_CORGI_H */
#endif
/* __ASM_ARCH_CORGI_H */
include/asm-arm/arch-pxa/pxa-regs.h
View file @
fb2de489
...
@@ -1337,7 +1337,7 @@
...
@@ -1337,7 +1337,7 @@
#define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
#define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
#define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
#define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
#define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
#define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
#define GPIO23_SCLK_
md
(23 | GPIO_ALT_FN_2_OUT)
#define GPIO23_SCLK_
MD
(23 | GPIO_ALT_FN_2_OUT)
#define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
#define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
#define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
#define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
#define GPIO26_SRXD_MD (26 | GPIO_ALT_FN_1_IN)
#define GPIO26_SRXD_MD (26 | GPIO_ALT_FN_1_IN)
...
...
include/asm-arm/elf.h
View file @
fb2de489
...
@@ -17,6 +17,7 @@ typedef unsigned long elf_freg_t[3];
...
@@ -17,6 +17,7 @@ typedef unsigned long elf_freg_t[3];
#define EM_ARM 40
#define EM_ARM 40
#define EF_ARM_APCS26 0x08
#define EF_ARM_APCS26 0x08
#define EF_ARM_SOFT_FLOAT 0x200
#define EF_ARM_SOFT_FLOAT 0x200
#define EF_ARM_EABI_MASK 0xFF000000
#define R_ARM_NONE 0
#define R_ARM_NONE 0
#define R_ARM_PC24 1
#define R_ARM_PC24 1
...
@@ -120,7 +121,8 @@ extern char elf_platform[];
...
@@ -120,7 +121,8 @@ extern char elf_platform[];
#define SET_PERSONALITY(ex,ibcs2) \
#define SET_PERSONALITY(ex,ibcs2) \
do { \
do { \
set_personality(PER_LINUX_32BIT); \
set_personality(PER_LINUX_32BIT); \
if ((ex).e_flags & EF_ARM_SOFT_FLOAT) \
if (((ex).e_flags & EF_ARM_EABI_MASK) || \
((ex).e_flags & EF_ARM_SOFT_FLOAT)) \
set_thread_flag(TIF_USING_IWMMXT); \
set_thread_flag(TIF_USING_IWMMXT); \
} while (0)
} while (0)
...
...
include/asm-arm/ptrace.h
View file @
fb2de489
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
#define PTRACE_OLDSETOPTIONS 21
#define PTRACE_OLDSETOPTIONS 21
#define PTRACE_GET_THREAD_AREA 22
/*
/*
* PSR bits
* PSR bits
*/
*/
...
...
include/asm-arm/thread_info.h
View file @
fb2de489
...
@@ -53,6 +53,7 @@ struct thread_info {
...
@@ -53,6 +53,7 @@ struct thread_info {
__u32
cpu_domain
;
/* cpu domain */
__u32
cpu_domain
;
/* cpu domain */
struct
cpu_context_save
cpu_context
;
/* cpu context */
struct
cpu_context_save
cpu_context
;
/* cpu context */
__u8
used_cp
[
16
];
/* thread used copro */
__u8
used_cp
[
16
];
/* thread used copro */
unsigned
long
tp_value
;
union
fp_state
fpstate
;
union
fp_state
fpstate
;
union
vfp_state
vfpstate
;
union
vfp_state
vfpstate
;
struct
restart_block
restart_block
;
struct
restart_block
restart_block
;
...
...
include/asm-arm/unistd.h
View file @
fb2de489
...
@@ -281,7 +281,7 @@
...
@@ -281,7 +281,7 @@
#define __NR_remap_file_pages (__NR_SYSCALL_BASE+253)
#define __NR_remap_file_pages (__NR_SYSCALL_BASE+253)
/* 254 for set_thread_area */
/* 254 for set_thread_area */
/* 255 for get_thread_area */
/* 255 for get_thread_area */
/* 256 for set_tid_address */
#define __NR_set_tid_address (__NR_SYSCALL_BASE+256)
#define __NR_timer_create (__NR_SYSCALL_BASE+257)
#define __NR_timer_create (__NR_SYSCALL_BASE+257)
#define __NR_timer_settime (__NR_SYSCALL_BASE+258)
#define __NR_timer_settime (__NR_SYSCALL_BASE+258)
#define __NR_timer_gettime (__NR_SYSCALL_BASE+259)
#define __NR_timer_gettime (__NR_SYSCALL_BASE+259)
...
@@ -316,6 +316,8 @@
...
@@ -316,6 +316,8 @@
#define __ARM_NR_usr26 (__ARM_NR_BASE+3)
#define __ARM_NR_usr26 (__ARM_NR_BASE+3)
#define __ARM_NR_usr32 (__ARM_NR_BASE+4)
#define __ARM_NR_usr32 (__ARM_NR_BASE+4)
#define __ARM_NR_set_tls (__ARM_NR_BASE+0x800)
#define __sys2(x) #x
#define __sys2(x) #x
#define __sys1(x) __sys2(x)
#define __sys1(x) __sys2(x)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment