linux/arch/tile/include/asm
Chris Metcalf 2f9ac29eec tile: fast-path unaligned memory access for tilegx
This change enables unaligned userspace memory access via a kernel
fast path on tilegx.  The kernel tracks user PC/instruction pairs
per-thread using a direct-mapped cache in userspace.  The cache
maps those PC/instruction pairs to JIT'ed instruction sequences that
load or store using byte-wide load store intructions and then
synthesize 2-, 4- or 8-byte load or store results.  Once an
instruction has been seen to generate an unaligned access once,
subsequent hits on that instruction typically require overhead
of only around 50 cycles if cache and TLB is hot.

We support the prctl() PR_GET_UNALIGN / PR_SET_UNALIGN sys call to
enable or disable unaligned fixups on a per-process basis.

To do this we pull some of the tilepro unaligned support out of the
single_step.c file; tilepro uses instruction disassembly for both
single-step and unaligned access support.  Since tilegx actually has
hardware singlestep support, though, it's cleaner to keep the tilegx
unaligned access code in a separate file.  While we're at it,
properly rename the tilepro-specific types, etc., to have tilepro
suffixes instead of generic tile suffixes.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
2013-08-13 16:04:10 -04:00
..
asm-offsets.h
atomic_32.h arch/tile: optimize get_user/put_user and friends 2012-05-25 12:48:23 -04:00
atomic_64.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
atomic.h tile: support atomic64_dec_if_positive() 2013-03-22 15:47:00 -04:00
backtrace.h
barrier.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
bitops_32.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
bitops_64.h arch/tile: fix gcc 4.6 warnings in <asm/bitops_64.h> 2012-04-02 12:00:15 -04:00
bitops.h tile: fix bug where fls(0) was not returning 0 2012-05-25 15:00:43 -04:00
cache.h tilegx pci: support I/O to arbitrarily-cached pages 2012-07-18 16:40:05 -04:00
cacheflush.h tile: convert uses of "inv" to "finv" 2013-07-31 11:51:19 -04:00
checksum.h arch/tile: break out the "csum a long" function to <asm/checksum.h> 2012-07-11 16:04:57 -04:00
cmpxchg.h arch: tile: include: asm: add cmpxchg64() definition 2013-07-17 12:45:38 -04:00
compat.h tile: work around bug in the generic sys_llseek 2013-03-04 11:19:09 -05:00
current.h
delay.h
device.h tile pci: enable IOMMU to support DMA for legacy devices 2012-07-18 16:40:17 -04:00
dma-mapping.h tile PCI RC: add dma_get_required_mask() 2013-08-06 12:56:00 -04:00
dma.h
edac.h
elf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2012-12-18 15:05:30 -08:00
fixmap.h tilegx pci: support I/O to arbitrarily-cached pages 2012-07-18 16:40:05 -04:00
ftrace.h
futex.h arch/tile: optimize get_user/put_user and friends 2012-05-25 12:48:23 -04:00
hardirq.h
hardwall.h UAPI: (Scripted) Disintegrate arch/tile/include/asm 2012-10-09 09:47:47 +01:00
highmem.h
homecache.h tilegx pci: support I/O to arbitrarily-cached pages 2012-07-18 16:40:05 -04:00
hugetlb.h mm/hugetlb: add more arch-defined huge_pte functions 2013-04-29 15:54:33 -07:00
hv_driver.h
hw_irq.h
ide.h
io.h tile PCI RC: support I/O space access 2013-08-06 12:55:32 -04:00
irq.h arch/tile: use 0 for IRQ_RESCHEDULE instead of 1 2012-04-02 12:00:16 -04:00
irqflags.h tile: comment assumption about __insn_mtspr for <asm/irqflags.h> 2013-04-09 10:08:14 -07:00
Kbuild tracing,x86: Add a TSC trace_clock 2012-11-13 15:48:27 -05:00
kexec.h arch/tile: support kexec() for tilegx 2012-05-25 12:48:25 -04:00
kmap_types.h tile: remove km_type definitions 2012-07-24 15:27:32 +08:00
linkage.h
mmu_context.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
mmu.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
mmzone.h
module.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
page.h tilegx pci: support I/O to arbitrarily-cached pages 2012-07-18 16:40:05 -04:00
pci.h tile PCI RC: remove stale include of linux/numa.h 2013-08-06 12:56:16 -04:00
percpu.h
pgalloc.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
pgtable_32.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
pgtable_64.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
pgtable.h consolidate io_remap_pfn_range definitions 2013-06-29 12:46:35 +04:00
processor.h tile: fast-path unaligned memory access for tilegx 2013-08-13 16:04:10 -04:00
ptrace.h tile: fast-path unaligned memory access for tilegx 2013-08-13 16:04:10 -04:00
sections.h tile: fast-path unaligned memory access for tilegx 2013-08-13 16:04:10 -04:00
setup.h tile: various console improvements 2013-08-12 14:46:18 -04:00
sigframe.h
signal.h UAPI: (Scripted) Disintegrate arch/tile/include/asm 2012-10-09 09:47:47 +01:00
smp.h smp: introduce a generic on_each_cpu_mask() function 2012-03-28 17:14:35 -07:00
spinlock_32.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
spinlock_64.h arch/tile: use atomic exchange in arch_write_unlock() 2012-04-02 12:13:49 -04:00
spinlock_types.h
spinlock.h
stack.h arch/tile: various bugs in stack backtracer 2012-04-02 12:12:45 -04:00
string.h tile: optimize strnlen using SIMD instructions 2013-08-01 20:08:51 -04:00
switch_to.h tile: support GENERIC_KERNEL_THREAD and GENERIC_KERNEL_EXECVE 2012-10-20 13:13:29 -04:00
syscall.h tile: move declaration of sys_call_table to <asm/syscall.h> 2013-03-21 15:39:35 -04:00
syscalls.h tile: move declaration of sys_call_table to <asm/syscall.h> 2013-03-21 15:39:35 -04:00
thread_info.h tile: fast-path unaligned memory access for tilegx 2013-08-13 16:04:10 -04:00
tile-desc_32.h
tile-desc_64.h
tile-desc.h
timex.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
tlb.h
tlbflush.h arch/tile: support multiple huge page sizes dynamically 2012-05-25 12:48:27 -04:00
topology.h tile: Remove SD_PREFER_LOCAL leftover 2012-08-15 13:22:55 +02:00
traps.h tile: fast-path unaligned memory access for tilegx 2013-08-13 16:04:10 -04:00
uaccess.h tile: convert uses of "inv" to "finv" 2013-07-31 11:51:19 -04:00
unaligned.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
unistd.h burying unused conditionals 2013-02-14 09:21:15 -05:00
user.h
vga.h