Merge master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes
[sfrench/cifs-2.6.git] / arch / s390 / kernel / reset.S
1 /*
2  *  arch/s390/kernel/reset.S
3  *
4  *    Copyright (C) IBM Corp. 2006
5  *    Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6  *               Michael Holzheu <holzheu@de.ibm.com>
7  */
8
9 #include <asm/ptrace.h>
10 #include <asm/lowcore.h>
11
12 #ifdef CONFIG_64BIT
13
14         .globl  reset_mcck_handler
15 reset_mcck_handler:
16         basr    %r13,0
17 0:      lg      %r15,__LC_PANIC_STACK   # load panic stack
18         aghi    %r15,-STACK_FRAME_OVERHEAD
19         lg      %r1,s390_reset_mcck_handler-0b(%r13)
20         ltgr    %r1,%r1
21         jz      1f
22         basr    %r14,%r1
23 1:      la      %r1,4095
24         lmg     %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1)
25         lpswe   __LC_MCK_OLD_PSW
26
27         .globl  s390_reset_mcck_handler
28 s390_reset_mcck_handler:
29         .quad   0
30
31         .globl  reset_pgm_handler
32 reset_pgm_handler:
33         stmg    %r0,%r15,__LC_SAVE_AREA
34         basr    %r13,0
35 0:      lg      %r15,__LC_PANIC_STACK   # load panic stack
36         aghi    %r15,-STACK_FRAME_OVERHEAD
37         lg      %r1,s390_reset_pgm_handler-0b(%r13)
38         ltgr    %r1,%r1
39         jz      1f
40         basr    %r14,%r1
41         lmg     %r0,%r15,__LC_SAVE_AREA
42         lpswe   __LC_PGM_OLD_PSW
43 1:      lpswe   disabled_wait_psw-0b(%r13)
44         .globl s390_reset_pgm_handler
45 s390_reset_pgm_handler:
46         .quad   0
47         .align  8
48 disabled_wait_psw:
49         .quad   0x0002000180000000,0x0000000000000000 + reset_pgm_handler
50
51 #else /* CONFIG_64BIT */
52
53         .globl  reset_mcck_handler
54 reset_mcck_handler:
55         basr    %r13,0
56 0:      l       %r15,__LC_PANIC_STACK   # load panic stack
57         ahi     %r15,-STACK_FRAME_OVERHEAD
58         l       %r1,s390_reset_mcck_handler-0b(%r13)
59         ltr     %r1,%r1
60         jz      1f
61         basr    %r14,%r1
62 1:      lm      %r0,%r15,__LC_GPREGS_SAVE_AREA
63         lpsw    __LC_MCK_OLD_PSW
64
65         .globl  s390_reset_mcck_handler
66 s390_reset_mcck_handler:
67         .long   0
68
69         .globl  reset_pgm_handler
70 reset_pgm_handler:
71         stm     %r0,%r15,__LC_SAVE_AREA
72         basr    %r13,0
73 0:      l       %r15,__LC_PANIC_STACK   # load panic stack
74         ahi     %r15,-STACK_FRAME_OVERHEAD
75         l       %r1,s390_reset_pgm_handler-0b(%r13)
76         ltr     %r1,%r1
77         jz      1f
78         basr    %r14,%r1
79         lm      %r0,%r15,__LC_SAVE_AREA
80         lpsw    __LC_PGM_OLD_PSW
81
82 1:      lpsw    disabled_wait_psw-0b(%r13)
83         .globl  s390_reset_pgm_handler
84 s390_reset_pgm_handler:
85         .long   0
86 disabled_wait_psw:
87         .align 8
88         .long   0x000a0000,0x00000000 + reset_pgm_handler
89
90 #endif /* CONFIG_64BIT */