diff options
| -rw-r--r-- | arch/s390/kernel/swsusp_asm64.S | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S index fe927d0bc20b..008e35af339f 100644 --- a/arch/s390/kernel/swsusp_asm64.S +++ b/arch/s390/kernel/swsusp_asm64.S | |||
| @@ -69,8 +69,21 @@ swsusp_arch_suspend: | |||
| 69 | stmg %r0,%r15,0x280(%r1) /* store general registers */ | 69 | stmg %r0,%r15,0x280(%r1) /* store general registers */ |
| 70 | 70 | ||
| 71 | stpt 0x328(%r1) /* store timer */ | 71 | stpt 0x328(%r1) /* store timer */ |
| 72 | stck __SF_EMPTY(%r15) /* store clock */ | ||
| 72 | stckc 0x330(%r1) /* store clock comparator */ | 73 | stckc 0x330(%r1) /* store clock comparator */ |
| 73 | 74 | ||
| 75 | /* Update cputime accounting before going to sleep */ | ||
| 76 | lg %r0,__LC_LAST_UPDATE_TIMER | ||
| 77 | slg %r0,0x328(%r1) | ||
| 78 | alg %r0,__LC_SYSTEM_TIMER | ||
| 79 | stg %r0,__LC_SYSTEM_TIMER | ||
| 80 | mvc __LC_LAST_UPDATE_TIMER(8),0x328(%r1) | ||
| 81 | lg %r0,__LC_LAST_UPDATE_CLOCK | ||
| 82 | slg %r0,__SF_EMPTY(%r15) | ||
| 83 | alg %r0,__LC_STEAL_TIMER | ||
| 84 | stg %r0,__LC_STEAL_TIMER | ||
| 85 | mvc __LC_LAST_UPDATE_CLOCK(8),__SF_EMPTY(%r15) | ||
| 86 | |||
| 74 | /* Activate DAT */ | 87 | /* Activate DAT */ |
| 75 | stosm __SF_EMPTY(%r15),0x04 | 88 | stosm __SF_EMPTY(%r15),0x04 |
| 76 | 89 | ||
| @@ -200,8 +213,11 @@ restart_suspend: | |||
| 200 | 213 | ||
| 201 | restore_registers: | 214 | restore_registers: |
| 202 | /* Restore registers */ | 215 | /* Restore registers */ |
| 203 | lghi %r13,0x1000 /* %r1 = pointer to save arae */ | 216 | lghi %r13,0x1000 /* %r1 = pointer to save area */ |
| 204 | 217 | ||
| 218 | /* Ignore time spent in suspended state. */ | ||
| 219 | llgf %r1,0x318(%r13) | ||
| 220 | stck __LC_LAST_UPDATE_CLOCK(%r1) | ||
| 205 | spt 0x328(%r13) /* reprogram timer */ | 221 | spt 0x328(%r13) /* reprogram timer */ |
| 206 | //sckc 0x330(%r13) /* set clock comparator */ | 222 | //sckc 0x330(%r13) /* set clock comparator */ |
| 207 | 223 | ||
| @@ -229,9 +245,6 @@ restore_registers: | |||
| 229 | /* Load old stack */ | 245 | /* Load old stack */ |
| 230 | lg %r15,0x2f8(%r13) | 246 | lg %r15,0x2f8(%r13) |
| 231 | 247 | ||
| 232 | /* Pointer to save area */ | ||
| 233 | lghi %r13,0x1000 | ||
| 234 | |||
| 235 | /* Restore prefix register */ | 248 | /* Restore prefix register */ |
| 236 | spx 0x318(%r13) | 249 | spx 0x318(%r13) |
| 237 | 250 | ||
