linux/arch/powerpc
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
..
boot Merge remote-tracking branch 'scottwood/next' into next 2014-11-18 17:00:38 +11:00
configs PM: Eliminate CONFIG_PM_RUNTIME 2014-12-19 22:55:06 +01:00
crypto crypto: powerpc - replace memset by memzero_explicit 2014-12-02 22:55:50 +08:00
include powerpc: Work around gcc bug in current_thread_info() 2015-01-12 16:40:02 +11:00
kernel Revert "powerpc: Secondary CPUs must set cpu_callin_map after setting active and online" 2014-12-29 15:51:51 +11:00
kvm 3.19 changes for KVM: 2014-12-18 16:05:28 -08:00
lib Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2014-12-12 10:08:06 -08:00
math-emu
mm mm/debug-pagealloc: make debug-pagealloc boottime configurable 2014-12-13 12:42:48 -08:00
net PPC: bpf_jit_comp: Unify BPF_MOD | BPF_X and BPF_DIV | BPF_X 2014-11-18 13:20:09 -05:00
oprofile powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
perf power/perf/hv-24x7: Use kmem_cache_free() instead of kfree 2014-12-12 16:06:13 +11:00
platforms powernv: Fix OPAL tracepoint code 2015-01-12 16:40:02 +11:00
sysdev Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
xmon powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
Kconfig gcov: enable GCOV_PROFILE_ALL from ARCH Kconfigs 2014-12-13 12:42:51 -08:00
Kconfig.debug Patch queue for ppc - 2014-08-01 2014-08-05 09:58:11 +02:00
Makefile powerpc: Add POWER8 CPU selection 2014-09-25 23:14:49 +10:00
relocs_check.pl