linux/arch/tile/include/asm
Chris Metcalf 1337173148 arch/tile: fix __ndelay etc to work better
The current implementations of __ndelay and __udelay call a hypervisor
service to delay, but the hypervisor service isn't actually implemented
very well, and the consensus is that Linux should handle figuring this
out natively and not use a hypervisor service.

By converting nanoseconds to cycles, and then spinning until the
cycle counter reaches the desired cycle, we get several benefits:
first, we are sensitive to the actual clock speed; second, we use
less power by issuing a slow SPR read once every six cycles while
we delay; and third, we properly handle the case of an interrupt by
exiting at the target time rather than after some number of cycles.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
2011-03-01 16:20:04 -05:00
..
asm-offsets.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
atomic_32.h arch/tile: Various cleanups. 2010-08-13 08:52:19 -04:00
atomic.h arch/tile: Fix atomic_read() definition to use ACCESS_ONCE 2011-02-25 08:46:38 -05:00
auxvec.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
backtrace.h arch/tile: support new info op generated by compiler 2010-10-15 15:39:25 -04:00
bitops_32.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
bitops.h bitops: make asm-generic/bitops/find.h more generic 2010-10-09 21:51:44 +02:00
bitsperlong.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
bug.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
bugs.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
byteorder.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
cache.h arch/tile: catch up with section naming convention in 2.6.35 2011-03-01 16:18:52 -05:00
cacheflush.h drivers/net/tile/: on-chip network drivers for the tile architecture 2010-11-24 13:11:18 -05:00
checksum.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
compat.h arch/tile: Use <asm-generic/syscalls.h> 2010-10-14 14:34:33 -04:00
cputime.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
current.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
delay.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
device.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
div64.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
dma-mapping.h dma-mapping: remove dma_is_consistent API 2010-08-11 08:59:21 -07:00
dma.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
elf.h arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
emergency-restart.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
errno.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
fcntl.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
fixmap.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
ftrace.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
futex.h arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
hardirq.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
hardwall.h arch/tile: Add driver to enable access to the user dynamic network. 2010-07-06 13:34:15 -04:00
highmem.h arch/tile: complete migration to new kmap_atomic scheme 2010-11-01 15:30:36 -04:00
homecache.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
hugetlb.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
hv_driver.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
hw_irq.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
ide.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
io.h pci root complex: support for tile architecture 2010-11-24 13:13:49 -05:00
ioctl.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
ioctls.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
ipc.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
ipcbuf.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
irq_regs.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
irq.h arch/tile: Enable more sophisticated IRQ model for 32-bit chips. 2010-07-06 13:34:01 -04:00
irqflags.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2010-10-26 17:25:38 -07:00
Kbuild arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
kdebug.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
kexec.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
kmap_types.h arch/tile: complete migration to new kmap_atomic scheme 2010-11-01 15:30:36 -04:00
linkage.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
local.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
memprof.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
mman.h arch/tile: provide a definition of MAP_STACK 2010-10-14 15:09:02 -04:00
mmu_context.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
mmu.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
mmzone.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
module.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
msgbuf.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
mutex.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
opcode_constants_32.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
opcode_constants_64.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
opcode_constants.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
opcode-tile_32.h arch/tile: Shrink the tile-opcode files considerably. 2010-07-06 13:40:56 -04:00
opcode-tile_64.h arch/tile: Shrink the tile-opcode files considerably. 2010-07-06 13:40:56 -04:00
opcode-tile.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
page.h arch/tile: parameterize system PLs to support KVM port 2010-10-15 15:38:09 -04:00
param.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
pci.h pci root complex: support for tile architecture 2010-11-24 13:13:49 -05:00
percpu.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
pgalloc.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
pgtable_32.h arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
pgtable.h arch/tile: complete migration to new kmap_atomic scheme 2010-11-01 15:30:36 -04:00
poll.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
posix_types.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
processor.h drivers/net/tile/: on-chip network drivers for the tile architecture 2010-11-24 13:11:18 -05:00
ptrace.h arch/tile: bug fix: exec'ed task thought it was still single-stepping 2011-03-01 16:19:58 -05:00
resource.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
scatterlist.h tile: remove unused ISA_DMA_THRESHOLD define 2010-08-11 10:38:06 -04:00
sections.h arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
sembuf.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
setup.h arch/tile: export only COMMAND_LINE_SIZE to userspace. 2010-08-15 12:14:41 -04:00
shmbuf.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
shmparam.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
sigcontext.h arch/tile: Change struct sigcontext to be more useful 2010-09-15 11:16:08 -04:00
sigframe.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
siginfo.h arch/tile: Fix a couple of issues with the COMPAT code for TILE-Gx. 2010-08-13 08:32:21 -04:00
signal.h arch/tile: handle rt_sigreturn() more cleanly 2010-12-17 16:59:29 -05:00
smp.h arch/tile: Enable more sophisticated IRQ model for 32-bit chips. 2010-07-06 13:34:01 -04:00
socket.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
sockios.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
spinlock_32.h arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
spinlock_types.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
spinlock.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
stack.h arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
stat.h asm-generic/stat.h: support 64-bit file time_t for stat() 2010-11-01 15:31:29 -04:00
statfs.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
string.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
swab.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
syscall.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
syscalls.h arch/tile: Use <asm-generic/syscalls.h> 2010-10-14 14:34:33 -04:00
system.h arch/tile: parameterize system PLs to support KVM port 2010-10-15 15:38:09 -04:00
termbits.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
termios.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
thread_info.h arch/tile: catch up on various minor cleanups. 2010-07-06 13:42:15 -04:00
timex.h arch/tile: fix __ndelay etc to work better 2011-03-01 16:20:04 -05:00
tlb.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
tlbflush.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
topology.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
traps.h arch/tile: enable single-step support for TILE-Gx 2010-10-15 15:38:26 -04:00
types.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
uaccess.h arch/tile: Various cleanups. 2010-08-13 08:52:19 -04:00
ucontext.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
unaligned.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
unistd.h asm-generic/stat.h: support 64-bit file time_t for stat() 2010-11-01 15:31:29 -04:00
user.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
xor.h arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00