linux/include/asm-generic
Hitoshi Mitake 797a796a13 asm-generic: architecture independent readq/writeq for 32bit environment
This provides unified readq()/writeq() helper functions for 32-bit
drivers.

For some cases, readq/writeq without atomicity is harmful, and order of
io access has to be specified explicitly.  So in this patch, new two
header files which contain non-atomic readq/writeq are added.

 - <asm-generic/io-64-nonatomic-lo-hi.h> provides non-atomic readq/
   writeq with the order of lower address -> higher address

 - <asm-generic/io-64-nonatomic-hi-lo.h> provides non-atomic readq/
   writeq with reversed order

This allows us to remove some readq()s that were added drivers when the
default non-atomic ones were removed in commit dbee8a0aff ("x86:
remove 32-bit versions of readq()/writeq()")

The drivers which need readq/writeq but can do with the non-atomic ones
must add the line:

  #include <asm-generic/io-64-nonatomic-lo-hi.h> /* or hi-lo.h */

But this will be nop in 64-bit environments, and no other #ifdefs are
required.  So I believe that this patch can solve the problem of
 1. driver-specific readq/writeq
 2. atomicity and order of io access

This patch is tested with building allyesconfig and allmodconfig as
ARCH=x86 and ARCH=i386 on top of tip/master.

Cc: Kashyap Desai <Kashyap.Desai@lsi.com>
Cc: Len Brown <lenb@kernel.org>
Cc: Ravi Anand <ravi.anand@qlogic.com>
Cc: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Cc: Matthew Garrett <mjg@redhat.com>
Cc: Jason Uhlenkott <juhlenko@akamai.com>
Cc: James Bottomley <James.Bottomley@parallels.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Roland Dreier <roland@purestorage.com>
Cc: James Bottomley <jbottomley@parallels.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Matthew Wilcox <matthew.r.wilcox@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Hitoshi Mitake <h.mitake@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-02-21 16:47:28 -08:00
..
bitops
4level-fixup.h
Kbuild
Kbuild.asm
atomic-long.h
atomic.h
atomic64.h
audit_change_attr.h
audit_dir_write.h
audit_read.h
audit_signal.h
audit_write.h
auxvec.h
bitops.h
bitsperlong.h
bug.h treewide: use __printf not __attribute__((format(printf,...))) 2011-10-31 17:30:54 -07:00
bugs.h
cache.h
cacheflush.h
checksum.h Add extra arch overrides to asm-generic/checksum.h 2011-11-01 07:34:21 -07:00
cmpxchg-local.h
cmpxchg.h
cputime.h Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-01-06 08:44:54 -08:00
current.h
delay.h
device.h
div64.h
dma-coherent.h
dma-mapping-broken.h
dma-mapping-common.h dma-mapping: fix sync_single_range_* DMA debugging 2011-10-31 17:30:44 -07:00
dma.h
emergency-restart.h
errno-base.h
errno.h
fb.h
fcntl.h
ftrace.h
futex.h
getorder.h
gpio.h GPIO: add bindings for managed devices 2012-01-04 11:37:42 -07:00
hardirq.h
hw_irq.h
ide_iops.h
int-l64.h
int-ll64.h
io-64-nonatomic-hi-lo.h asm-generic: architecture independent readq/writeq for 32bit environment 2012-02-21 16:47:28 -08:00
io-64-nonatomic-lo-hi.h asm-generic: architecture independent readq/writeq for 32bit environment 2012-02-21 16:47:28 -08:00
io.h lib: use generic pci_iomap on all architectures 2012-01-10 18:04:27 -08:00
ioctl.h
ioctls.h
iomap.h lib: add GENERIC_PCI_IOMAP 2011-11-28 21:12:42 +02:00
ipcbuf.h
irq.h
irq_regs.h
irqflags.h
kdebug.h
kmap_types.h
libata-portmap.h
linkage.h
local.h
local64.h
memory_model.h
mm_hooks.h
mman-common.h
mman.h
mmu.h
mmu_context.h
module.h
msgbuf.h
mutex-dec.h
mutex-null.h
mutex-xchg.h
mutex.h
page.h The following changes since commit 3ee72ca992 2012-01-10 17:39:40 -08:00
param.h UAPI: Rearrange definition of HZ in asm-generic/param.h 2011-12-13 09:26:45 +00:00
parport.h
pci-bridge.h
pci-dma-compat.h
pci.h
pci_iomap.h lib: add NO_GENERIC_PCI_IOPORT_MAP 2012-01-31 23:19:47 +02:00
percpu.h
pgalloc.h
pgtable-nopmd.h
pgtable-nopud.h
pgtable.h
poll.h
posix_types.h
ptrace.h
resource.h
rtc.h
rwsem.h Hexagon: Add locking types and functions 2011-11-01 07:34:20 -07:00
scatterlist.h
sections.h
segment.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
siginfo.h
signal-defs.h
signal.h
sizes.h
socket.h net: add wireless TX status socket option 2011-11-09 16:01:02 -05:00
sockios.h
spinlock.h
stat.h
statfs.h
string.h
swab.h
syscall.h
syscalls.h
system.h
termbits.h
termios-base.h
termios.h
timex.h
tlb.h thp: add tlb_remove_pmd_tlb_entry 2012-01-12 20:13:08 -08:00
tlbflush.h
topology.h
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess-unaligned.h
uaccess.h fix default __strnlen_user macro 2011-10-06 19:47:12 -04:00
ucontext.h
unaligned.h
unistd.h asm-generic/unistd.h: support new process_vm_{readv,write} syscalls 2011-12-03 15:31:48 -05:00
user.h
vga.h
vmlinux.lds.h m68k: Finally remove leftover markers sections 2011-10-24 21:00:34 +02:00
xor.h