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:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user