diff options
-rw-r--r-- | arch/arm/mm/proc-v6.S | 33 | ||||
-rw-r--r-- | arch/arm/mm/proc-v7.S | 13 |
2 files changed, 22 insertions, 24 deletions
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 2e27b467c6a6..d061d2fa5506 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -128,19 +128,18 @@ ENTRY(cpu_v6_set_pte_ext) | |||
128 | 128 | ||
129 | /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */ | 129 | /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */ |
130 | .globl cpu_v6_suspend_size | 130 | .globl cpu_v6_suspend_size |
131 | .equ cpu_v6_suspend_size, 4 * 7 | 131 | .equ cpu_v6_suspend_size, 4 * 6 |
132 | #ifdef CONFIG_PM_SLEEP | 132 | #ifdef CONFIG_PM_SLEEP |
133 | ENTRY(cpu_v6_do_suspend) | 133 | ENTRY(cpu_v6_do_suspend) |
134 | stmfd sp!, {r4 - r10, lr} | 134 | stmfd sp!, {r4 - r9, lr} |
135 | mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID | 135 | mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID |
136 | mrc p15, 0, r5, c13, c0, 1 @ Context ID | 136 | mrc p15, 0, r5, c3, c0, 0 @ Domain ID |
137 | mrc p15, 0, r6, c3, c0, 0 @ Domain ID | 137 | mrc p15, 0, r6, c2, c0, 1 @ Translation table base 1 |
138 | mrc p15, 0, r7, c2, c0, 1 @ Translation table base 1 | 138 | mrc p15, 0, r7, c1, c0, 1 @ auxiliary control register |
139 | mrc p15, 0, r8, c1, c0, 1 @ auxiliary control register | 139 | mrc p15, 0, r8, c1, c0, 2 @ co-processor access control |
140 | mrc p15, 0, r9, c1, c0, 2 @ co-processor access control | 140 | mrc p15, 0, r9, c1, c0, 0 @ control register |
141 | mrc p15, 0, r10, c1, c0, 0 @ control register | 141 | stmia r0, {r4 - r9} |
142 | stmia r0, {r4 - r10} | 142 | ldmfd sp!, {r4- r9, pc} |
143 | ldmfd sp!, {r4- r10, pc} | ||
144 | ENDPROC(cpu_v6_do_suspend) | 143 | ENDPROC(cpu_v6_do_suspend) |
145 | 144 | ||
146 | ENTRY(cpu_v6_do_resume) | 145 | ENTRY(cpu_v6_do_resume) |
@@ -149,19 +148,19 @@ ENTRY(cpu_v6_do_resume) | |||
149 | mcr p15, 0, ip, c7, c5, 0 @ invalidate I cache | 148 | mcr p15, 0, ip, c7, c5, 0 @ invalidate I cache |
150 | mcr p15, 0, ip, c7, c15, 0 @ clean+invalidate cache | 149 | mcr p15, 0, ip, c7, c15, 0 @ clean+invalidate cache |
151 | mcr p15, 0, ip, c7, c10, 4 @ drain write buffer | 150 | mcr p15, 0, ip, c7, c10, 4 @ drain write buffer |
152 | ldmia r0, {r4 - r10} | 151 | mcr p15, 0, ip, c13, c0, 1 @ set reserved context ID |
152 | ldmia r0, {r4 - r9} | ||
153 | mcr p15, 0, r4, c13, c0, 0 @ FCSE/PID | 153 | mcr p15, 0, r4, c13, c0, 0 @ FCSE/PID |
154 | mcr p15, 0, r5, c13, c0, 1 @ Context ID | 154 | mcr p15, 0, r5, c3, c0, 0 @ Domain ID |
155 | mcr p15, 0, r6, c3, c0, 0 @ Domain ID | ||
156 | ALT_SMP(orr r1, r1, #TTB_FLAGS_SMP) | 155 | ALT_SMP(orr r1, r1, #TTB_FLAGS_SMP) |
157 | ALT_UP(orr r1, r1, #TTB_FLAGS_UP) | 156 | ALT_UP(orr r1, r1, #TTB_FLAGS_UP) |
158 | mcr p15, 0, r1, c2, c0, 0 @ Translation table base 0 | 157 | mcr p15, 0, r1, c2, c0, 0 @ Translation table base 0 |
159 | mcr p15, 0, r7, c2, c0, 1 @ Translation table base 1 | 158 | mcr p15, 0, r6, c2, c0, 1 @ Translation table base 1 |
160 | mcr p15, 0, r8, c1, c0, 1 @ auxiliary control register | 159 | mcr p15, 0, r7, c1, c0, 1 @ auxiliary control register |
161 | mcr p15, 0, r9, c1, c0, 2 @ co-processor access control | 160 | mcr p15, 0, r8, c1, c0, 2 @ co-processor access control |
162 | mcr p15, 0, ip, c2, c0, 2 @ TTB control register | 161 | mcr p15, 0, ip, c2, c0, 2 @ TTB control register |
163 | mcr p15, 0, ip, c7, c5, 4 @ ISB | 162 | mcr p15, 0, ip, c7, c5, 4 @ ISB |
164 | mov r0, r10 @ control register | 163 | mov r0, r9 @ control register |
165 | b cpu_resume_mmu | 164 | b cpu_resume_mmu |
166 | ENDPROC(cpu_v6_do_resume) | 165 | ENDPROC(cpu_v6_do_resume) |
167 | #endif | 166 | #endif |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index b56004f90d93..6af366ce0165 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -217,14 +217,13 @@ ENDPROC(cpu_v7_set_pte_ext) | |||
217 | 217 | ||
218 | /* Suspend/resume support: derived from arch/arm/mach-s5pv210/sleep.S */ | 218 | /* Suspend/resume support: derived from arch/arm/mach-s5pv210/sleep.S */ |
219 | .globl cpu_v7_suspend_size | 219 | .globl cpu_v7_suspend_size |
220 | .equ cpu_v7_suspend_size, 4 * 8 | 220 | .equ cpu_v7_suspend_size, 4 * 7 |
221 | #ifdef CONFIG_PM_SLEEP | 221 | #ifdef CONFIG_PM_SLEEP |
222 | ENTRY(cpu_v7_do_suspend) | 222 | ENTRY(cpu_v7_do_suspend) |
223 | stmfd sp!, {r4 - r10, lr} | 223 | stmfd sp!, {r4 - r10, lr} |
224 | mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID | 224 | mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID |
225 | mrc p15, 0, r5, c13, c0, 1 @ Context ID | 225 | mrc p15, 0, r5, c13, c0, 3 @ User r/o thread ID |
226 | mrc p15, 0, r6, c13, c0, 3 @ User r/o thread ID | 226 | stmia r0!, {r4 - r5} |
227 | stmia r0!, {r4 - r6} | ||
228 | mrc p15, 0, r6, c3, c0, 0 @ Domain ID | 227 | mrc p15, 0, r6, c3, c0, 0 @ Domain ID |
229 | mrc p15, 0, r7, c2, c0, 1 @ TTB 1 | 228 | mrc p15, 0, r7, c2, c0, 1 @ TTB 1 |
230 | mrc p15, 0, r8, c1, c0, 0 @ Control register | 229 | mrc p15, 0, r8, c1, c0, 0 @ Control register |
@@ -238,10 +237,10 @@ ENTRY(cpu_v7_do_resume) | |||
238 | mov ip, #0 | 237 | mov ip, #0 |
239 | mcr p15, 0, ip, c8, c7, 0 @ invalidate TLBs | 238 | mcr p15, 0, ip, c8, c7, 0 @ invalidate TLBs |
240 | mcr p15, 0, ip, c7, c5, 0 @ invalidate I cache | 239 | mcr p15, 0, ip, c7, c5, 0 @ invalidate I cache |
241 | ldmia r0!, {r4 - r6} | 240 | mcr p15, 0, ip, c13, c0, 1 @ set reserved context ID |
241 | ldmia r0!, {r4 - r5} | ||
242 | mcr p15, 0, r4, c13, c0, 0 @ FCSE/PID | 242 | mcr p15, 0, r4, c13, c0, 0 @ FCSE/PID |
243 | mcr p15, 0, r5, c13, c0, 1 @ Context ID | 243 | mcr p15, 0, r5, c13, c0, 3 @ User r/o thread ID |
244 | mcr p15, 0, r6, c13, c0, 3 @ User r/o thread ID | ||
245 | ldmia r0, {r6 - r10} | 244 | ldmia r0, {r6 - r10} |
246 | mcr p15, 0, r6, c3, c0, 0 @ Domain ID | 245 | mcr p15, 0, r6, c3, c0, 0 @ Domain ID |
247 | ALT_SMP(orr r1, r1, #TTB_FLAGS_SMP) | 246 | ALT_SMP(orr r1, r1, #TTB_FLAGS_SMP) |