summaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/head.S
diff options
context:
space:
mode:
authorTony Luck <tony.luck@intel.com>2008-09-30 01:39:19 +0200
committerTony Luck <tony.luck@intel.com>2008-09-30 01:39:19 +0200
commitc459ce8b5a7d933a3bcf6915ab17ac1e036e2ac4 (patch)
treeadef9c1bd10dbb3eea5f1be8563db7e6adf3f3e5 /arch/ia64/kernel/head.S
parentLinux 2.6.27-rc8 (diff)
downloadlinux-c459ce8b5a7d933a3bcf6915ab17ac1e036e2ac4.tar.xz
linux-c459ce8b5a7d933a3bcf6915ab17ac1e036e2ac4.zip
[IA64] Put the space for cpu0 per-cpu area into .data section
Initial fix for making sure that we can access percpu variables in all C code (commit: 10617bbe84628eb18ab5f723d3ba35005adde143) inadvertantly allocated the memory in the "percpu" section of the vmlinux ELF executable. This confused kexec/dump. Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/kernel/head.S')
-rw-r--r--arch/ia64/kernel/head.S9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index 8bdea8eb62e3..66e491d8baac 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -367,16 +367,17 @@ start_ap:
;;
#else
(isAP) br.few 2f
- mov r20=r19
- sub r19=r19,r18
+ movl r20=__cpu0_per_cpu
;;
shr.u r18=r18,3
1:
- ld8 r21=[r20],8;;
- st8[r19]=r21,8
+ ld8 r21=[r19],8;;
+ st8[r20]=r21,8
adds r18=-1,r18;;
cmp4.lt p7,p6=0,r18
(p7) br.cond.dptk.few 1b
+ mov r19=r20
+ ;;
2:
#endif
tpa r19=r19