Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/s390/kernel/base.S
10817 views
1
/*
2
* arch/s390/kernel/base.S
3
*
4
* Copyright IBM Corp. 2006,2007
5
* Author(s): Heiko Carstens <[email protected]>
6
* Michael Holzheu <[email protected]>
7
*/
8
9
#include <asm/asm-offsets.h>
10
#include <asm/ptrace.h>
11
12
#ifdef CONFIG_64BIT
13
14
.globl s390_base_mcck_handler
15
s390_base_mcck_handler:
16
basr %r13,0
17
0: 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
24
1: la %r1,4095
25
lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1)
26
lpswe __LC_MCK_OLD_PSW
27
28
.section .bss
29
.globl s390_base_mcck_handler_fn
30
s390_base_mcck_handler_fn:
31
.quad 0
32
.previous
33
34
.globl s390_base_ext_handler
35
s390_base_ext_handler:
36
stmg %r0,%r15,__LC_SAVE_AREA
37
basr %r13,0
38
0: 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
44
1: 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
49
.globl s390_base_ext_handler_fn
50
s390_base_ext_handler_fn:
51
.quad 0
52
.previous
53
54
.globl s390_base_pgm_handler
55
s390_base_pgm_handler:
56
stmg %r0,%r15,__LC_SAVE_AREA
57
basr %r13,0
58
0: 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
66
1: lpswe disabled_wait_psw-0b(%r13)
67
68
.align 8
69
disabled_wait_psw:
70
.quad 0x0002000180000000,0x0000000000000000 + s390_base_pgm_handler
71
72
.section .bss
73
.globl s390_base_pgm_handler_fn
74
s390_base_pgm_handler_fn:
75
.quad 0
76
.previous
77
78
#else /* CONFIG_64BIT */
79
80
.globl s390_base_mcck_handler
81
s390_base_mcck_handler:
82
basr %r13,0
83
0: 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
90
1: lm %r0,%r15,__LC_GPREGS_SAVE_AREA
91
lpsw __LC_MCK_OLD_PSW
92
93
2: .long s390_base_mcck_handler_fn
94
95
.section .bss
96
.globl s390_base_mcck_handler_fn
97
s390_base_mcck_handler_fn:
98
.long 0
99
.previous
100
101
.globl s390_base_ext_handler
102
s390_base_ext_handler:
103
stm %r0,%r15,__LC_SAVE_AREA
104
basr %r13,0
105
0: 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
111
1: 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
115
2: .long s390_base_ext_handler_fn
116
117
.section .bss
118
.globl s390_base_ext_handler_fn
119
s390_base_ext_handler_fn:
120
.long 0
121
.previous
122
123
.globl s390_base_pgm_handler
124
s390_base_pgm_handler:
125
stm %r0,%r15,__LC_SAVE_AREA
126
basr %r13,0
127
0: 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
136
1: lpsw disabled_wait_psw-0b(%r13)
137
138
2: .long s390_base_pgm_handler_fn
139
140
disabled_wait_psw:
141
.align 8
142
.long 0x000a0000,0x00000000 + s390_base_pgm_handler
143
144
.section .bss
145
.globl s390_base_pgm_handler_fn
146
s390_base_pgm_handler_fn:
147
.long 0
148
.previous
149
150
#endif /* CONFIG_64BIT */
151
152