diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2007-10-11 16:11:12 -0400 |
---|---|---|
committer | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2007-10-11 16:11:12 -0400 |
commit | 523b44cff279c42c79f7bda709e2fefc30f20a59 (patch) | |
tree | 544c308d3e5e397b5b101968d617185e4cfdb291 /arch/s390/kernel/entry64.S | |
parent | 10cd706d180b62a61aace5b440247c8785026ac1 (diff) |
lockdep: s390: connect the sysexit hook
Run the lockdep_sys_exit hook before returning to user space.
Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/s390/kernel/entry64.S')
-rw-r--r-- | arch/s390/kernel/entry64.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index 9c0d5cc8269d..05e26d1fdf40 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S | |||
@@ -66,9 +66,14 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK | _TIF_NEED_RESCHED | \ | |||
66 | .macro TRACE_IRQS_OFF | 66 | .macro TRACE_IRQS_OFF |
67 | brasl %r14,trace_hardirqs_off | 67 | brasl %r14,trace_hardirqs_off |
68 | .endm | 68 | .endm |
69 | |||
70 | .macro LOCKDEP_SYS_EXIT | ||
71 | brasl %r14,lockdep_sys_exit | ||
72 | .endm | ||
69 | #else | 73 | #else |
70 | #define TRACE_IRQS_ON | 74 | #define TRACE_IRQS_ON |
71 | #define TRACE_IRQS_OFF | 75 | #define TRACE_IRQS_OFF |
76 | #define LOCKDEP_SYS_EXIT | ||
72 | #endif | 77 | #endif |
73 | 78 | ||
74 | .macro STORE_TIMER lc_offset | 79 | .macro STORE_TIMER lc_offset |
@@ -255,6 +260,7 @@ sysc_return: | |||
255 | jno sysc_leave | 260 | jno sysc_leave |
256 | tm __TI_flags+7(%r9),_TIF_WORK_SVC | 261 | tm __TI_flags+7(%r9),_TIF_WORK_SVC |
257 | jnz sysc_work # there is work to do (signals etc.) | 262 | jnz sysc_work # there is work to do (signals etc.) |
263 | LOCKDEP_SYS_EXIT | ||
258 | sysc_leave: | 264 | sysc_leave: |
259 | RESTORE_ALL __LC_RETURN_PSW,1 | 265 | RESTORE_ALL __LC_RETURN_PSW,1 |
260 | 266 | ||
@@ -278,6 +284,7 @@ sysc_work: | |||
278 | jo sysc_restart | 284 | jo sysc_restart |
279 | tm __TI_flags+7(%r9),_TIF_SINGLE_STEP | 285 | tm __TI_flags+7(%r9),_TIF_SINGLE_STEP |
280 | jo sysc_singlestep | 286 | jo sysc_singlestep |
287 | LOCKDEP_SYS_EXIT | ||
281 | j sysc_leave | 288 | j sysc_leave |
282 | 289 | ||
283 | # | 290 | # |
@@ -558,6 +565,7 @@ io_return: | |||
558 | #endif | 565 | #endif |
559 | tm __TI_flags+7(%r9),_TIF_WORK_INT | 566 | tm __TI_flags+7(%r9),_TIF_WORK_INT |
560 | jnz io_work # there is work to do (signals etc.) | 567 | jnz io_work # there is work to do (signals etc.) |
568 | LOCKDEP_SYS_EXIT | ||
561 | io_leave: | 569 | io_leave: |
562 | RESTORE_ALL __LC_RETURN_PSW,0 | 570 | RESTORE_ALL __LC_RETURN_PSW,0 |
563 | io_done: | 571 | io_done: |
@@ -605,6 +613,7 @@ io_work_loop: | |||
605 | jo io_reschedule | 613 | jo io_reschedule |
606 | tm __TI_flags+7(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK) | 614 | tm __TI_flags+7(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK) |
607 | jnz io_sigpending | 615 | jnz io_sigpending |
616 | LOCKDEP_SYS_EXIT | ||
608 | j io_leave | 617 | j io_leave |
609 | 618 | ||
610 | # | 619 | # |