linux/arch/powerpc/include/asm
Michael Ellerman a87e810f61 powerpc: Work around gcc bug in current_thread_info()
In commit a3e5b356b3 "powerpc: Don't use local named register variable
in current_thread_info" Anton changed the way we did current_thread_info()
to accommodate LLVM, and it was not meant to have any effect elsewhere.

Unfortunately it has exposed a gcc bug, where r1 gets copied into
another register and then gcc uses that register to restore the toc
after a function call, even when that register is volatile and has been
clobbered by the function call.

We could revert Anton's patch, but it's not clear the original code is
safe either, we may just have been lucky.

The cleanest solution is to just use the existing CURRENT_THREAD_INFO()
asm macro, and call it using inline asm.

Segher points out we don't need volatile on the asm, if the result of
the shift is unused it's fine for the compiler to elide it.

Fixes: a3e5b356b3 ("powerpc: Don't use local named register variable in current_thread_info")
Reported-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-01-12 16:40:02 +11:00
..
8xx_immap.h
Kbuild net, lib: kill arch_fast_hash library bits 2014-12-10 15:17:46 -05:00
agp.h
archrandom.h
asm-compat.h PPC: Add asm helpers for BE 32bit load/store 2014-07-28 15:22:21 +02:00
asm-offsets.h
async_tx.h
atomic.h locking,arch,powerpc: Fold atomic_ops 2014-08-14 12:48:11 +02:00
backlight.h
barrier.h arch: Add lightweight memory barriers dma_rmb() and dma_wmb() 2014-12-11 21:15:06 -05:00
bitops.h powerpc: Fix comment typos in arch/powerpc/include/asm/bitops.h 2014-11-12 16:31:46 +11:00
bootx.h
btext.h
bug.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
bugs.h
cache.h Use the POWER8 Micro Partition Prefetch Engine in KVM HV on POWER8 2014-07-28 15:23:17 +02:00
cacheflush.h
cell-pmu.h
cell-regs.h
checksum.h
cmpxchg.h
code-patching.h powerpc: Add ppc_global_function_entry() 2014-06-24 14:05:32 +10:00
compat.h
context_tracking.h
copro.h powerpc/cell: Make spu_flush_all_slbs() generic 2014-10-08 20:15:37 +11:00
cpm.h
cpm1.h
cpm2.h powerpc/cpm: Remove duplicate FCC_GFMR_TTX define 2014-06-11 17:03:28 +10:00
cpuidle.h powernv/cpuidle: Redesign idle states management 2014-12-15 10:46:40 +11:00
cputable.h powerpc: Remove unused CPU_FTRS_A2 2014-11-10 09:59:29 +11:00
cputhreads.h
cputime.h Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2014-10-15 07:48:18 +02:00
current.h
dbdma.h
dbell.h
dcr-generic.h
dcr-mmio.h
dcr-native.h
dcr-regs.h
dcr.h
debug.h
delay.h
device.h
disassemble.h
div64.h
dma-mapping.h powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
dma.h
edac.h
eeh.h powerpc/eeh: Dump PHB diag-data early 2014-12-02 11:03:26 +11:00
eeh_event.h powerpc/powernv: Fix killed EEH event 2014-06-11 17:04:33 +10:00
ehv_pic.h
elf.h powerpc: Use generic PIE randomization 2014-11-17 17:55:11 +11:00
emergency-restart.h
emulated_ops.h
epapr_hcalls.h
exception-64e.h
exception-64s.h powerpc/book3s: Add basic infrastructure to handle HMI in Linux. 2014-08-05 16:33:48 +10:00
exec.h
fadump.h powerpc/fadump: Fix endianess issues in firmware assisted dump handling 2014-10-30 16:52:46 +11:00
fb.h
feature-fixups.h
firmware.h
fixmap.h
floppy.h
fs_pd.h powerpc/8xx: Remove empty asm/mpc8xx.h 2014-06-25 18:49:40 -05:00
fsl_85xx_cache_sram.h
fsl_gtm.h
fsl_guts.h powerpc/fsl: Added rcw registers to global utility registers 2014-11-07 18:10:47 -06:00
fsl_hcalls.h
fsl_lbc.h
fsl_pamu_stash.h
ftrace.h
futex.h
gpio.h
grackle.h
hardirq.h powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
heathrow.h
highmem.h
hugetlb.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
hvcall.h KVM: PPC: Book3S HV: Add H_SET_MODE hcall handling 2014-07-28 15:22:19 +02:00
hvconsole.h
hvcserver.h
hvsi.h
hw_breakpoint.h
hw_irq.h powerpc/book3s: Add basic infrastructure to handle HMI in Linux. 2014-08-05 16:33:48 +10:00
hydra.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
i8259.h
ibmebus.h
ide.h
immap_cpm2.h
immap_qe.h
io-defs.h
io-workarounds.h
io.h powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
io_event_irq.h
iommu.h powerpc/iommu: Rename iommu_[un]map_sg functions 2014-11-18 11:30:01 +01:00
ipic.h
irq.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
irq_regs.h
irqflags.h powerpc: Update comments in irqflags.h 2014-07-28 14:11:23 +10:00
jump_label.h powerpc/pseries: Use jump labels for hcall tracepoints 2014-07-11 16:05:58 +10:00
kdebug.h
kdump.h
kexec.h powerpc/kdump: Ignore failure in enabling big endian exception during crash 2014-12-29 15:44:53 +11:00
keylargo.h
kgdb.h
kmap_types.h
kprobes.h
kvm_asm.h KVM: PPC: Remove shared defines for SPE and AltiVec interrupts 2014-09-22 10:11:34 +02:00
kvm_book3s.h KVM: PPC: Book3S HV: Remove code for PPC970 processors 2014-12-17 13:44:03 +01:00
kvm_book3s_32.h
kvm_book3s_64.h KVM: PPC: Book3S HV: Remove code for PPC970 processors 2014-12-17 13:44:03 +01:00
kvm_book3s_asm.h
kvm_booke.h powerpc/kvm: common sw breakpoint instr across ppc 2014-09-22 10:11:36 +02:00
kvm_booke_hv_asm.h
kvm_fpu.h
kvm_host.h KVM: PPC: Book3S HV: Improve H_CONFER implementation 2014-12-17 13:53:39 +01:00
kvm_para.h
kvm_ppc.h KVM: PPC: Book3S HV: Remove code for PPC970 processors 2014-12-17 13:44:03 +01:00
libata-portmap.h
linkage.h
local.h
local64.h
lppaca.h
lv1call.h
machdep.h powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
macio.h
mc146818rtc.h
mce.h
mediabay.h
mman.h
mmu-8xx.h powerpc/8xx: Implement 16k pages 2014-11-07 18:10:42 -06:00
mmu-40x.h
mmu-44x.h
mmu-book3e.h KVM: PPC: Book3e: Add TLBSEL/TSIZE defines for MAS0/1 2014-07-28 15:23:13 +02:00
mmu-hash32.h
mmu-hash64.h powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
mmu.h powerpc: Remove MMU_FTR_SLB 2014-07-28 14:10:23 +10:00
mmu_context.h powerpc: Remove MMU_FTR_SLB 2014-07-28 14:10:23 +10:00
mmzone.h
module.h
mpc5xxx.h
mpc6xx.h
mpc52xx.h
mpc52xx_psc.h
mpc85xx.h powerpc/fsl-booke: Add support for T2080/T2081 SoC 2014-07-02 17:32:41 -05:00
mpc5121.h
mpc8260.h
mpic.h
mpic_msgr.h
mpic_timer.h
msi_bitmap.h Revert "powerpc/fsl_msi: spread msi ints across different MSIRs" 2014-09-19 15:20:42 -05:00
mutex.h
nvram.h
ohare.h
opal.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
oprofile_impl.h powerpc: Remove oprofile RS64 support 2014-07-28 14:10:25 +10:00
paca.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
page.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
page_32.h
page_64.h powerpc: Speed up clear_page by unrolling it 2014-10-02 16:04:21 +10:00
parport.h
pasemi_dma.h
pci-bridge.h powerpc/pci: Remove unused force_32bit_msi quirk 2014-11-24 14:36:02 +11:00
pci.h
percpu.h
perf_event.h powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
perf_event_fsl_emb.h
perf_event_server.h powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
pgalloc-32.h
pgalloc-64.h
pgalloc.h mmu_gather: move minimal range calculations into generic code 2014-11-17 10:12:42 +00:00
pgtable-ppc32.h powerpc/8xx: set PTE bit 22 off TLBmiss 2014-11-07 18:10:43 -06:00
pgtable-ppc64-4k.h powerpc/mm: Add missing pmd accessors 2014-11-14 17:24:21 +11:00
pgtable-ppc64-64k.h powerpc/mm: Add missing pmd accessors 2014-11-14 17:24:21 +11:00
pgtable-ppc64.h powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
pgtable.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
plpar_wrappers.h powerpc/pseries: Use new defines when calling H_SET_MODE 2014-10-07 22:01:56 +11:00
pmac_feature.h
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
pnv-pci.h powerpc/powerpc: Add new PCIe functions for allocating cxl interrupts 2014-10-08 20:15:44 +11:00
ppc-opcode.h powerpc updates for 3.19 batch 2 2014-12-19 12:57:45 -08:00
ppc-pci.h
ppc4xx.h
ppc4xx_ocm.h
ppc_asm.h PPC: Add _GLOBAL_TOC for 32bit 2014-06-26 13:19:42 +02:00
probes.h
processor.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
prom.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
ps3.h
ps3av.h
ps3gpu.h
ps3stor.h
pte-8xx.h powerpc/8xx: set PTE bit 22 off TLBmiss 2014-11-07 18:10:43 -06:00
pte-40x.h
pte-44x.h
pte-book3e.h
pte-common.h mm: remove misleading ARCH_USES_NUMA_PROT_NONE 2014-10-09 22:25:52 -04:00
pte-fsl-booke.h booke/powerpc: define wimge shift mask to fix compilation error 2014-06-25 18:49:39 -05:00
pte-hash32.h
pte-hash64-4k.h
pte-hash64-64k.h powerpc/mm: Use read barrier when creating real_pte 2014-08-13 18:20:41 +10:00
pte-hash64.h
ptrace.h powerpc/perf: Fix ABIv2 kernel backtraces 2014-09-09 19:02:45 +10:00
qe.h
qe_ic.h
reg.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
reg_8xx.h
reg_a2.h powerpc: Remove platforms/wsp and associated pieces 2014-06-11 16:35:38 +10:00
reg_booke.h KVM: PPC: BOOKE: Emulate debug registers and exception 2014-09-22 10:11:33 +02:00
reg_fsl_emb.h
rheap.h
rio.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
rtas.h
rtc.h
runlatch.h
scom.h
sections.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-10 18:54:22 -07:00
serial.h
setjmp.h
setup.h powerpc: Remove bootmem allocator 2014-11-10 09:59:25 +11:00
sfp-machine.h
shmparam.h
signal.h
smp.h
smu.h
sparsemem.h
spinlock.h powerpc: Add smp_mb() to arch_spin_is_locked() 2014-08-13 15:13:26 +10:00
spinlock_types.h
spu.h powerpc/cell: Move spu_handle_mm_fault() out of cell platform 2014-10-08 20:14:54 +11:00
spu_csa.h
spu_info.h
spu_priv1.h
sstep.h powerpc: Emulate icbi, mcrf and conditional-trap instructions 2014-09-25 23:14:51 +10:00
string.h
swab.h powerpc: Remove __arch_swab* 2014-06-24 12:43:15 +10:00
swiotlb.h
switch_to.h powerpc/perf: Ensure all EBB register state is cleared on fork() 2014-06-11 17:03:41 +10:00
synch.h
syscall.h powerpc: add little endian flag to syscall_get_arch() 2014-12-12 20:14:08 +11:00
syscalls.h
systbl.h powerpc: Wire up sys_execveat() syscall 2014-12-29 15:44:53 +11:00
tce.h
termios.h
thread_info.h powerpc: Work around gcc bug in current_thread_info() 2015-01-12 16:40:02 +11:00
time.h KVM: PPC: BOOK3S: PR: Emulate virtual timebase register 2014-07-28 15:21:50 +02:00
timex.h
tlb.h mmu_gather: move minimal range calculations into generic code 2014-11-17 10:12:42 +00:00
tlbflush.h powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
tm.h
topology.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-10 18:54:22 -07:00
trace.h powernv: Add OPAL tracepoints 2014-07-11 16:06:08 +10:00
tsi108.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
tsi108_irq.h
tsi108_pci.h
types.h
uaccess.h powerpc/uaccess: Allow get_user() with bitwise types 2014-12-18 19:11:09 +11:00
ucc.h
ucc_fast.h
ucc_slow.h
udbg.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
uic.h
unaligned.h
uninorth.h
unistd.h powerpc: Wire up sys_execveat() syscall 2014-12-29 15:44:53 +11:00
uprobes.h
user.h
vdso.h
vdso_datapage.h
vga.h powerpc: Remove unused vgacon_remap_base & fix build break 2014-11-10 09:59:31 +11:00
vio.h
word-at-a-time.h powerpc: ppc64le optimised word at a time 2014-09-30 14:59:13 +10:00
xics.h powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
xilinx_intc.h
xilinx_pci.h
xmon.h
xor.h