linux/arch/parisc/include/asm
Helge Deller 7d17e27631 parisc: fix ldcw inline assembler
There are two reasons to expose the memory *a in the asm:

1) To prevent the compiler from discarding a preceeding write to *a, and
2) to prevent it from caching *a in a register over the asm.

The change has had a few days testing with a SMP build of 2.6.22.19
running on a rp3440.

This patch is about the correctness of the __ldcw() macro itself.
The use of the macro should be confined to small inline functions
to try to limit the effect of clobbering memory on GCC's optimization
of loads and stores.

Signed-off-by: Dave Anglin <dave.anglin@nrc-cnrc.gc.ca>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
2009-07-03 03:34:07 +00:00
..
agp.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
asmregs.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
assembly.h parisc: fix 64bit build 2009-03-13 01:18:56 -04:00
atomic.h parisc: Remove casts from atomic macros 2009-07-03 03:34:06 +00:00
auxvec.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
bitops.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bug.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
bugs.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
cacheflush.h parisc: fix build when ARCH_HAS_KMAP 2009-04-02 02:42:53 +00:00
checksum.h parisc: fix ipv6 checksum 2009-01-05 19:11:05 +00:00
compat_rt_sigframe.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
compat_signal.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
compat_ucontext.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
compat.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
cputime.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
current.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
delay.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
device.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
div64.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
dma-mapping.h Documentation: move DMA-mapping.txt to Doc/PCI/ 2009-01-29 18:19:29 -08:00
dma.h parisc: remove CVS keywords 2009-07-03 03:34:06 +00:00
eisa_bus.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
eisa_eeprom.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
elf.h parisc: Move kernel Elf_Fdesc define to <asm/elf.h> 2009-04-02 04:16:24 +00:00
emergency-restart.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
errno.h cfg80211: errno.h: define ERFKILL 2009-06-07 05:01:00 -07:00
fb.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
fcntl.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
fixmap.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
floppy.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ftrace.h parisc: add ftrace (function and graph tracer) functionality 2009-03-31 02:51:34 +00:00
futex.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
grfioctl.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
hardirq.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
hardware.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
hw_irq.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ide.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
io.h parisc: define x->x mmio accessors 2009-03-13 01:20:48 -04:00
ioctl.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ioctls.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ipcbuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
irq_regs.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
irq.h parisc: convert cpu_check_affinity to new cpumask api 2009-03-13 01:20:27 -04:00
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
led.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
linkage.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
local.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
machdep.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mc146818rtc.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mckinley.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mman.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mmu_context.h parisc: fix braino in commit adding __space_to_prot 2009-01-05 18:15:25 +00:00
mmu.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mmzone.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
module.h parisc: fix module loading failure of large kernel modules 2009-01-05 08:40:14 +10:30
msgbuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
mutex.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
param.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
parisc-device.h parisc: struct device - replace bus_id with dev_name(), dev_set_name() 2008-11-26 22:22:41 +00:00
parport.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pci.h Delete pcibios_select_root 2009-06-17 14:04:42 -07:00
pdc_chassis.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pdc.h parisc: asm/pdc.h should include asm/page.h 2009-04-02 00:20:15 +00:00
pdcpat.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
percpu.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
perf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pgalloc.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
pgtable.h parisc: fix usage of 32bit PTE page table entries on 32bit kernels 2009-03-31 02:51:33 +00:00
poll.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
posix_types.h parisc: __kernel_time_t is always long 2008-11-26 22:22:36 +00:00
prefetch.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
processor.h parisc: Replace NR_CPUS in parisc code 2009-01-05 19:09:02 +00:00
psw.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ptrace.h remove __ARCH_WANT_COMPAT_SYS_PTRACE 2008-11-30 11:00:15 -08:00
real.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
resource.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
ropes.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
rt_sigframe.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
rtc.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
runway.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
scatterlist.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
sections.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
segment.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
sembuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
serial.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
setup.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
shmbuf.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
shmparam.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
sigcontext.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
siginfo.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
signal.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
smp.h cpumask: arch_send_call_function_ipi_mask: parisc 2009-03-16 14:19:37 +10:30
socket.h net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
sockios.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
spinlock_types.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
spinlock.h Allow rwlocks to re-enable interrupts 2009-04-02 19:05:11 -07:00
stat.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
statfs.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
string.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
superio.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
swab.h headers_check fix: parisc, swab.h 2009-02-01 11:01:27 +05:30
system.h parisc: fix ldcw inline assembler 2009-07-03 03:34:07 +00:00
termbits.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
termios.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
thread_info.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 2008-10-20 14:40:31 -07:00
timex.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
tlb.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
tlbflush.h parisc: disable UP-optimized flush_tlb_mm 2008-12-23 17:03:21 -08:00
topology.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
traps.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
types.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
uaccess.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
ucontext.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
unaligned.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
unistd.h parisc: wire up preadv/pwritev syscalls 2009-07-03 03:34:05 +00:00
unwind.h parisc: initialize unwinder much earlier 2008-10-10 16:32:30 +00:00
user.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
vga.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00
xor.h parisc: move include/asm-parisc to arch/parisc/include/asm 2008-10-10 16:32:29 +00:00