Lennert Buytenhek
afe4b25e7d
[ARM] 3881/4: xscale: clean up cp0/cp1 handling
...
XScale cores either have a DSP coprocessor (which contains a single
40 bit accumulator register), or an iWMMXt coprocessor (which contains
eight 64 bit registers.)
Because of the small amount of state in the DSP coprocessor, access to
the DSP coprocessor (CP0) is always enabled, and DSP context switching
is done unconditionally on every task switch. Access to the iWMMXt
coprocessor (CP0/CP1) is enabled only when an iWMMXt instruction is
first issued, and iWMMXt context switching is done lazily.
CONFIG_IWMMXT is supposed to mean 'the cpu we will be running on will
have iWMMXt support', but boards are supposed to select this config
symbol by hand, and at least one pxa27x board doesn't get this right,
so on that board, proc-xscale.S will incorrectly assume that we have a
DSP coprocessor, enable CP0 on boot, and we will then only save the
first iWMMXt register (wR0) on context switches, which is Bad.
This patch redefines CONFIG_IWMMXT as 'the cpu we will be running on
might have iWMMXt support, and we will enable iWMMXt context switching
if it does.' This means that with this patch, running a CONFIG_IWMMXT=n
kernel on an iWMMXt-capable CPU will no longer potentially corrupt iWMMXt
state over context switches, and running a CONFIG_IWMMXT=y kernel on a
non-iWMMXt capable CPU will still do DSP context save/restore.
These changes should make iWMMXt work on PXA3xx, and as a side effect,
enable proper acc0 save/restore on non-iWMMXt capable xsc3 cores such
as IOP13xx and IXP23xx (which will not have CONFIG_CPU_XSCALE defined),
as well as setting and using HWCAP_IWMMXT properly.
Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-12-03 17:52:22 +00:00
..
arch-aaec2000
[ARM] 3631/1: Remove legacy __mem_isa() definitions
2006-06-24 10:34:48 +01:00
arch-at91rm9200
[PATCH] atmel_serial: Pass fixed register mappings through platform_data
2006-10-04 10:25:05 -07:00
arch-cl7500
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
arch-clps711x
Initial blind fixup for arm for irq changes
2006-10-06 10:59:54 -07:00
arch-ebsa110
[ARM] ebsa110: fix warnings generated by asm/arch/io.h
2006-11-20 15:59:10 +00:00
arch-ebsa285
fix file specification in comments
2006-10-03 23:01:26 +02:00
arch-ep93xx
[PATCH] Cirrus Logic ep93xx ethernet driver
2006-09-22 20:13:23 -04:00
arch-h720x
fix file specification in comments
2006-10-03 23:01:26 +02:00
arch-imx
Initial blind fixup for arm for irq changes
2006-10-06 10:59:54 -07:00
arch-integrator
[ARM] 3631/1: Remove legacy __mem_isa() definitions
2006-06-24 10:34:48 +01:00
arch-iop32x
[ARM] 3851/1: iop3xx: add io-data glantank support
2006-09-25 10:34:02 +01:00
arch-iop33x
[ARM] 3832/1: iop3xx: coding style cleanup
2006-09-25 10:25:53 +01:00
arch-ixp4xx
[ARM] 3958/1: add platform device (pxa2xx-udc)to ixp4xx
2006-12-01 17:14:28 +00:00
arch-ixp23xx
[ARM] 3662/1: ixp23xx: don't include asm/hardware.h in uncompress.h
2006-06-28 17:54:56 +01:00
arch-ixp2000
[ARM] Fix decompressor serial IO to give CRLF not LFCR
2006-03-28 10:24:33 +01:00
arch-l7200
[ARM] Remove "translated" io macros
2006-11-30 14:39:14 +00:00
arch-lh7a40x
Remove all inclusions of <linux/config.h>
2006-10-04 03:38:54 -04:00
arch-netx
[ARM] 3631/1: Remove legacy __mem_isa() definitions
2006-06-24 10:34:48 +01:00
arch-omap
fix file specification in comments
2006-10-03 23:01:26 +02:00
arch-pnx4008
Initial blind fixup for arm for irq changes
2006-10-06 10:59:54 -07:00
arch-pxa
[ARM] 3894/1: pxa27x: Update DCSR_EORINTR bit definition in DCSR
2006-11-30 12:24:47 +00:00
arch-realview
[ARM] 3631/1: Remove legacy __mem_isa() definitions
2006-06-24 10:34:48 +01:00
arch-rpc
[ARM] Move FLUSH_BASE macros to asm/arch/memory.h
2006-04-07 13:22:21 +01:00
arch-s3c2410
fix file specification in comments
2006-10-03 23:01:26 +02:00
arch-sa1100
[ARM] 3936/1: [Jornada7xx] - No use for jornada720.h
2006-11-30 12:57:48 +00:00
arch-shark
fix file specification in comments
2006-10-03 23:01:26 +02:00
arch-versatile
[PATCH] arm-versatile iomem annotations
2006-10-11 11:17:06 -07:00
hardware
Initial blind fixup for arm for irq changes
2006-10-06 10:59:54 -07:00
mach
[ARM] Remove compatibility layer for ARM irqs
2006-11-30 12:24:47 +00:00
a.out.h
apm.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
assembler.h
[ARM] Remove MODE_(SVC|IRQ|FIQ|USR) and DEFAULT_FIQ
2006-06-25 12:01:48 +01:00
atomic.h
[ARM] 3810/1: switch atomic helpers over to raw_local_irq_{save,restore}
2006-09-25 10:25:24 +01:00
auxvec.h
[PATCH] auxiliary vector cleanups
2005-09-07 16:57:21 -07:00
bitops.h
[ARM] 3852/1: convert atomic bitops and __xchg over to raw_local_irq_{save,restore}
2006-09-25 10:34:03 +01:00
bug.h
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
bugs.h
[ARM] nommu: adjust headers for !MMU ARM systems
2006-06-28 17:59:45 +01:00
byteorder.h
[ARM] Fix byte order macros for Thumb
2006-06-19 15:35:36 +01:00
cache.h
[PATCH] Kill L1_CACHE_SHIFT_MAX
2006-01-08 20:13:39 -08:00
cacheflush.h
[ARM] Use CPU_CACHE_* where possible in asm/cacheflush.h
2006-09-27 18:00:35 +01:00
checksum.h
[ARM] 3292/1: Fix memory corruption in asm-arm/checksum.h: ip_fast_csum()
2006-02-01 19:26:00 +00:00
cpu-multi32.h
[PATCH] qualifiers in return types - easy cases
2005-08-23 18:43:45 -07:00
cpu-single.h
[PATCH] qualifiers in return types - easy cases
2005-08-23 18:43:45 -07:00
cpu.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
cputime.h
current.h
delay.h
[ARM] 3346/1: Fix udelay() for HZ values different from 100
2006-03-21 22:06:07 +00:00
div64.h
dma-mapping.h
[ARM] 3942/1: ARM: comment: consistent_sync should not be called directly
2006-11-22 22:45:57 +00:00
dma.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
domain.h
[ARM] nommu: adjust headers for !MMU ARM systems
2006-06-28 17:59:45 +01:00
dyntick.h
[ARM] 3692/1: ARM: coswitch irq handling to the generic implementation
2006-07-01 22:30:09 +01:00
ecard.h
elf.h
[ARM] 3881/4: xscale: clean up cp0/cp1 handling
2006-12-03 17:52:22 +00:00
emergency-restart.h
[PATCH] Add emergency_restart()
2005-07-26 14:35:41 -07:00
errno.h
fcntl.h
[PATCH] Clean up struct flock64 definitions
2005-09-07 16:57:38 -07:00
fiq.h
flat.h
[ARM] nommu: create flat.h to support uClinux flat binaries
2006-09-20 14:58:35 +01:00
floppy.h
[PATCH] ARM: fixup irqflags breakage after ARM genirq merge
2006-07-02 17:29:22 -07:00
fpstate.h
[ARM] 3370/2: ep93xx: add crunch support
2006-06-28 17:55:01 +01:00
futex.h
[PATCH] consolidate asm/futex.h
2006-01-08 20:13:39 -08:00
glue.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
hardirq.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
hardware.h
hw_irq.h
[PATCH] misc arm pt_regs fixes
2006-10-08 12:32:36 -07:00
ide.h
io.h
[ARM] Remove warnings for __io_pci and __arch_(get|put)*
2006-11-30 14:36:29 +00:00
ioctl.h
[PATCH] Generic ioctl.h
2006-01-10 08:01:34 -08:00
ioctls.h
ipc.h
ipcbuf.h
irq.h
[ARM] 3692/1: ARM: coswitch irq handling to the generic implementation
2006-07-01 22:30:09 +01:00
irq_regs.h
Initial blind fixup for arm for irq changes
2006-10-06 10:59:54 -07:00
irqflags.h
[ARM] Add ARM irqtrace support
2006-09-20 14:58:35 +01:00
Kbuild
Add empty Kbuild files for 'make headers_install' in remaining arches.
2006-06-18 12:58:53 +01:00
kmap_types.h
leds.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
limits.h
linkage.h
local.h
locks.h
[ARM] 3019/1: fix wrong comments
2005-10-18 07:51:34 +01:00
mc146818rtc.h
memory.h
[ARM] 3705/1: add supersection support to ioremap()
2006-07-01 19:58:20 +01:00
mman.h
[PATCH] add asm-generic/mman.h
2006-02-15 15:32:22 -08:00
mmu.h
[ARM] Add section support to ioremap
2006-06-29 22:14:30 +01:00
mmu_context.h
[ARM] Add section support to ioremap
2006-06-29 22:14:30 +01:00
mmzone.h
module.h
msgbuf.h
mtd-xip.h
[MTD] XIP cleanup
2005-07-07 16:50:16 +02:00
mutex.h
[ARM] 3311/1: clean up include/asm-arm/mutex.h
2006-02-08 21:19:38 +00:00
namei.h
nwflash.h
page-nommu.h
[ARM] nommu: adjust headers for !MMU ARM systems
2006-06-28 17:59:45 +01:00
page.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/tmlind/linux-omap-upstream into devel
2006-09-27 19:57:54 +01:00
param.h
[ARM] Move HZ definition into Kconfig
2006-03-21 22:05:45 +00:00
parport.h
pci.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
percpu.h
pgalloc.h
[ARM] nommu: adjust headers for !MMU ARM systems
2006-06-28 17:59:45 +01:00
pgtable-hwdef.h
[ARM] Set bit 4 on section mappings correctly depending on CPU
2006-06-29 18:24:21 +01:00
pgtable-nommu.h
[ARM] Fix nommu build
2006-11-30 13:53:54 +00:00
pgtable.h
[ARM] 3971/1: xsc3: get rid of L_PTE_COHERENT
2006-12-01 23:40:23 +00:00
poll.h
[PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications
2006-03-25 08:22:56 -08:00
posix_types.h
proc-fns.h
[ARM] nommu: add ARM946E-S core support
2006-09-27 17:39:19 +01:00
processor.h
[ARM] Include asm/elf.h instead of asm/procinfo.h
2006-11-30 12:24:46 +00:00
procinfo.h
[ARM] Move HWCAP_* definitions to asm/elf.h
2006-11-30 12:24:46 +00:00
ptrace.h
[ARM] 3665/1: crunch: add ptrace support
2006-06-28 17:55:00 +01:00
resource.h
rtc.h
[PATCH] RTC subsystem: ARM cleanup
2006-03-27 08:44:50 -08:00
scatterlist.h
[ARM] Remove '__address' from scatterlist and convert to DMA API
2006-01-04 15:08:30 +00:00
sections.h
segment.h
semaphore-helper.h
semaphore.h
[ARM] sema_count() removal
2005-12-01 20:58:01 +00:00
sembuf.h
serial.h
setup.h
[ARM] Separate page table manipulation code from bootmem initialisation
2006-09-27 10:10:58 +01:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
[PATCH] ARM: fixup irqflags breakage after ARM genirq merge
2006-07-02 17:29:22 -07:00
sizes.h
smp.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
socket.h
[AF_UNIX]: Datagram getpeersec
2006-06-29 16:58:06 -07:00
sockios.h
spinlock.h
[PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks
2006-10-01 00:39:21 -07:00
spinlock_types.h
[PATCH] spinlock consolidation
2005-09-10 10:06:21 -07:00
stat.h
[ARM] 3106/2: ARM EABI: some syscall adjustments
2006-01-14 16:32:12 +00:00
statfs.h
[ARM] 3108/2: old ABI compat: statfs64 and fstatfs64
2006-01-14 16:35:03 +00:00
string.h
suspend.h
system.h
[ARM] nommu: manage the CP15 things
2006-09-27 17:34:30 +01:00
termbits.h
termios.h
therm.h
thread_info.h
[ARM] 3911/2: Simplify alloc_thread_info on ARM
2006-11-30 15:27:03 +00:00
thread_notify.h
[ARM] Add thread_notify infrastructure
2006-06-22 10:24:18 +01:00
timex.h
tlb.h
[ARM] noMMU: removes TLB codes in nommu mode
2006-03-21 22:03:20 +00:00
tlbflush.h
[ARM] 3759/2: Remove uses of %?
2006-09-20 14:58:35 +01:00
topology.h
traps.h
types.h
[PATCH] sab: consolidate kmem_bufctl_t
2005-09-05 00:05:48 -07:00
uaccess.h
[ARM] Add __must_check to uaccess functions
2006-10-28 10:15:31 +01:00
ucontext.h
[ARM] 3664/1: crunch: add signal frame save/restore
2006-06-28 17:54:59 +01:00
unaligned.h
[ARM] 3849/1: fix get_unaligned() for gcc >= 4.1
2006-09-25 10:34:00 +01:00
unistd.h
[PATCH] rename the provided execve functions to kernel_execve
2006-10-02 07:57:23 -07:00
user.h
vfp.h
vfpmacros.h
[ARM] 3472/1: Use the D variants of FLDMIA/FSTMIA on ARMv6
2006-04-10 21:32:42 +01:00
vga.h
[PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use
2006-06-22 15:05:58 -07:00
xor.h