aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/head.S')
-rw-r--r--arch/ia64/kernel/head.S10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index 0d535d65eea6..8d3a9291b47f 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -95,6 +95,10 @@ RestRR: \
95 add _idx1=1,_idx1;; \ 95 add _idx1=1,_idx1;; \
96 br.cloop.sptk.few RestRR 96 br.cloop.sptk.few RestRR
97 97
98#define SET_AREA_FOR_BOOTING_CPU(reg1, reg2) \
99 movl reg1=sal_state_for_booting_cpu;; \
100 ld8 reg2=[reg1];;
101
98/* 102/*
99 * Adjust region registers saved before starting to save 103 * Adjust region registers saved before starting to save
100 * break regs and rest of the states that need to be preserved. 104 * break regs and rest of the states that need to be preserved.
@@ -150,7 +154,8 @@ RestRR: \
150 stf.spill.nta [_reg1]=f31,16;; 154 stf.spill.nta [_reg1]=f31,16;;
151 155
152#else 156#else
153#define SAL_TO_OS_BOOT_HANDOFF_STATE_SAVE(a1,a2) 157#define SET_AREA_FOR_BOOTING_CPU(a1, a2)
158#define SAL_TO_OS_BOOT_HANDOFF_STATE_SAVE(a1,a2, a3)
154#define SAVE_REGION_REGS(_tmp, _r0, _r1, _r2, _r3, _r4, _r5, _r6, _r7) 159#define SAVE_REGION_REGS(_tmp, _r0, _r1, _r2, _r3, _r4, _r5, _r6, _r7)
155#define STORE_REGION_REGS(ptr, _r0, _r1, _r2, _r3, _r4, _r5, _r6, _r7) 160#define STORE_REGION_REGS(ptr, _r0, _r1, _r2, _r3, _r4, _r5, _r6, _r7)
156#endif 161#endif
@@ -260,8 +265,7 @@ start_ap:
260 ;; 265 ;;
2611: // now we are in virtual mode 2661: // now we are in virtual mode
262 267
263 movl r2=sal_state_for_booting_cpu;; 268 SET_AREA_FOR_BOOTING_CPU(r2, r16);
264 ld8 r16=[r2];;
265 269
266 STORE_REGION_REGS(r16, r8,r9,r10,r11,r12,r13,r14,r15); 270 STORE_REGION_REGS(r16, r8,r9,r10,r11,r12,r13,r14,r15);
267 SAL_TO_OS_BOOT_HANDOFF_STATE_SAVE(r16,r17,r25) 271 SAL_TO_OS_BOOT_HANDOFF_STATE_SAVE(r16,r17,r25)