diff options
Diffstat (limited to 'arch/s390/kernel/swsusp_asm64.S')
-rw-r--r-- | arch/s390/kernel/swsusp_asm64.S | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S index dd70ef046058..d4ca4e0617b5 100644 --- a/arch/s390/kernel/swsusp_asm64.S +++ b/arch/s390/kernel/swsusp_asm64.S | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <asm/ptrace.h> | 12 | #include <asm/ptrace.h> |
13 | #include <asm/thread_info.h> | 13 | #include <asm/thread_info.h> |
14 | #include <asm/asm-offsets.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/sigp.h> | ||
15 | 16 | ||
16 | /* | 17 | /* |
17 | * Save register context in absolute 0 lowcore and call swsusp_save() to | 18 | * Save register context in absolute 0 lowcore and call swsusp_save() to |
@@ -163,7 +164,7 @@ ENTRY(swsusp_arch_resume) | |||
163 | diag %r0,%r0,0x308 | 164 | diag %r0,%r0,0x308 |
164 | restart_entry: | 165 | restart_entry: |
165 | lhi %r1,1 | 166 | lhi %r1,1 |
166 | sigp %r1,%r0,0x12 | 167 | sigp %r1,%r0,SIGP_SET_ARCHITECTURE |
167 | sam64 | 168 | sam64 |
168 | larl %r1,.Lnew_pgm_check_psw | 169 | larl %r1,.Lnew_pgm_check_psw |
169 | lpswe 0(%r1) | 170 | lpswe 0(%r1) |
@@ -179,7 +180,7 @@ pgm_check_entry: | |||
179 | larl %r4,.Lrestart_suspend_psw /* Set new restart PSW */ | 180 | larl %r4,.Lrestart_suspend_psw /* Set new restart PSW */ |
180 | mvc __LC_RST_NEW_PSW(16,%r0),0(%r4) | 181 | mvc __LC_RST_NEW_PSW(16,%r0),0(%r4) |
181 | 3: | 182 | 3: |
182 | sigp %r9,%r1,11 /* sigp initial cpu reset */ | 183 | sigp %r9,%r1,SIGP_INITIAL_CPU_RESET /* sigp initial cpu reset */ |
183 | brc 8,4f /* accepted */ | 184 | brc 8,4f /* accepted */ |
184 | brc 2,3b /* busy, try again */ | 185 | brc 2,3b /* busy, try again */ |
185 | 186 | ||
@@ -190,16 +191,16 @@ pgm_check_entry: | |||
190 | larl %r3,_sclp_print_early | 191 | larl %r3,_sclp_print_early |
191 | lghi %r1,0 | 192 | lghi %r1,0 |
192 | sam31 | 193 | sam31 |
193 | sigp %r1,%r0,0x12 | 194 | sigp %r1,%r0,SIGP_SET_ARCHITECTURE |
194 | basr %r14,%r3 | 195 | basr %r14,%r3 |
195 | larl %r3,.Ldisabled_wait_31 | 196 | larl %r3,.Ldisabled_wait_31 |
196 | lpsw 0(%r3) | 197 | lpsw 0(%r3) |
197 | 4: | 198 | 4: |
198 | /* Switch to suspend CPU */ | 199 | /* Switch to suspend CPU */ |
199 | sigp %r9,%r1,6 /* sigp restart to suspend CPU */ | 200 | sigp %r9,%r1,SIGP_RESTART /* sigp restart to suspend CPU */ |
200 | brc 2,4b /* busy, try again */ | 201 | brc 2,4b /* busy, try again */ |
201 | 5: | 202 | 5: |
202 | sigp %r9,%r2,5 /* sigp stop to current resume CPU */ | 203 | sigp %r9,%r2,SIGP_STOP /* sigp stop to current resume CPU */ |
203 | brc 2,5b /* busy, try again */ | 204 | brc 2,5b /* busy, try again */ |
204 | 6: j 6b | 205 | 6: j 6b |
205 | 206 | ||
@@ -207,7 +208,7 @@ restart_suspend: | |||
207 | larl %r1,.Lresume_cpu | 208 | larl %r1,.Lresume_cpu |
208 | llgh %r2,0(%r1) | 209 | llgh %r2,0(%r1) |
209 | 7: | 210 | 7: |
210 | sigp %r9,%r2,1 /* sigp sense, wait for resume CPU */ | 211 | sigp %r9,%r2,SIGP_SENSE /* sigp sense, wait for resume CPU */ |
211 | brc 8,7b /* accepted, status 0, still running */ | 212 | brc 8,7b /* accepted, status 0, still running */ |
212 | brc 2,7b /* busy, try again */ | 213 | brc 2,7b /* busy, try again */ |
213 | tmll %r9,0x40 /* Test if resume CPU is stopped */ | 214 | tmll %r9,0x40 /* Test if resume CPU is stopped */ |