211
211
/* Suspend/resume support: derived from arch/arm/mach-s5pv210/sleep.S */
212
212
.globl cpu_v7_suspend_size
213
.equ cpu_v7_suspend_size, 4 * 8
213
.equ cpu_v7_suspend_size, 4 * 9
214
214
#ifdef CONFIG_PM_SLEEP
215
215
ENTRY(cpu_v7_do_suspend)
216
216
stmfd sp!, {r4 - r11, lr}
217
217
mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID
218
218
mrc p15, 0, r5, c13, c0, 1 @ Context ID
219
mrc p15, 0, r6, c13, c0, 3 @ User r/o thread ID
219
221
mrc p15, 0, r6, c3, c0, 0 @ Domain ID
220
222
mrc p15, 0, r7, c2, c0, 0 @ TTB 0
221
223
mrc p15, 0, r8, c2, c0, 1 @ TTB 1
222
224
mrc p15, 0, r9, c1, c0, 0 @ Control register
223
225
mrc p15, 0, r10, c1, c0, 1 @ Auxiliary control register
224
226
mrc p15, 0, r11, c1, c0, 2 @ Co-processor access control
226
228
ldmfd sp!, {r4 - r11, pc}
227
229
ENDPROC(cpu_v7_do_suspend)
231
233
mcr p15, 0, ip, c8, c7, 0 @ invalidate TLBs
232
234
mcr p15, 0, ip, c7, c5, 0 @ invalidate I cache
234
236
mcr p15, 0, r4, c13, c0, 0 @ FCSE/PID
235
237
mcr p15, 0, r5, c13, c0, 1 @ Context ID
238
mcr p15, 0, r6, c13, c0, 3 @ User r/o thread ID
236
240
mcr p15, 0, r6, c3, c0, 0 @ Domain ID
237
241
mcr p15, 0, r7, c2, c0, 0 @ TTB 0
238
242
mcr p15, 0, r8, c2, c0, 1 @ TTB 1
239
243
mcr p15, 0, ip, c2, c0, 2 @ TTB control register
240
mcr p15, 0, r10, c1, c0, 1 @ Auxillary control register
244
mcr p15, 0, r10, c1, c0, 1 @ Auxiliary control register
241
245
mcr p15, 0, r11, c1, c0, 2 @ Co-processor access control
242
246
ldr r4, =PRRR @ PRRR
243
247
ldr r5, =NMRR @ NMRR
368
372
mcr p15, 0, r10, c2, c0, 2 @ TTB control register
369
373
ALT_SMP(orr r4, r4, #TTB_FLAGS_SMP)
370
374
ALT_UP(orr r4, r4, #TTB_FLAGS_UP)
371
mcr p15, 0, r4, c2, c0, 1 @ load TTB1
375
ALT_SMP(orr r8, r8, #TTB_FLAGS_SMP)
376
ALT_UP(orr r8, r8, #TTB_FLAGS_UP)
377
mcr p15, 0, r8, c2, c0, 1 @ load TTB1
372
378
ldr r5, =PRRR @ PRRR
373
379
ldr r6, =NMRR @ NMRR
374
380
mcr p15, 0, r5, c10, c2, 0 @ write PRRR