msm: idle-v7.S: Warmboot support for NR_CPUS >= 2

The change supports save/restore of processor state during warmboot when
the number of cores is greater than 2. The current version supports two
cores only.

Change-Id: Icd23f10cde00a5dbe0abc1a76f1555f8834053a3
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
This commit is contained in:
Mahesh Sivasubramanian
2011-12-15 14:12:31 -07:00
parent 8934f0f139
commit 0ff37e7a2f

View File

@@ -49,7 +49,9 @@ ENTRY(msm_pm_collapse)
#if (NR_CPUS >= 2) #if (NR_CPUS >= 2)
mrc p15, 0, r1, c0, c0, 5 /* MPIDR */ mrc p15, 0, r1, c0, c0, 5 /* MPIDR */
ands r1, r1, #15 /* What CPU am I */ ands r1, r1, #15 /* What CPU am I */
addne r0, r0, #CPU_SAVED_STATE_SIZE mov r2, #CPU_SAVED_STATE_SIZE
mul r1, r1, r2
add r0, r0, r1
#endif #endif
stmia r0!, {r4-r14} stmia r0!, {r4-r14}
@@ -149,15 +151,18 @@ ENTRY(msm_pm_collapse_exit)
mov r1, #'A' mov r1, #'A'
str r1, [r0, #0x00C] str r1, [r0, #0x00C]
#endif #endif
ldr r1, =saved_state_end ldr r1, =saved_state
ldr r2, =msm_pm_collapse_exit ldr r2, =msm_pm_collapse_exit
adr r3, msm_pm_collapse_exit adr r3, msm_pm_collapse_exit
add r1, r1, r3 add r1, r1, r3
sub r1, r1, r2 sub r1, r1, r2
add r1, r1, #CPU_SAVED_STATE_SIZE
#if (NR_CPUS >= 2) #if (NR_CPUS >= 2)
mrc p15, 0, r2, c0, c0, 5 /* MPIDR */ mrc p15, 0, r2, c0, c0, 5 /* MPIDR */
ands r2, r2, #15 /* What CPU am I */ ands r2, r2, #15 /* What CPU am I */
subeq r1, r1, #CPU_SAVED_STATE_SIZE mov r3, #CPU_SAVED_STATE_SIZE
mul r2, r2, r3
add r1, r1, r2
#endif #endif
#ifdef CONFIG_MSM_CPU_AVS #ifdef CONFIG_MSM_CPU_AVS
@@ -268,11 +273,7 @@ msm_pm_pc_pgd:
.long 0x0 .long 0x0
saved_state: saved_state:
#if (NR_CPUS >= 2) .space CPU_SAVED_STATE_SIZE * NR_CPUS
.space CPU_SAVED_STATE_SIZE * 2 /* This code only supports 2 cores */
#else
.space CPU_SAVED_STATE_SIZE
#endif
saved_state_end: saved_state_end:
msm_pm_boot_vector: msm_pm_boot_vector: