blob: 209938c1dfc84c06ff94b2ddc6037d9738f6b457 [file] [log] [blame]
Heiko Carstensab14de62007-02-05 21:18:37 +01001/*
2 * arch/s390/kernel/base.S
3 *
4 * Copyright IBM Corp. 2006,2007
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 * Michael Holzheu <holzheu@de.ibm.com>
7 */
8
Jan Glauber144d6342011-07-24 10:48:19 +02009#include <linux/linkage.h>
Heiko Carstenscbb870c2010-02-26 22:37:43 +010010#include <asm/asm-offsets.h>
Heiko Carstensab14de62007-02-05 21:18:37 +010011#include <asm/ptrace.h>
Heiko Carstensab14de62007-02-05 21:18:37 +010012
13#ifdef CONFIG_64BIT
14
Jan Glauber144d6342011-07-24 10:48:19 +020015ENTRY(s390_base_mcck_handler)
Heiko Carstensab14de62007-02-05 21:18:37 +010016 basr %r13,0
170: lg %r15,__LC_PANIC_STACK # load panic stack
18 aghi %r15,-STACK_FRAME_OVERHEAD
19 larl %r1,s390_base_mcck_handler_fn
20 lg %r1,0(%r1)
21 ltgr %r1,%r1
22 jz 1f
23 basr %r14,%r1
241: la %r1,4095
25 lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1)
26 lpswe __LC_MCK_OLD_PSW
27
28 .section .bss
Jan Glauber144d6342011-07-24 10:48:19 +020029 .align 8
Heiko Carstensab14de62007-02-05 21:18:37 +010030 .globl s390_base_mcck_handler_fn
31s390_base_mcck_handler_fn:
32 .quad 0
33 .previous
34
Jan Glauber144d6342011-07-24 10:48:19 +020035ENTRY(s390_base_ext_handler)
Heiko Carstensab14de62007-02-05 21:18:37 +010036 stmg %r0,%r15,__LC_SAVE_AREA
37 basr %r13,0
380: aghi %r15,-STACK_FRAME_OVERHEAD
39 larl %r1,s390_base_ext_handler_fn
40 lg %r1,0(%r1)
41 ltgr %r1,%r1
42 jz 1f
43 basr %r14,%r1
441: lmg %r0,%r15,__LC_SAVE_AREA
45 ni __LC_EXT_OLD_PSW+1,0xfd # clear wait state bit
46 lpswe __LC_EXT_OLD_PSW
47
48 .section .bss
Jan Glauber144d6342011-07-24 10:48:19 +020049 .align 8
Heiko Carstensab14de62007-02-05 21:18:37 +010050 .globl s390_base_ext_handler_fn
51s390_base_ext_handler_fn:
52 .quad 0
53 .previous
54
Jan Glauber144d6342011-07-24 10:48:19 +020055ENTRY(s390_base_pgm_handler)
Heiko Carstensab14de62007-02-05 21:18:37 +010056 stmg %r0,%r15,__LC_SAVE_AREA
57 basr %r13,0
580: aghi %r15,-STACK_FRAME_OVERHEAD
59 larl %r1,s390_base_pgm_handler_fn
60 lg %r1,0(%r1)
61 ltgr %r1,%r1
62 jz 1f
63 basr %r14,%r1
64 lmg %r0,%r15,__LC_SAVE_AREA
65 lpswe __LC_PGM_OLD_PSW
661: lpswe disabled_wait_psw-0b(%r13)
67
68 .align 8
69disabled_wait_psw:
70 .quad 0x0002000180000000,0x0000000000000000 + s390_base_pgm_handler
71
72 .section .bss
Jan Glauber144d6342011-07-24 10:48:19 +020073 .align 8
Heiko Carstensab14de62007-02-05 21:18:37 +010074 .globl s390_base_pgm_handler_fn
75s390_base_pgm_handler_fn:
76 .quad 0
77 .previous
78
79#else /* CONFIG_64BIT */
80
Jan Glauber144d6342011-07-24 10:48:19 +020081ENTRY(s390_base_mcck_handler)
Heiko Carstensab14de62007-02-05 21:18:37 +010082 basr %r13,0
830: l %r15,__LC_PANIC_STACK # load panic stack
84 ahi %r15,-STACK_FRAME_OVERHEAD
85 l %r1,2f-0b(%r13)
86 l %r1,0(%r1)
87 ltr %r1,%r1
88 jz 1f
89 basr %r14,%r1
901: lm %r0,%r15,__LC_GPREGS_SAVE_AREA
91 lpsw __LC_MCK_OLD_PSW
92
932: .long s390_base_mcck_handler_fn
94
95 .section .bss
Jan Glauber144d6342011-07-24 10:48:19 +020096 .align 4
Heiko Carstensab14de62007-02-05 21:18:37 +010097 .globl s390_base_mcck_handler_fn
98s390_base_mcck_handler_fn:
99 .long 0
100 .previous
101
Jan Glauber144d6342011-07-24 10:48:19 +0200102ENTRY(s390_base_ext_handler)
Heiko Carstensab14de62007-02-05 21:18:37 +0100103 stm %r0,%r15,__LC_SAVE_AREA
104 basr %r13,0
1050: ahi %r15,-STACK_FRAME_OVERHEAD
106 l %r1,2f-0b(%r13)
107 l %r1,0(%r1)
108 ltr %r1,%r1
109 jz 1f
110 basr %r14,%r1
1111: lm %r0,%r15,__LC_SAVE_AREA
112 ni __LC_EXT_OLD_PSW+1,0xfd # clear wait state bit
113 lpsw __LC_EXT_OLD_PSW
114
1152: .long s390_base_ext_handler_fn
116
117 .section .bss
Jan Glauber144d6342011-07-24 10:48:19 +0200118 .align 4
Heiko Carstensab14de62007-02-05 21:18:37 +0100119 .globl s390_base_ext_handler_fn
120s390_base_ext_handler_fn:
121 .long 0
122 .previous
123
Jan Glauber144d6342011-07-24 10:48:19 +0200124ENTRY(s390_base_pgm_handler)
Heiko Carstensab14de62007-02-05 21:18:37 +0100125 stm %r0,%r15,__LC_SAVE_AREA
126 basr %r13,0
1270: ahi %r15,-STACK_FRAME_OVERHEAD
128 l %r1,2f-0b(%r13)
129 l %r1,0(%r1)
130 ltr %r1,%r1
131 jz 1f
132 basr %r14,%r1
133 lm %r0,%r15,__LC_SAVE_AREA
134 lpsw __LC_PGM_OLD_PSW
135
1361: lpsw disabled_wait_psw-0b(%r13)
137
1382: .long s390_base_pgm_handler_fn
139
140disabled_wait_psw:
141 .align 8
142 .long 0x000a0000,0x00000000 + s390_base_pgm_handler
143
144 .section .bss
Jan Glauber144d6342011-07-24 10:48:19 +0200145 .align 4
Heiko Carstensab14de62007-02-05 21:18:37 +0100146 .globl s390_base_pgm_handler_fn
147s390_base_pgm_handler_fn:
148 .long 0
149 .previous
150
151#endif /* CONFIG_64BIT */