Root/arch/s390/kernel/base.S

1/*
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
9#include <asm/asm-offsets.h>
10#include <asm/ptrace.h>
11
12#ifdef CONFIG_64BIT
13
14    .globl s390_base_mcck_handler
15s390_base_mcck_handler:
16    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
29    .globl s390_base_mcck_handler_fn
30s390_base_mcck_handler_fn:
31    .quad 0
32    .previous
33
34    .globl s390_base_ext_handler
35s390_base_ext_handler:
36    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
49    .globl s390_base_ext_handler_fn
50s390_base_ext_handler_fn:
51    .quad 0
52    .previous
53
54    .globl s390_base_pgm_handler
55s390_base_pgm_handler:
56    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
73    .globl s390_base_pgm_handler_fn
74s390_base_pgm_handler_fn:
75    .quad 0
76    .previous
77
78#else /* CONFIG_64BIT */
79
80    .globl s390_base_mcck_handler
81s390_base_mcck_handler:
82    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
96    .globl s390_base_mcck_handler_fn
97s390_base_mcck_handler_fn:
98    .long 0
99    .previous
100
101    .globl s390_base_ext_handler
102s390_base_ext_handler:
103    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
118    .globl s390_base_ext_handler_fn
119s390_base_ext_handler_fn:
120    .long 0
121    .previous
122
123    .globl s390_base_pgm_handler
124s390_base_pgm_handler:
125    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
145    .globl s390_base_pgm_handler_fn
146s390_base_pgm_handler_fn:
147    .long 0
148    .previous
149
150#endif /* CONFIG_64BIT */
151

Archive Download this file



interactive