aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-07-24 12:55:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-07-24 12:55:45 -0400
commit21c7075fa5a756f1c95f6b463ff42cd320cc0301 (patch)
tree69524dd01fbebe662abe3b7296664592d3ce562b /arch/s390/kernel
parentff0c4ad2c3a75ccfe6adca916e50804eb45bb2d9 (diff)
parent73b7d40ff1bcd44b4245c2714b88cf872fe44685 (diff)
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (21 commits) [S390] use siginfo for sigtrap signals [S390] dasd: add enhanced DASD statistics interface [S390] kvm: make sigp emerg smp capable [S390] disable cpu measurement alerts on a dying cpu [S390] initial cr0 bits [S390] iucv cr0 enablement bit [S390] race safe external interrupt registration [S390] remove tape block docu [S390] ap: toleration support for ap device type 10 [S390] cleanup program check handler prototypes [S390] remove kvm mmu reload on s390 [S390] Use gmap translation for accessing guest memory [S390] use gmap address spaces for kvm guest images [S390] kvm guest address space mapping [S390] fix s390 assembler code alignments [S390] move sie code to entry.S [S390] kvm: handle tprot intercepts [S390] qdio: clear shared DSCI before scheduling the queue handler [S390] reference bit testing for unmapped pages [S390] irqs: Do not trace arch_local_{*,irq_*} functions ...
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r--arch/s390/kernel/asm-offsets.c2
-rw-r--r--arch/s390/kernel/base.S25
-rw-r--r--arch/s390/kernel/compat_wrapper.S836
-rw-r--r--arch/s390/kernel/entry.S32
-rw-r--r--arch/s390/kernel/entry.h7
-rw-r--r--arch/s390/kernel/entry64.S111
-rw-r--r--arch/s390/kernel/head.S7
-rw-r--r--arch/s390/kernel/head31.S13
-rw-r--r--arch/s390/kernel/head64.S13
-rw-r--r--arch/s390/kernel/irq.c83
-rw-r--r--arch/s390/kernel/mcount.S16
-rw-r--r--arch/s390/kernel/mcount64.S16
-rw-r--r--arch/s390/kernel/reipl.S5
-rw-r--r--arch/s390/kernel/reipl64.S5
-rw-r--r--arch/s390/kernel/relocate_kernel.S6
-rw-r--r--arch/s390/kernel/relocate_kernel64.S6
-rw-r--r--arch/s390/kernel/s390_ksyms.c4
-rw-r--r--arch/s390/kernel/sclp.S5
-rw-r--r--arch/s390/kernel/smp.c3
-rw-r--r--arch/s390/kernel/switch_cpu.S8
-rw-r--r--arch/s390/kernel/switch_cpu64.S8
-rw-r--r--arch/s390/kernel/swsusp_asm64.S8
-rw-r--r--arch/s390/kernel/traps.c36
23 files changed, 516 insertions, 739 deletions
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index edfbd17d7082..05d8f38734ec 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -151,7 +151,7 @@ int main(void)
151 DEFINE(__LC_FP_CREG_SAVE_AREA, offsetof(struct _lowcore, fpt_creg_save_area)); 151 DEFINE(__LC_FP_CREG_SAVE_AREA, offsetof(struct _lowcore, fpt_creg_save_area));
152 DEFINE(__LC_LAST_BREAK, offsetof(struct _lowcore, breaking_event_addr)); 152 DEFINE(__LC_LAST_BREAK, offsetof(struct _lowcore, breaking_event_addr));
153 DEFINE(__LC_VDSO_PER_CPU, offsetof(struct _lowcore, vdso_per_cpu_data)); 153 DEFINE(__LC_VDSO_PER_CPU, offsetof(struct _lowcore, vdso_per_cpu_data));
154 DEFINE(__LC_SIE_HOOK, offsetof(struct _lowcore, sie_hook)); 154 DEFINE(__LC_GMAP, offsetof(struct _lowcore, gmap));
155 DEFINE(__LC_CMF_HPP, offsetof(struct _lowcore, cmf_hpp)); 155 DEFINE(__LC_CMF_HPP, offsetof(struct _lowcore, cmf_hpp));
156#endif /* CONFIG_32BIT */ 156#endif /* CONFIG_32BIT */
157 return 0; 157 return 0;
diff --git a/arch/s390/kernel/base.S b/arch/s390/kernel/base.S
index 15e46ca94335..209938c1dfc8 100644
--- a/arch/s390/kernel/base.S
+++ b/arch/s390/kernel/base.S
@@ -6,13 +6,13 @@
6 * Michael Holzheu <holzheu@de.ibm.com> 6 * Michael Holzheu <holzheu@de.ibm.com>
7 */ 7 */
8 8
9#include <linux/linkage.h>
9#include <asm/asm-offsets.h> 10#include <asm/asm-offsets.h>
10#include <asm/ptrace.h> 11#include <asm/ptrace.h>
11 12
12#ifdef CONFIG_64BIT 13#ifdef CONFIG_64BIT
13 14
14 .globl s390_base_mcck_handler 15ENTRY(s390_base_mcck_handler)
15s390_base_mcck_handler:
16 basr %r13,0 16 basr %r13,0
170: lg %r15,__LC_PANIC_STACK # load panic stack 170: lg %r15,__LC_PANIC_STACK # load panic stack
18 aghi %r15,-STACK_FRAME_OVERHEAD 18 aghi %r15,-STACK_FRAME_OVERHEAD
@@ -26,13 +26,13 @@ s390_base_mcck_handler:
26 lpswe __LC_MCK_OLD_PSW 26 lpswe __LC_MCK_OLD_PSW
27 27
28 .section .bss 28 .section .bss
29 .align 8
29 .globl s390_base_mcck_handler_fn 30 .globl s390_base_mcck_handler_fn
30s390_base_mcck_handler_fn: 31s390_base_mcck_handler_fn:
31 .quad 0 32 .quad 0
32 .previous 33 .previous
33 34
34 .globl s390_base_ext_handler 35ENTRY(s390_base_ext_handler)
35s390_base_ext_handler:
36 stmg %r0,%r15,__LC_SAVE_AREA 36 stmg %r0,%r15,__LC_SAVE_AREA
37 basr %r13,0 37 basr %r13,0
380: aghi %r15,-STACK_FRAME_OVERHEAD 380: aghi %r15,-STACK_FRAME_OVERHEAD
@@ -46,13 +46,13 @@ s390_base_ext_handler:
46 lpswe __LC_EXT_OLD_PSW 46 lpswe __LC_EXT_OLD_PSW
47 47
48 .section .bss 48 .section .bss
49 .align 8
49 .globl s390_base_ext_handler_fn 50 .globl s390_base_ext_handler_fn
50s390_base_ext_handler_fn: 51s390_base_ext_handler_fn:
51 .quad 0 52 .quad 0
52 .previous 53 .previous
53 54
54 .globl s390_base_pgm_handler 55ENTRY(s390_base_pgm_handler)
55s390_base_pgm_handler:
56 stmg %r0,%r15,__LC_SAVE_AREA 56 stmg %r0,%r15,__LC_SAVE_AREA
57 basr %r13,0 57 basr %r13,0
580: aghi %r15,-STACK_FRAME_OVERHEAD 580: aghi %r15,-STACK_FRAME_OVERHEAD
@@ -70,6 +70,7 @@ disabled_wait_psw:
70 .quad 0x0002000180000000,0x0000000000000000 + s390_base_pgm_handler 70 .quad 0x0002000180000000,0x0000000000000000 + s390_base_pgm_handler
71 71
72 .section .bss 72 .section .bss
73 .align 8
73 .globl s390_base_pgm_handler_fn 74 .globl s390_base_pgm_handler_fn
74s390_base_pgm_handler_fn: 75s390_base_pgm_handler_fn:
75 .quad 0 76 .quad 0
@@ -77,8 +78,7 @@ s390_base_pgm_handler_fn:
77 78
78#else /* CONFIG_64BIT */ 79#else /* CONFIG_64BIT */
79 80
80 .globl s390_base_mcck_handler 81ENTRY(s390_base_mcck_handler)
81s390_base_mcck_handler:
82 basr %r13,0 82 basr %r13,0
830: l %r15,__LC_PANIC_STACK # load panic stack 830: l %r15,__LC_PANIC_STACK # load panic stack
84 ahi %r15,-STACK_FRAME_OVERHEAD 84 ahi %r15,-STACK_FRAME_OVERHEAD
@@ -93,13 +93,13 @@ s390_base_mcck_handler:
932: .long s390_base_mcck_handler_fn 932: .long s390_base_mcck_handler_fn
94 94
95 .section .bss 95 .section .bss
96 .align 4
96 .globl s390_base_mcck_handler_fn 97 .globl s390_base_mcck_handler_fn
97s390_base_mcck_handler_fn: 98s390_base_mcck_handler_fn:
98 .long 0 99 .long 0
99 .previous 100 .previous
100 101
101 .globl s390_base_ext_handler 102ENTRY(s390_base_ext_handler)
102s390_base_ext_handler:
103 stm %r0,%r15,__LC_SAVE_AREA 103 stm %r0,%r15,__LC_SAVE_AREA
104 basr %r13,0 104 basr %r13,0
1050: ahi %r15,-STACK_FRAME_OVERHEAD 1050: ahi %r15,-STACK_FRAME_OVERHEAD
@@ -115,13 +115,13 @@ s390_base_ext_handler:
1152: .long s390_base_ext_handler_fn 1152: .long s390_base_ext_handler_fn
116 116
117 .section .bss 117 .section .bss
118 .align 4
118 .globl s390_base_ext_handler_fn 119 .globl s390_base_ext_handler_fn
119s390_base_ext_handler_fn: 120s390_base_ext_handler_fn:
120 .long 0 121 .long 0
121 .previous 122 .previous
122 123
123 .globl s390_base_pgm_handler 124ENTRY(s390_base_pgm_handler)
124s390_base_pgm_handler:
125 stm %r0,%r15,__LC_SAVE_AREA 125 stm %r0,%r15,__LC_SAVE_AREA
126 basr %r13,0 126 basr %r13,0
1270: ahi %r15,-STACK_FRAME_OVERHEAD 1270: ahi %r15,-STACK_FRAME_OVERHEAD
@@ -142,6 +142,7 @@ disabled_wait_psw:
142 .long 0x000a0000,0x00000000 + s390_base_pgm_handler 142 .long 0x000a0000,0x00000000 + s390_base_pgm_handler
143 143
144 .section .bss 144 .section .bss
145 .align 4
145 .globl s390_base_pgm_handler_fn 146 .globl s390_base_pgm_handler_fn
146s390_base_pgm_handler_fn: 147s390_base_pgm_handler_fn:
147 .long 0 148 .long 0
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index 1f5eb789c3a7..08ab9aa6a0d5 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -7,86 +7,74 @@
7* Thomas Spatzier (tspat@de.ibm.com) 7* Thomas Spatzier (tspat@de.ibm.com)
8*/ 8*/
9 9
10 .globl sys32_exit_wrapper 10#include <linux/linkage.h>
11sys32_exit_wrapper: 11
12ENTRY(sys32_exit_wrapper)
12 lgfr %r2,%r2 # int 13 lgfr %r2,%r2 # int
13 jg sys_exit # branch to sys_exit 14 jg sys_exit # branch to sys_exit
14 15
15 .globl sys32_read_wrapper 16ENTRY(sys32_read_wrapper)
16sys32_read_wrapper:
17 llgfr %r2,%r2 # unsigned int 17 llgfr %r2,%r2 # unsigned int
18 llgtr %r3,%r3 # char * 18 llgtr %r3,%r3 # char *
19 llgfr %r4,%r4 # size_t 19 llgfr %r4,%r4 # size_t
20 jg sys32_read # branch to sys_read 20 jg sys32_read # branch to sys_read
21 21
22 .globl sys32_write_wrapper 22ENTRY(sys32_write_wrapper)
23sys32_write_wrapper:
24 llgfr %r2,%r2 # unsigned int 23 llgfr %r2,%r2 # unsigned int
25 llgtr %r3,%r3 # const char * 24 llgtr %r3,%r3 # const char *
26 llgfr %r4,%r4 # size_t 25 llgfr %r4,%r4 # size_t
27 jg sys32_write # branch to system call 26 jg sys32_write # branch to system call
28 27
29 .globl sys32_open_wrapper 28ENTRY(sys32_open_wrapper)
30sys32_open_wrapper:
31 llgtr %r2,%r2 # const char * 29 llgtr %r2,%r2 # const char *
32 lgfr %r3,%r3 # int 30 lgfr %r3,%r3 # int
33 lgfr %r4,%r4 # int 31 lgfr %r4,%r4 # int
34 jg sys_open # branch to system call 32 jg sys_open # branch to system call
35 33
36 .globl sys32_close_wrapper 34ENTRY(sys32_close_wrapper)
37sys32_close_wrapper:
38 llgfr %r2,%r2 # unsigned int 35 llgfr %r2,%r2 # unsigned int
39 jg sys_close # branch to system call 36 jg sys_close # branch to system call
40 37
41 .globl sys32_creat_wrapper 38ENTRY(sys32_creat_wrapper)
42sys32_creat_wrapper:
43 llgtr %r2,%r2 # const char * 39 llgtr %r2,%r2 # const char *
44 lgfr %r3,%r3 # int 40 lgfr %r3,%r3 # int
45 jg sys_creat # branch to system call 41 jg sys_creat # branch to system call
46 42
47 .globl sys32_link_wrapper 43ENTRY(sys32_link_wrapper)
48sys32_link_wrapper:
49 llgtr %r2,%r2 # const char * 44 llgtr %r2,%r2 # const char *
50 llgtr %r3,%r3 # const char * 45 llgtr %r3,%r3 # const char *
51 jg sys_link # branch to system call 46 jg sys_link # branch to system call
52 47
53 .globl sys32_unlink_wrapper 48ENTRY(sys32_unlink_wrapper)
54sys32_unlink_wrapper:
55 llgtr %r2,%r2 # const char * 49 llgtr %r2,%r2 # const char *
56 jg sys_unlink # branch to system call 50 jg sys_unlink # branch to system call
57 51
58 .globl sys32_chdir_wrapper 52ENTRY(sys32_chdir_wrapper)
59sys32_chdir_wrapper:
60 llgtr %r2,%r2 # const char * 53 llgtr %r2,%r2 # const char *
61 jg sys_chdir # branch to system call 54 jg sys_chdir # branch to system call
62 55
63 .globl sys32_time_wrapper 56ENTRY(sys32_time_wrapper)
64sys32_time_wrapper:
65 llgtr %r2,%r2 # int * 57 llgtr %r2,%r2 # int *
66 jg compat_sys_time # branch to system call 58 jg compat_sys_time # branch to system call
67 59
68 .globl sys32_mknod_wrapper 60ENTRY(sys32_mknod_wrapper)
69sys32_mknod_wrapper:
70 llgtr %r2,%r2 # const char * 61 llgtr %r2,%r2 # const char *
71 lgfr %r3,%r3 # int 62 lgfr %r3,%r3 # int
72 llgfr %r4,%r4 # dev 63 llgfr %r4,%r4 # dev
73 jg sys_mknod # branch to system call 64 jg sys_mknod # branch to system call
74 65
75 .globl sys32_chmod_wrapper 66ENTRY(sys32_chmod_wrapper)
76sys32_chmod_wrapper:
77 llgtr %r2,%r2 # const char * 67 llgtr %r2,%r2 # const char *
78 llgfr %r3,%r3 # mode_t 68 llgfr %r3,%r3 # mode_t
79 jg sys_chmod # branch to system call 69 jg sys_chmod # branch to system call
80 70
81 .globl sys32_lchown16_wrapper 71ENTRY(sys32_lchown16_wrapper)
82sys32_lchown16_wrapper:
83 llgtr %r2,%r2 # const char * 72 llgtr %r2,%r2 # const char *
84 llgfr %r3,%r3 # __kernel_old_uid_emu31_t 73 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
85 llgfr %r4,%r4 # __kernel_old_uid_emu31_t 74 llgfr %r4,%r4 # __kernel_old_uid_emu31_t
86 jg sys32_lchown16 # branch to system call 75 jg sys32_lchown16 # branch to system call
87 76
88 .globl sys32_lseek_wrapper 77ENTRY(sys32_lseek_wrapper)
89sys32_lseek_wrapper:
90 llgfr %r2,%r2 # unsigned int 78 llgfr %r2,%r2 # unsigned int
91 lgfr %r3,%r3 # off_t 79 lgfr %r3,%r3 # off_t
92 llgfr %r4,%r4 # unsigned int 80 llgfr %r4,%r4 # unsigned int
@@ -94,8 +82,7 @@ sys32_lseek_wrapper:
94 82
95#sys32_getpid_wrapper # void 83#sys32_getpid_wrapper # void
96 84
97 .globl sys32_mount_wrapper 85ENTRY(sys32_mount_wrapper)
98sys32_mount_wrapper:
99 llgtr %r2,%r2 # char * 86 llgtr %r2,%r2 # char *
100 llgtr %r3,%r3 # char * 87 llgtr %r3,%r3 # char *
101 llgtr %r4,%r4 # char * 88 llgtr %r4,%r4 # char *
@@ -103,102 +90,85 @@ sys32_mount_wrapper:
103 llgtr %r6,%r6 # void * 90 llgtr %r6,%r6 # void *
104 jg compat_sys_mount # branch to system call 91 jg compat_sys_mount # branch to system call
105 92
106 .globl sys32_oldumount_wrapper 93ENTRY(sys32_oldumount_wrapper)
107sys32_oldumount_wrapper:
108 llgtr %r2,%r2 # char * 94 llgtr %r2,%r2 # char *
109 jg sys_oldumount # branch to system call 95 jg sys_oldumount # branch to system call
110 96
111 .globl sys32_setuid16_wrapper 97ENTRY(sys32_setuid16_wrapper)
112sys32_setuid16_wrapper:
113 llgfr %r2,%r2 # __kernel_old_uid_emu31_t 98 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
114 jg sys32_setuid16 # branch to system call 99 jg sys32_setuid16 # branch to system call
115 100
116#sys32_getuid16_wrapper # void 101#sys32_getuid16_wrapper # void
117 102
118 .globl sys32_ptrace_wrapper 103ENTRY(sys32_ptrace_wrapper)
119sys32_ptrace_wrapper:
120 lgfr %r2,%r2 # long 104 lgfr %r2,%r2 # long
121 lgfr %r3,%r3 # long 105 lgfr %r3,%r3 # long
122 llgtr %r4,%r4 # long 106 llgtr %r4,%r4 # long
123 llgfr %r5,%r5 # long 107 llgfr %r5,%r5 # long
124 jg compat_sys_ptrace # branch to system call 108 jg compat_sys_ptrace # branch to system call
125 109
126 .globl sys32_alarm_wrapper 110ENTRY(sys32_alarm_wrapper)
127sys32_alarm_wrapper:
128 llgfr %r2,%r2 # unsigned int 111 llgfr %r2,%r2 # unsigned int
129 jg sys_alarm # branch to system call 112 jg sys_alarm # branch to system call
130 113
131 .globl compat_sys_utime_wrapper 114ENTRY(compat_sys_utime_wrapper)
132compat_sys_utime_wrapper:
133 llgtr %r2,%r2 # char * 115 llgtr %r2,%r2 # char *
134 llgtr %r3,%r3 # struct compat_utimbuf * 116 llgtr %r3,%r3 # struct compat_utimbuf *
135 jg compat_sys_utime # branch to system call 117 jg compat_sys_utime # branch to system call
136 118
137 .globl sys32_access_wrapper 119ENTRY(sys32_access_wrapper)
138sys32_access_wrapper:
139 llgtr %r2,%r2 # const char * 120 llgtr %r2,%r2 # const char *
140 lgfr %r3,%r3 # int 121 lgfr %r3,%r3 # int
141 jg sys_access # branch to system call 122 jg sys_access # branch to system call
142 123
143 .globl sys32_nice_wrapper 124ENTRY(sys32_nice_wrapper)
144sys32_nice_wrapper:
145 lgfr %r2,%r2 # int 125 lgfr %r2,%r2 # int
146 jg sys_nice # branch to system call 126 jg sys_nice # branch to system call
147 127
148#sys32_sync_wrapper # void 128#sys32_sync_wrapper # void
149 129
150 .globl sys32_kill_wrapper 130ENTRY(sys32_kill_wrapper)
151sys32_kill_wrapper:
152 lgfr %r2,%r2 # int 131 lgfr %r2,%r2 # int
153 lgfr %r3,%r3 # int 132 lgfr %r3,%r3 # int
154 jg sys_kill # branch to system call 133 jg sys_kill # branch to system call
155 134
156 .globl sys32_rename_wrapper 135ENTRY(sys32_rename_wrapper)
157sys32_rename_wrapper:
158 llgtr %r2,%r2 # const char * 136 llgtr %r2,%r2 # const char *
159 llgtr %r3,%r3 # const char * 137 llgtr %r3,%r3 # const char *
160 jg sys_rename # branch to system call 138 jg sys_rename # branch to system call
161 139
162 .globl sys32_mkdir_wrapper 140ENTRY(sys32_mkdir_wrapper)
163sys32_mkdir_wrapper:
164 llgtr %r2,%r2 # const char * 141 llgtr %r2,%r2 # const char *
165 lgfr %r3,%r3 # int 142 lgfr %r3,%r3 # int
166 jg sys_mkdir # branch to system call 143 jg sys_mkdir # branch to system call
167 144
168 .globl sys32_rmdir_wrapper 145ENTRY(sys32_rmdir_wrapper)
169sys32_rmdir_wrapper:
170 llgtr %r2,%r2 # const char * 146 llgtr %r2,%r2 # const char *
171 jg sys_rmdir # branch to system call 147 jg sys_rmdir # branch to system call
172 148
173 .globl sys32_dup_wrapper 149ENTRY(sys32_dup_wrapper)
174sys32_dup_wrapper:
175 llgfr %r2,%r2 # unsigned int 150 llgfr %r2,%r2 # unsigned int
176 jg sys_dup # branch to system call 151 jg sys_dup # branch to system call
177 152
178 .globl sys32_pipe_wrapper 153ENTRY(sys32_pipe_wrapper)
179sys32_pipe_wrapper:
180 llgtr %r2,%r2 # u32 * 154 llgtr %r2,%r2 # u32 *
181 jg sys_pipe # branch to system call 155 jg sys_pipe # branch to system call
182 156
183 .globl compat_sys_times_wrapper 157ENTRY(compat_sys_times_wrapper)
184compat_sys_times_wrapper:
185 llgtr %r2,%r2 # struct compat_tms * 158 llgtr %r2,%r2 # struct compat_tms *
186 jg compat_sys_times # branch to system call 159 jg compat_sys_times # branch to system call
187 160
188 .globl sys32_brk_wrapper 161ENTRY(sys32_brk_wrapper)
189sys32_brk_wrapper:
190 llgtr %r2,%r2 # unsigned long 162 llgtr %r2,%r2 # unsigned long
191 jg sys_brk # branch to system call 163 jg sys_brk # branch to system call
192 164
193 .globl sys32_setgid16_wrapper 165ENTRY(sys32_setgid16_wrapper)
194sys32_setgid16_wrapper:
195 llgfr %r2,%r2 # __kernel_old_gid_emu31_t 166 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
196 jg sys32_setgid16 # branch to system call 167 jg sys32_setgid16 # branch to system call
197 168
198#sys32_getgid16_wrapper # void 169#sys32_getgid16_wrapper # void
199 170
200 .globl sys32_signal_wrapper 171ENTRY(sys32_signal_wrapper)
201sys32_signal_wrapper:
202 lgfr %r2,%r2 # int 172 lgfr %r2,%r2 # int
203 llgtr %r3,%r3 # __sighandler_t 173 llgtr %r3,%r3 # __sighandler_t
204 jg sys_signal 174 jg sys_signal
@@ -207,55 +177,46 @@ sys32_signal_wrapper:
207 177
208#sys32_getegid16_wrapper # void 178#sys32_getegid16_wrapper # void
209 179
210 .globl sys32_acct_wrapper 180ENTRY(sys32_acct_wrapper)
211sys32_acct_wrapper:
212 llgtr %r2,%r2 # char * 181 llgtr %r2,%r2 # char *
213 jg sys_acct # branch to system call 182 jg sys_acct # branch to system call
214 183
215 .globl sys32_umount_wrapper 184ENTRY(sys32_umount_wrapper)
216sys32_umount_wrapper:
217 llgtr %r2,%r2 # char * 185 llgtr %r2,%r2 # char *
218 lgfr %r3,%r3 # int 186 lgfr %r3,%r3 # int
219 jg sys_umount # branch to system call 187 jg sys_umount # branch to system call
220 188
221 .globl compat_sys_ioctl_wrapper 189ENTRY(compat_sys_ioctl_wrapper)
222compat_sys_ioctl_wrapper:
223 llgfr %r2,%r2 # unsigned int 190 llgfr %r2,%r2 # unsigned int
224 llgfr %r3,%r3 # unsigned int 191 llgfr %r3,%r3 # unsigned int
225 llgfr %r4,%r4 # unsigned int 192 llgfr %r4,%r4 # unsigned int
226 jg compat_sys_ioctl # branch to system call 193 jg compat_sys_ioctl # branch to system call
227 194
228 .globl compat_sys_fcntl_wrapper 195ENTRY(compat_sys_fcntl_wrapper)
229compat_sys_fcntl_wrapper:
230 llgfr %r2,%r2 # unsigned int 196 llgfr %r2,%r2 # unsigned int
231 llgfr %r3,%r3 # unsigned int 197 llgfr %r3,%r3 # unsigned int
232 llgfr %r4,%r4 # unsigned long 198 llgfr %r4,%r4 # unsigned long
233 jg compat_sys_fcntl # branch to system call 199 jg compat_sys_fcntl # branch to system call
234 200
235 .globl sys32_setpgid_wrapper 201ENTRY(sys32_setpgid_wrapper)
236sys32_setpgid_wrapper:
237 lgfr %r2,%r2 # pid_t 202 lgfr %r2,%r2 # pid_t
238 lgfr %r3,%r3 # pid_t 203 lgfr %r3,%r3 # pid_t
239 jg sys_setpgid # branch to system call 204 jg sys_setpgid # branch to system call
240 205
241 .globl sys32_umask_wrapper 206ENTRY(sys32_umask_wrapper)
242sys32_umask_wrapper:
243 lgfr %r2,%r2 # int 207 lgfr %r2,%r2 # int
244 jg sys_umask # branch to system call 208 jg sys_umask # branch to system call
245 209
246 .globl sys32_chroot_wrapper 210ENTRY(sys32_chroot_wrapper)
247sys32_chroot_wrapper:
248 llgtr %r2,%r2 # char * 211 llgtr %r2,%r2 # char *
249 jg sys_chroot # branch to system call 212 jg sys_chroot # branch to system call
250 213
251 .globl sys32_ustat_wrapper 214ENTRY(sys32_ustat_wrapper)
252sys32_ustat_wrapper:
253 llgfr %r2,%r2 # dev_t 215 llgfr %r2,%r2 # dev_t
254 llgtr %r3,%r3 # struct ustat * 216 llgtr %r3,%r3 # struct ustat *
255 jg compat_sys_ustat 217 jg compat_sys_ustat
256 218
257 .globl sys32_dup2_wrapper 219ENTRY(sys32_dup2_wrapper)
258sys32_dup2_wrapper:
259 llgfr %r2,%r2 # unsigned int 220 llgfr %r2,%r2 # unsigned int
260 llgfr %r3,%r3 # unsigned int 221 llgfr %r3,%r3 # unsigned int
261 jg sys_dup2 # branch to system call 222 jg sys_dup2 # branch to system call
@@ -266,262 +227,220 @@ sys32_dup2_wrapper:
266 227
267#sys32_setsid_wrapper # void 228#sys32_setsid_wrapper # void
268 229
269 .globl sys32_sigaction_wrapper 230ENTRY(sys32_sigaction_wrapper)
270sys32_sigaction_wrapper:
271 lgfr %r2,%r2 # int 231 lgfr %r2,%r2 # int
272 llgtr %r3,%r3 # const struct old_sigaction * 232 llgtr %r3,%r3 # const struct old_sigaction *
273 llgtr %r4,%r4 # struct old_sigaction32 * 233 llgtr %r4,%r4 # struct old_sigaction32 *
274 jg sys32_sigaction # branch to system call 234 jg sys32_sigaction # branch to system call
275 235
276 .globl sys32_setreuid16_wrapper 236ENTRY(sys32_setreuid16_wrapper)
277sys32_setreuid16_wrapper:
278 llgfr %r2,%r2 # __kernel_old_uid_emu31_t 237 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
279 llgfr %r3,%r3 # __kernel_old_uid_emu31_t 238 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
280 jg sys32_setreuid16 # branch to system call 239 jg sys32_setreuid16 # branch to system call
281 240
282 .globl sys32_setregid16_wrapper 241ENTRY(sys32_setregid16_wrapper)
283sys32_setregid16_wrapper:
284 llgfr %r2,%r2 # __kernel_old_gid_emu31_t 242 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
285 llgfr %r3,%r3 # __kernel_old_gid_emu31_t 243 llgfr %r3,%r3 # __kernel_old_gid_emu31_t
286 jg sys32_setregid16 # branch to system call 244 jg sys32_setregid16 # branch to system call
287 245
288 .globl sys_sigsuspend_wrapper 246ENTRY(sys_sigsuspend_wrapper)
289sys_sigsuspend_wrapper:
290 lgfr %r2,%r2 # int 247 lgfr %r2,%r2 # int
291 lgfr %r3,%r3 # int 248 lgfr %r3,%r3 # int
292 llgfr %r4,%r4 # old_sigset_t 249 llgfr %r4,%r4 # old_sigset_t
293 jg sys_sigsuspend 250 jg sys_sigsuspend
294 251
295 .globl compat_sys_sigpending_wrapper 252ENTRY(compat_sys_sigpending_wrapper)
296compat_sys_sigpending_wrapper:
297 llgtr %r2,%r2 # compat_old_sigset_t * 253 llgtr %r2,%r2 # compat_old_sigset_t *
298 jg compat_sys_sigpending # branch to system call 254 jg compat_sys_sigpending # branch to system call
299 255
300 .globl sys32_sethostname_wrapper 256ENTRY(sys32_sethostname_wrapper)
301sys32_sethostname_wrapper:
302 llgtr %r2,%r2 # char * 257 llgtr %r2,%r2 # char *
303 lgfr %r3,%r3 # int 258 lgfr %r3,%r3 # int
304 jg sys_sethostname # branch to system call 259 jg sys_sethostname # branch to system call
305 260
306 .globl compat_sys_setrlimit_wrapper 261ENTRY(compat_sys_setrlimit_wrapper)
307compat_sys_setrlimit_wrapper:
308 llgfr %r2,%r2 # unsigned int 262 llgfr %r2,%r2 # unsigned int
309 llgtr %r3,%r3 # struct rlimit_emu31 * 263 llgtr %r3,%r3 # struct rlimit_emu31 *
310 jg compat_sys_setrlimit # branch to system call 264 jg compat_sys_setrlimit # branch to system call
311 265
312 .globl compat_sys_old_getrlimit_wrapper 266ENTRY(compat_sys_old_getrlimit_wrapper)
313compat_sys_old_getrlimit_wrapper:
314 llgfr %r2,%r2 # unsigned int 267 llgfr %r2,%r2 # unsigned int
315 llgtr %r3,%r3 # struct rlimit_emu31 * 268 llgtr %r3,%r3 # struct rlimit_emu31 *
316 jg compat_sys_old_getrlimit # branch to system call 269 jg compat_sys_old_getrlimit # branch to system call
317 270
318 .globl compat_sys_getrlimit_wrapper 271ENTRY(compat_sys_getrlimit_wrapper)
319compat_sys_getrlimit_wrapper:
320 llgfr %r2,%r2 # unsigned int 272 llgfr %r2,%r2 # unsigned int
321 llgtr %r3,%r3 # struct rlimit_emu31 * 273 llgtr %r3,%r3 # struct rlimit_emu31 *
322 jg compat_sys_getrlimit # branch to system call 274 jg compat_sys_getrlimit # branch to system call
323 275
324 .globl sys32_mmap2_wrapper 276ENTRY(sys32_mmap2_wrapper)
325sys32_mmap2_wrapper:
326 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 * 277 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
327 jg sys32_mmap2 # branch to system call 278 jg sys32_mmap2 # branch to system call
328 279
329 .globl compat_sys_getrusage_wrapper 280ENTRY(compat_sys_getrusage_wrapper)
330compat_sys_getrusage_wrapper:
331 lgfr %r2,%r2 # int 281 lgfr %r2,%r2 # int
332 llgtr %r3,%r3 # struct rusage_emu31 * 282 llgtr %r3,%r3 # struct rusage_emu31 *
333 jg compat_sys_getrusage # branch to system call 283 jg compat_sys_getrusage # branch to system call
334 284
335 .globl compat_sys_gettimeofday_wrapper 285ENTRY(compat_sys_gettimeofday_wrapper)
336compat_sys_gettimeofday_wrapper:
337 llgtr %r2,%r2 # struct timeval_emu31 * 286 llgtr %r2,%r2 # struct timeval_emu31 *
338 llgtr %r3,%r3 # struct timezone * 287 llgtr %r3,%r3 # struct timezone *
339 jg compat_sys_gettimeofday # branch to system call 288 jg compat_sys_gettimeofday # branch to system call
340 289
341 .globl compat_sys_settimeofday_wrapper 290ENTRY(compat_sys_settimeofday_wrapper)
342compat_sys_settimeofday_wrapper:
343 llgtr %r2,%r2 # struct timeval_emu31 * 291 llgtr %r2,%r2 # struct timeval_emu31 *
344 llgtr %r3,%r3 # struct timezone * 292 llgtr %r3,%r3 # struct timezone *
345 jg compat_sys_settimeofday # branch to system call 293 jg compat_sys_settimeofday # branch to system call
346 294
347 .globl sys32_getgroups16_wrapper 295ENTRY(sys32_getgroups16_wrapper)
348sys32_getgroups16_wrapper:
349 lgfr %r2,%r2 # int 296 lgfr %r2,%r2 # int
350 llgtr %r3,%r3 # __kernel_old_gid_emu31_t * 297 llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
351 jg sys32_getgroups16 # branch to system call 298 jg sys32_getgroups16 # branch to system call
352 299
353 .globl sys32_setgroups16_wrapper 300ENTRY(sys32_setgroups16_wrapper)
354sys32_setgroups16_wrapper:
355 lgfr %r2,%r2 # int 301 lgfr %r2,%r2 # int
356 llgtr %r3,%r3 # __kernel_old_gid_emu31_t * 302 llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
357 jg sys32_setgroups16 # branch to system call 303 jg sys32_setgroups16 # branch to system call
358 304
359 .globl sys32_symlink_wrapper 305ENTRY(sys32_symlink_wrapper)
360sys32_symlink_wrapper:
361 llgtr %r2,%r2 # const char * 306 llgtr %r2,%r2 # const char *
362 llgtr %r3,%r3 # const char * 307 llgtr %r3,%r3 # const char *
363 jg sys_symlink # branch to system call 308 jg sys_symlink # branch to system call
364 309
365 .globl sys32_readlink_wrapper 310ENTRY(sys32_readlink_wrapper)
366sys32_readlink_wrapper:
367 llgtr %r2,%r2 # const char * 311 llgtr %r2,%r2 # const char *
368 llgtr %r3,%r3 # char * 312 llgtr %r3,%r3 # char *
369 lgfr %r4,%r4 # int 313 lgfr %r4,%r4 # int
370 jg sys_readlink # branch to system call 314 jg sys_readlink # branch to system call
371 315
372 .globl sys32_uselib_wrapper 316ENTRY(sys32_uselib_wrapper)
373sys32_uselib_wrapper:
374 llgtr %r2,%r2 # const char * 317 llgtr %r2,%r2 # const char *
375 jg sys_uselib # branch to system call 318 jg sys_uselib # branch to system call
376 319
377 .globl sys32_swapon_wrapper 320ENTRY(sys32_swapon_wrapper)
378sys32_swapon_wrapper:
379 llgtr %r2,%r2 # const char * 321 llgtr %r2,%r2 # const char *
380 lgfr %r3,%r3 # int 322 lgfr %r3,%r3 # int
381 jg sys_swapon # branch to system call 323 jg sys_swapon # branch to system call
382 324
383 .globl sys32_reboot_wrapper 325ENTRY(sys32_reboot_wrapper)
384sys32_reboot_wrapper:
385 lgfr %r2,%r2 # int 326 lgfr %r2,%r2 # int
386 lgfr %r3,%r3 # int 327 lgfr %r3,%r3 # int
387 llgfr %r4,%r4 # unsigned int 328 llgfr %r4,%r4 # unsigned int
388 llgtr %r5,%r5 # void * 329 llgtr %r5,%r5 # void *
389 jg sys_reboot # branch to system call 330 jg sys_reboot # branch to system call
390 331
391 .globl old32_readdir_wrapper 332ENTRY(old32_readdir_wrapper)
392old32_readdir_wrapper:
393 llgfr %r2,%r2 # unsigned int 333 llgfr %r2,%r2 # unsigned int
394 llgtr %r3,%r3 # void * 334 llgtr %r3,%r3 # void *
395 llgfr %r4,%r4 # unsigned int 335 llgfr %r4,%r4 # unsigned int
396 jg compat_sys_old_readdir # branch to system call 336 jg compat_sys_old_readdir # branch to system call
397 337
398 .globl old32_mmap_wrapper 338ENTRY(old32_mmap_wrapper)
399old32_mmap_wrapper:
400 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 * 339 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
401 jg old32_mmap # branch to system call 340 jg old32_mmap # branch to system call
402 341
403 .globl sys32_munmap_wrapper 342ENTRY(sys32_munmap_wrapper)
404sys32_munmap_wrapper:
405 llgfr %r2,%r2 # unsigned long 343 llgfr %r2,%r2 # unsigned long
406 llgfr %r3,%r3 # size_t 344 llgfr %r3,%r3 # size_t
407 jg sys_munmap # branch to system call 345 jg sys_munmap # branch to system call
408 346
409 .globl sys32_truncate_wrapper 347ENTRY(sys32_truncate_wrapper)
410sys32_truncate_wrapper:
411 llgtr %r2,%r2 # const char * 348 llgtr %r2,%r2 # const char *
412 lgfr %r3,%r3 # long 349 lgfr %r3,%r3 # long
413 jg sys_truncate # branch to system call 350 jg sys_truncate # branch to system call
414 351
415 .globl sys32_ftruncate_wrapper 352ENTRY(sys32_ftruncate_wrapper)
416sys32_ftruncate_wrapper:
417 llgfr %r2,%r2 # unsigned int 353 llgfr %r2,%r2 # unsigned int
418 llgfr %r3,%r3 # unsigned long 354 llgfr %r3,%r3 # unsigned long
419 jg sys_ftruncate # branch to system call 355 jg sys_ftruncate # branch to system call
420 356
421 .globl sys32_fchmod_wrapper 357ENTRY(sys32_fchmod_wrapper)
422sys32_fchmod_wrapper:
423 llgfr %r2,%r2 # unsigned int 358 llgfr %r2,%r2 # unsigned int
424 llgfr %r3,%r3 # mode_t 359 llgfr %r3,%r3 # mode_t
425 jg sys_fchmod # branch to system call 360 jg sys_fchmod # branch to system call
426 361
427 .globl sys32_fchown16_wrapper 362ENTRY(sys32_fchown16_wrapper)
428sys32_fchown16_wrapper:
429 llgfr %r2,%r2 # unsigned int 363 llgfr %r2,%r2 # unsigned int
430 llgfr %r3,%r3 # compat_uid_t 364 llgfr %r3,%r3 # compat_uid_t
431 llgfr %r4,%r4 # compat_uid_t 365 llgfr %r4,%r4 # compat_uid_t
432 jg sys32_fchown16 # branch to system call 366 jg sys32_fchown16 # branch to system call
433 367
434 .globl sys32_getpriority_wrapper 368ENTRY(sys32_getpriority_wrapper)
435sys32_getpriority_wrapper:
436 lgfr %r2,%r2 # int 369 lgfr %r2,%r2 # int
437 lgfr %r3,%r3 # int 370 lgfr %r3,%r3 # int
438 jg sys_getpriority # branch to system call 371 jg sys_getpriority # branch to system call
439 372
440 .globl sys32_setpriority_wrapper 373ENTRY(sys32_setpriority_wrapper)
441sys32_setpriority_wrapper:
442 lgfr %r2,%r2 # int 374 lgfr %r2,%r2 # int
443 lgfr %r3,%r3 # int 375 lgfr %r3,%r3 # int
444 lgfr %r4,%r4 # int 376 lgfr %r4,%r4 # int
445 jg sys_setpriority # branch to system call 377 jg sys_setpriority # branch to system call
446 378
447 .globl compat_sys_statfs_wrapper 379ENTRY(compat_sys_statfs_wrapper)
448compat_sys_statfs_wrapper:
449 llgtr %r2,%r2 # char * 380 llgtr %r2,%r2 # char *
450 llgtr %r3,%r3 # struct compat_statfs * 381 llgtr %r3,%r3 # struct compat_statfs *
451 jg compat_sys_statfs # branch to system call 382 jg compat_sys_statfs # branch to system call
452 383
453 .globl compat_sys_fstatfs_wrapper 384ENTRY(compat_sys_fstatfs_wrapper)
454compat_sys_fstatfs_wrapper:
455 llgfr %r2,%r2 # unsigned int 385 llgfr %r2,%r2 # unsigned int
456 llgtr %r3,%r3 # struct compat_statfs * 386 llgtr %r3,%r3 # struct compat_statfs *
457 jg compat_sys_fstatfs # branch to system call 387 jg compat_sys_fstatfs # branch to system call
458 388
459 .globl compat_sys_socketcall_wrapper 389ENTRY(compat_sys_socketcall_wrapper)
460compat_sys_socketcall_wrapper:
461 lgfr %r2,%r2 # int 390 lgfr %r2,%r2 # int
462 llgtr %r3,%r3 # u32 * 391 llgtr %r3,%r3 # u32 *
463 jg compat_sys_socketcall # branch to system call 392 jg compat_sys_socketcall # branch to system call
464 393
465 .globl sys32_syslog_wrapper 394ENTRY(sys32_syslog_wrapper)
466sys32_syslog_wrapper:
467 lgfr %r2,%r2 # int 395 lgfr %r2,%r2 # int
468 llgtr %r3,%r3 # char * 396 llgtr %r3,%r3 # char *
469 lgfr %r4,%r4 # int 397 lgfr %r4,%r4 # int
470 jg sys_syslog # branch to system call 398 jg sys_syslog # branch to system call
471 399
472 .globl compat_sys_setitimer_wrapper 400ENTRY(compat_sys_setitimer_wrapper)
473compat_sys_setitimer_wrapper:
474 lgfr %r2,%r2 # int 401 lgfr %r2,%r2 # int
475 llgtr %r3,%r3 # struct itimerval_emu31 * 402 llgtr %r3,%r3 # struct itimerval_emu31 *
476 llgtr %r4,%r4 # struct itimerval_emu31 * 403 llgtr %r4,%r4 # struct itimerval_emu31 *
477 jg compat_sys_setitimer # branch to system call 404 jg compat_sys_setitimer # branch to system call
478 405
479 .globl compat_sys_getitimer_wrapper 406ENTRY(compat_sys_getitimer_wrapper)
480compat_sys_getitimer_wrapper:
481 lgfr %r2,%r2 # int 407 lgfr %r2,%r2 # int
482 llgtr %r3,%r3 # struct itimerval_emu31 * 408 llgtr %r3,%r3 # struct itimerval_emu31 *
483 jg compat_sys_getitimer # branch to system call 409 jg compat_sys_getitimer # branch to system call
484 410
485 .globl compat_sys_newstat_wrapper 411ENTRY(compat_sys_newstat_wrapper)
486compat_sys_newstat_wrapper:
487 llgtr %r2,%r2 # char * 412 llgtr %r2,%r2 # char *
488 llgtr %r3,%r3 # struct stat_emu31 * 413 llgtr %r3,%r3 # struct stat_emu31 *
489 jg compat_sys_newstat # branch to system call 414 jg compat_sys_newstat # branch to system call
490 415
491 .globl compat_sys_newlstat_wrapper 416ENTRY(compat_sys_newlstat_wrapper)
492compat_sys_newlstat_wrapper:
493 llgtr %r2,%r2 # char * 417 llgtr %r2,%r2 # char *
494 llgtr %r3,%r3 # struct stat_emu31 * 418 llgtr %r3,%r3 # struct stat_emu31 *
495 jg compat_sys_newlstat # branch to system call 419 jg compat_sys_newlstat # branch to system call
496 420
497 .globl compat_sys_newfstat_wrapper 421ENTRY(compat_sys_newfstat_wrapper)
498compat_sys_newfstat_wrapper:
499 llgfr %r2,%r2 # unsigned int 422 llgfr %r2,%r2 # unsigned int
500 llgtr %r3,%r3 # struct stat_emu31 * 423 llgtr %r3,%r3 # struct stat_emu31 *
501 jg compat_sys_newfstat # branch to system call 424 jg compat_sys_newfstat # branch to system call
502 425
503#sys32_vhangup_wrapper # void 426#sys32_vhangup_wrapper # void
504 427
505 .globl compat_sys_wait4_wrapper 428ENTRY(compat_sys_wait4_wrapper)
506compat_sys_wait4_wrapper:
507 lgfr %r2,%r2 # pid_t 429 lgfr %r2,%r2 # pid_t
508 llgtr %r3,%r3 # unsigned int * 430 llgtr %r3,%r3 # unsigned int *
509 lgfr %r4,%r4 # int 431 lgfr %r4,%r4 # int
510 llgtr %r5,%r5 # struct rusage * 432 llgtr %r5,%r5 # struct rusage *
511 jg compat_sys_wait4 # branch to system call 433 jg compat_sys_wait4 # branch to system call
512 434
513 .globl sys32_swapoff_wrapper 435ENTRY(sys32_swapoff_wrapper)
514sys32_swapoff_wrapper:
515 llgtr %r2,%r2 # const char * 436 llgtr %r2,%r2 # const char *
516 jg sys_swapoff # branch to system call 437 jg sys_swapoff # branch to system call
517 438
518 .globl compat_sys_sysinfo_wrapper 439ENTRY(compat_sys_sysinfo_wrapper)
519compat_sys_sysinfo_wrapper:
520 llgtr %r2,%r2 # struct sysinfo_emu31 * 440 llgtr %r2,%r2 # struct sysinfo_emu31 *
521 jg compat_sys_sysinfo # branch to system call 441 jg compat_sys_sysinfo # branch to system call
522 442
523 .globl sys32_ipc_wrapper 443ENTRY(sys32_ipc_wrapper)
524sys32_ipc_wrapper:
525 llgfr %r2,%r2 # uint 444 llgfr %r2,%r2 # uint
526 lgfr %r3,%r3 # int 445 lgfr %r3,%r3 # int
527 lgfr %r4,%r4 # int 446 lgfr %r4,%r4 # int
@@ -529,8 +448,7 @@ sys32_ipc_wrapper:
529 llgfr %r6,%r6 # u32 448 llgfr %r6,%r6 # u32
530 jg sys32_ipc # branch to system call 449 jg sys32_ipc # branch to system call
531 450
532 .globl sys32_fsync_wrapper 451ENTRY(sys32_fsync_wrapper)
533sys32_fsync_wrapper:
534 llgfr %r2,%r2 # unsigned int 452 llgfr %r2,%r2 # unsigned int
535 jg sys_fsync # branch to system call 453 jg sys_fsync # branch to system call
536 454
@@ -538,97 +456,81 @@ sys32_fsync_wrapper:
538 456
539#sys32_clone_wrapper # done in clone_glue 457#sys32_clone_wrapper # done in clone_glue
540 458
541 .globl sys32_setdomainname_wrapper 459ENTRY(sys32_setdomainname_wrapper)
542sys32_setdomainname_wrapper:
543 llgtr %r2,%r2 # char * 460 llgtr %r2,%r2 # char *
544 lgfr %r3,%r3 # int 461 lgfr %r3,%r3 # int
545 jg sys_setdomainname # branch to system call 462 jg sys_setdomainname # branch to system call
546 463
547 .globl sys32_newuname_wrapper 464ENTRY(sys32_newuname_wrapper)
548sys32_newuname_wrapper:
549 llgtr %r2,%r2 # struct new_utsname * 465 llgtr %r2,%r2 # struct new_utsname *
550 jg sys_newuname # branch to system call 466 jg sys_newuname # branch to system call
551 467
552 .globl compat_sys_adjtimex_wrapper 468ENTRY(compat_sys_adjtimex_wrapper)
553compat_sys_adjtimex_wrapper:
554 llgtr %r2,%r2 # struct compat_timex * 469 llgtr %r2,%r2 # struct compat_timex *
555 jg compat_sys_adjtimex # branch to system call 470 jg compat_sys_adjtimex # branch to system call
556 471
557 .globl sys32_mprotect_wrapper 472ENTRY(sys32_mprotect_wrapper)
558sys32_mprotect_wrapper:
559 llgtr %r2,%r2 # unsigned long (actually pointer 473 llgtr %r2,%r2 # unsigned long (actually pointer
560 llgfr %r3,%r3 # size_t 474 llgfr %r3,%r3 # size_t
561 llgfr %r4,%r4 # unsigned long 475 llgfr %r4,%r4 # unsigned long
562 jg sys_mprotect # branch to system call 476 jg sys_mprotect # branch to system call
563 477
564 .globl compat_sys_sigprocmask_wrapper 478ENTRY(compat_sys_sigprocmask_wrapper)
565compat_sys_sigprocmask_wrapper:
566 lgfr %r2,%r2 # int 479 lgfr %r2,%r2 # int
567 llgtr %r3,%r3 # compat_old_sigset_t * 480 llgtr %r3,%r3 # compat_old_sigset_t *
568 llgtr %r4,%r4 # compat_old_sigset_t * 481 llgtr %r4,%r4 # compat_old_sigset_t *
569 jg compat_sys_sigprocmask # branch to system call 482 jg compat_sys_sigprocmask # branch to system call
570 483
571 .globl sys_init_module_wrapper 484ENTRY(sys_init_module_wrapper)
572sys_init_module_wrapper:
573 llgtr %r2,%r2 # void * 485 llgtr %r2,%r2 # void *
574 llgfr %r3,%r3 # unsigned long 486 llgfr %r3,%r3 # unsigned long
575 llgtr %r4,%r4 # char * 487 llgtr %r4,%r4 # char *
576 jg sys_init_module # branch to system call 488 jg sys_init_module # branch to system call
577 489
578 .globl sys_delete_module_wrapper 490ENTRY(sys_delete_module_wrapper)
579sys_delete_module_wrapper:
580 llgtr %r2,%r2 # const char * 491 llgtr %r2,%r2 # const char *
581 llgfr %r3,%r3 # unsigned int 492 llgfr %r3,%r3 # unsigned int
582 jg sys_delete_module # branch to system call 493 jg sys_delete_module # branch to system call
583 494
584 .globl sys32_quotactl_wrapper 495ENTRY(sys32_quotactl_wrapper)
585sys32_quotactl_wrapper:
586 llgfr %r2,%r2 # unsigned int 496 llgfr %r2,%r2 # unsigned int
587 llgtr %r3,%r3 # const char * 497 llgtr %r3,%r3 # const char *
588 llgfr %r4,%r4 # qid_t 498 llgfr %r4,%r4 # qid_t
589 llgtr %r5,%r5 # caddr_t 499 llgtr %r5,%r5 # caddr_t
590 jg sys_quotactl # branch to system call 500 jg sys_quotactl # branch to system call
591 501
592 .globl sys32_getpgid_wrapper 502ENTRY(sys32_getpgid_wrapper)
593sys32_getpgid_wrapper:
594 lgfr %r2,%r2 # pid_t 503 lgfr %r2,%r2 # pid_t
595 jg sys_getpgid # branch to system call 504 jg sys_getpgid # branch to system call
596 505
597 .globl sys32_fchdir_wrapper 506ENTRY(sys32_fchdir_wrapper)
598sys32_fchdir_wrapper:
599 llgfr %r2,%r2 # unsigned int 507 llgfr %r2,%r2 # unsigned int
600 jg sys_fchdir # branch to system call 508 jg sys_fchdir # branch to system call
601 509
602 .globl sys32_bdflush_wrapper 510ENTRY(sys32_bdflush_wrapper)
603sys32_bdflush_wrapper:
604 lgfr %r2,%r2 # int 511 lgfr %r2,%r2 # int
605 lgfr %r3,%r3 # long 512 lgfr %r3,%r3 # long
606 jg sys_bdflush # branch to system call 513 jg sys_bdflush # branch to system call
607 514
608 .globl sys32_sysfs_wrapper 515ENTRY(sys32_sysfs_wrapper)
609sys32_sysfs_wrapper:
610 lgfr %r2,%r2 # int 516 lgfr %r2,%r2 # int
611 llgfr %r3,%r3 # unsigned long 517 llgfr %r3,%r3 # unsigned long
612 llgfr %r4,%r4 # unsigned long 518 llgfr %r4,%r4 # unsigned long
613 jg sys_sysfs # branch to system call 519 jg sys_sysfs # branch to system call
614 520
615 .globl sys32_personality_wrapper 521ENTRY(sys32_personality_wrapper)
616sys32_personality_wrapper:
617 llgfr %r2,%r2 # unsigned int 522 llgfr %r2,%r2 # unsigned int
618 jg sys_s390_personality # branch to system call 523 jg sys_s390_personality # branch to system call
619 524
620 .globl sys32_setfsuid16_wrapper 525ENTRY(sys32_setfsuid16_wrapper)
621sys32_setfsuid16_wrapper:
622 llgfr %r2,%r2 # __kernel_old_uid_emu31_t 526 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
623 jg sys32_setfsuid16 # branch to system call 527 jg sys32_setfsuid16 # branch to system call
624 528
625 .globl sys32_setfsgid16_wrapper 529ENTRY(sys32_setfsgid16_wrapper)
626sys32_setfsgid16_wrapper:
627 llgfr %r2,%r2 # __kernel_old_gid_emu31_t 530 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
628 jg sys32_setfsgid16 # branch to system call 531 jg sys32_setfsgid16 # branch to system call
629 532
630 .globl sys32_llseek_wrapper 533ENTRY(sys32_llseek_wrapper)
631sys32_llseek_wrapper:
632 llgfr %r2,%r2 # unsigned int 534 llgfr %r2,%r2 # unsigned int
633 llgfr %r3,%r3 # unsigned long 535 llgfr %r3,%r3 # unsigned long
634 llgfr %r4,%r4 # unsigned long 536 llgfr %r4,%r4 # unsigned long
@@ -636,15 +538,13 @@ sys32_llseek_wrapper:
636 llgfr %r6,%r6 # unsigned int 538 llgfr %r6,%r6 # unsigned int
637 jg sys_llseek # branch to system call 539 jg sys_llseek # branch to system call
638 540
639 .globl sys32_getdents_wrapper 541ENTRY(sys32_getdents_wrapper)
640sys32_getdents_wrapper:
641 llgfr %r2,%r2 # unsigned int 542 llgfr %r2,%r2 # unsigned int
642 llgtr %r3,%r3 # void * 543 llgtr %r3,%r3 # void *
643 llgfr %r4,%r4 # unsigned int 544 llgfr %r4,%r4 # unsigned int
644 jg compat_sys_getdents # branch to system call 545 jg compat_sys_getdents # branch to system call
645 546
646 .globl compat_sys_select_wrapper 547ENTRY(compat_sys_select_wrapper)
647compat_sys_select_wrapper:
648 lgfr %r2,%r2 # int 548 lgfr %r2,%r2 # int
649 llgtr %r3,%r3 # compat_fd_set * 549 llgtr %r3,%r3 # compat_fd_set *
650 llgtr %r4,%r4 # compat_fd_set * 550 llgtr %r4,%r4 # compat_fd_set *
@@ -652,112 +552,94 @@ compat_sys_select_wrapper:
652 llgtr %r6,%r6 # struct compat_timeval * 552 llgtr %r6,%r6 # struct compat_timeval *
653 jg compat_sys_select # branch to system call 553 jg compat_sys_select # branch to system call
654 554
655 .globl sys32_flock_wrapper 555ENTRY(sys32_flock_wrapper)
656sys32_flock_wrapper:
657 llgfr %r2,%r2 # unsigned int 556 llgfr %r2,%r2 # unsigned int
658 llgfr %r3,%r3 # unsigned int 557 llgfr %r3,%r3 # unsigned int
659 jg sys_flock # branch to system call 558 jg sys_flock # branch to system call
660 559
661 .globl sys32_msync_wrapper 560ENTRY(sys32_msync_wrapper)
662sys32_msync_wrapper:
663 llgfr %r2,%r2 # unsigned long 561 llgfr %r2,%r2 # unsigned long
664 llgfr %r3,%r3 # size_t 562 llgfr %r3,%r3 # size_t
665 lgfr %r4,%r4 # int 563 lgfr %r4,%r4 # int
666 jg sys_msync # branch to system call 564 jg sys_msync # branch to system call
667 565
668 .globl compat_sys_readv_wrapper 566ENTRY(compat_sys_readv_wrapper)
669compat_sys_readv_wrapper:
670 lgfr %r2,%r2 # int 567 lgfr %r2,%r2 # int
671 llgtr %r3,%r3 # const struct compat_iovec * 568 llgtr %r3,%r3 # const struct compat_iovec *
672 llgfr %r4,%r4 # unsigned long 569 llgfr %r4,%r4 # unsigned long
673 jg compat_sys_readv # branch to system call 570 jg compat_sys_readv # branch to system call
674 571
675 .globl compat_sys_writev_wrapper 572ENTRY(compat_sys_writev_wrapper)
676compat_sys_writev_wrapper:
677 lgfr %r2,%r2 # int 573 lgfr %r2,%r2 # int
678 llgtr %r3,%r3 # const struct compat_iovec * 574 llgtr %r3,%r3 # const struct compat_iovec *
679 llgfr %r4,%r4 # unsigned long 575 llgfr %r4,%r4 # unsigned long
680 jg compat_sys_writev # branch to system call 576 jg compat_sys_writev # branch to system call
681 577
682 .globl sys32_getsid_wrapper 578ENTRY(sys32_getsid_wrapper)
683sys32_getsid_wrapper:
684 lgfr %r2,%r2 # pid_t 579 lgfr %r2,%r2 # pid_t
685 jg sys_getsid # branch to system call 580 jg sys_getsid # branch to system call
686 581
687 .globl sys32_fdatasync_wrapper 582ENTRY(sys32_fdatasync_wrapper)
688sys32_fdatasync_wrapper:
689 llgfr %r2,%r2 # unsigned int 583 llgfr %r2,%r2 # unsigned int
690 jg sys_fdatasync # branch to system call 584 jg sys_fdatasync # branch to system call
691 585
692 .globl sys32_mlock_wrapper 586ENTRY(sys32_mlock_wrapper)
693sys32_mlock_wrapper:
694 llgfr %r2,%r2 # unsigned long 587 llgfr %r2,%r2 # unsigned long
695 llgfr %r3,%r3 # size_t 588 llgfr %r3,%r3 # size_t
696 jg sys_mlock # branch to system call 589 jg sys_mlock # branch to system call
697 590
698 .globl sys32_munlock_wrapper 591ENTRY(sys32_munlock_wrapper)
699sys32_munlock_wrapper:
700 llgfr %r2,%r2 # unsigned long 592 llgfr %r2,%r2 # unsigned long
701 llgfr %r3,%r3 # size_t 593 llgfr %r3,%r3 # size_t
702 jg sys_munlock # branch to system call 594 jg sys_munlock # branch to system call
703 595
704 .globl sys32_mlockall_wrapper 596ENTRY(sys32_mlockall_wrapper)
705sys32_mlockall_wrapper:
706 lgfr %r2,%r2 # int 597 lgfr %r2,%r2 # int
707 jg sys_mlockall # branch to system call 598 jg sys_mlockall # branch to system call
708 599
709#sys32_munlockall_wrapper # void 600#sys32_munlockall_wrapper # void
710 601
711 .globl sys32_sched_setparam_wrapper 602ENTRY(sys32_sched_setparam_wrapper)
712sys32_sched_setparam_wrapper:
713 lgfr %r2,%r2 # pid_t 603 lgfr %r2,%r2 # pid_t
714 llgtr %r3,%r3 # struct sched_param * 604 llgtr %r3,%r3 # struct sched_param *
715 jg sys_sched_setparam # branch to system call 605 jg sys_sched_setparam # branch to system call
716 606
717 .globl sys32_sched_getparam_wrapper 607ENTRY(sys32_sched_getparam_wrapper)
718sys32_sched_getparam_wrapper:
719 lgfr %r2,%r2 # pid_t 608 lgfr %r2,%r2 # pid_t
720 llgtr %r3,%r3 # struct sched_param * 609 llgtr %r3,%r3 # struct sched_param *
721 jg sys_sched_getparam # branch to system call 610 jg sys_sched_getparam # branch to system call
722 611
723 .globl sys32_sched_setscheduler_wrapper 612ENTRY(sys32_sched_setscheduler_wrapper)
724sys32_sched_setscheduler_wrapper:
725 lgfr %r2,%r2 # pid_t 613 lgfr %r2,%r2 # pid_t
726 lgfr %r3,%r3 # int 614 lgfr %r3,%r3 # int
727 llgtr %r4,%r4 # struct sched_param * 615 llgtr %r4,%r4 # struct sched_param *
728 jg sys_sched_setscheduler # branch to system call 616 jg sys_sched_setscheduler # branch to system call
729 617
730 .globl sys32_sched_getscheduler_wrapper 618ENTRY(sys32_sched_getscheduler_wrapper)
731sys32_sched_getscheduler_wrapper:
732 lgfr %r2,%r2 # pid_t 619 lgfr %r2,%r2 # pid_t
733 jg sys_sched_getscheduler # branch to system call 620 jg sys_sched_getscheduler # branch to system call
734 621
735#sys32_sched_yield_wrapper # void 622#sys32_sched_yield_wrapper # void
736 623
737 .globl sys32_sched_get_priority_max_wrapper 624ENTRY(sys32_sched_get_priority_max_wrapper)
738sys32_sched_get_priority_max_wrapper:
739 lgfr %r2,%r2 # int 625 lgfr %r2,%r2 # int
740 jg sys_sched_get_priority_max # branch to system call 626 jg sys_sched_get_priority_max # branch to system call
741 627
742 .globl sys32_sched_get_priority_min_wrapper 628ENTRY(sys32_sched_get_priority_min_wrapper)
743sys32_sched_get_priority_min_wrapper:
744 lgfr %r2,%r2 # int 629 lgfr %r2,%r2 # int
745 jg sys_sched_get_priority_min # branch to system call 630 jg sys_sched_get_priority_min # branch to system call
746 631
747 .globl sys32_sched_rr_get_interval_wrapper 632ENTRY(sys32_sched_rr_get_interval_wrapper)
748sys32_sched_rr_get_interval_wrapper:
749 lgfr %r2,%r2 # pid_t 633 lgfr %r2,%r2 # pid_t
750 llgtr %r3,%r3 # struct compat_timespec * 634 llgtr %r3,%r3 # struct compat_timespec *
751 jg sys32_sched_rr_get_interval # branch to system call 635 jg sys32_sched_rr_get_interval # branch to system call
752 636
753 .globl compat_sys_nanosleep_wrapper 637ENTRY(compat_sys_nanosleep_wrapper)
754compat_sys_nanosleep_wrapper:
755 llgtr %r2,%r2 # struct compat_timespec * 638 llgtr %r2,%r2 # struct compat_timespec *
756 llgtr %r3,%r3 # struct compat_timespec * 639 llgtr %r3,%r3 # struct compat_timespec *
757 jg compat_sys_nanosleep # branch to system call 640 jg compat_sys_nanosleep # branch to system call
758 641
759 .globl sys32_mremap_wrapper 642ENTRY(sys32_mremap_wrapper)
760sys32_mremap_wrapper:
761 llgfr %r2,%r2 # unsigned long 643 llgfr %r2,%r2 # unsigned long
762 llgfr %r3,%r3 # unsigned long 644 llgfr %r3,%r3 # unsigned long
763 llgfr %r4,%r4 # unsigned long 645 llgfr %r4,%r4 # unsigned long
@@ -765,50 +647,43 @@ sys32_mremap_wrapper:
765 llgfr %r6,%r6 # unsigned long 647 llgfr %r6,%r6 # unsigned long
766 jg sys_mremap # branch to system call 648 jg sys_mremap # branch to system call
767 649
768 .globl sys32_setresuid16_wrapper 650ENTRY(sys32_setresuid16_wrapper)
769sys32_setresuid16_wrapper:
770 llgfr %r2,%r2 # __kernel_old_uid_emu31_t 651 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
771 llgfr %r3,%r3 # __kernel_old_uid_emu31_t 652 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
772 llgfr %r4,%r4 # __kernel_old_uid_emu31_t 653 llgfr %r4,%r4 # __kernel_old_uid_emu31_t
773 jg sys32_setresuid16 # branch to system call 654 jg sys32_setresuid16 # branch to system call
774 655
775 .globl sys32_getresuid16_wrapper 656ENTRY(sys32_getresuid16_wrapper)
776sys32_getresuid16_wrapper:
777 llgtr %r2,%r2 # __kernel_old_uid_emu31_t * 657 llgtr %r2,%r2 # __kernel_old_uid_emu31_t *
778 llgtr %r3,%r3 # __kernel_old_uid_emu31_t * 658 llgtr %r3,%r3 # __kernel_old_uid_emu31_t *
779 llgtr %r4,%r4 # __kernel_old_uid_emu31_t * 659 llgtr %r4,%r4 # __kernel_old_uid_emu31_t *
780 jg sys32_getresuid16 # branch to system call 660 jg sys32_getresuid16 # branch to system call
781 661
782 .globl sys32_poll_wrapper 662ENTRY(sys32_poll_wrapper)
783sys32_poll_wrapper:
784 llgtr %r2,%r2 # struct pollfd * 663 llgtr %r2,%r2 # struct pollfd *
785 llgfr %r3,%r3 # unsigned int 664 llgfr %r3,%r3 # unsigned int
786 lgfr %r4,%r4 # long 665 lgfr %r4,%r4 # long
787 jg sys_poll # branch to system call 666 jg sys_poll # branch to system call
788 667
789 .globl compat_sys_nfsservctl_wrapper 668ENTRY(compat_sys_nfsservctl_wrapper)
790compat_sys_nfsservctl_wrapper:
791 lgfr %r2,%r2 # int 669 lgfr %r2,%r2 # int
792 llgtr %r3,%r3 # struct compat_nfsctl_arg* 670 llgtr %r3,%r3 # struct compat_nfsctl_arg*
793 llgtr %r4,%r4 # union compat_nfsctl_res* 671 llgtr %r4,%r4 # union compat_nfsctl_res*
794 jg compat_sys_nfsservctl # branch to system call 672 jg compat_sys_nfsservctl # branch to system call
795 673
796 .globl sys32_setresgid16_wrapper 674ENTRY(sys32_setresgid16_wrapper)
797sys32_setresgid16_wrapper:
798 llgfr %r2,%r2 # __kernel_old_gid_emu31_t 675 llgfr %r2,%r2 # __kernel_old_gid_emu31_t
799 llgfr %r3,%r3 # __kernel_old_gid_emu31_t 676 llgfr %r3,%r3 # __kernel_old_gid_emu31_t
800 llgfr %r4,%r4 # __kernel_old_gid_emu31_t 677 llgfr %r4,%r4 # __kernel_old_gid_emu31_t
801 jg sys32_setresgid16 # branch to system call 678 jg sys32_setresgid16 # branch to system call
802 679
803 .globl sys32_getresgid16_wrapper 680ENTRY(sys32_getresgid16_wrapper)
804sys32_getresgid16_wrapper:
805 llgtr %r2,%r2 # __kernel_old_gid_emu31_t * 681 llgtr %r2,%r2 # __kernel_old_gid_emu31_t *
806 llgtr %r3,%r3 # __kernel_old_gid_emu31_t * 682 llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
807 llgtr %r4,%r4 # __kernel_old_gid_emu31_t * 683 llgtr %r4,%r4 # __kernel_old_gid_emu31_t *
808 jg sys32_getresgid16 # branch to system call 684 jg sys32_getresgid16 # branch to system call
809 685
810 .globl sys32_prctl_wrapper 686ENTRY(sys32_prctl_wrapper)
811sys32_prctl_wrapper:
812 lgfr %r2,%r2 # int 687 lgfr %r2,%r2 # int
813 llgfr %r3,%r3 # unsigned long 688 llgfr %r3,%r3 # unsigned long
814 llgfr %r4,%r4 # unsigned long 689 llgfr %r4,%r4 # unsigned long
@@ -818,51 +693,44 @@ sys32_prctl_wrapper:
818 693
819#sys32_rt_sigreturn_wrapper # done in rt_sigreturn_glue 694#sys32_rt_sigreturn_wrapper # done in rt_sigreturn_glue
820 695
821 .globl sys32_rt_sigaction_wrapper 696ENTRY(sys32_rt_sigaction_wrapper)
822sys32_rt_sigaction_wrapper:
823 lgfr %r2,%r2 # int 697 lgfr %r2,%r2 # int
824 llgtr %r3,%r3 # const struct sigaction_emu31 * 698 llgtr %r3,%r3 # const struct sigaction_emu31 *
825 llgtr %r4,%r4 # const struct sigaction_emu31 * 699 llgtr %r4,%r4 # const struct sigaction_emu31 *
826 llgfr %r5,%r5 # size_t 700 llgfr %r5,%r5 # size_t
827 jg sys32_rt_sigaction # branch to system call 701 jg sys32_rt_sigaction # branch to system call
828 702
829 .globl sys32_rt_sigprocmask_wrapper 703ENTRY(sys32_rt_sigprocmask_wrapper)
830sys32_rt_sigprocmask_wrapper:
831 lgfr %r2,%r2 # int 704 lgfr %r2,%r2 # int
832 llgtr %r3,%r3 # old_sigset_emu31 * 705 llgtr %r3,%r3 # old_sigset_emu31 *
833 llgtr %r4,%r4 # old_sigset_emu31 * 706 llgtr %r4,%r4 # old_sigset_emu31 *
834 llgfr %r5,%r5 # size_t 707 llgfr %r5,%r5 # size_t
835 jg sys32_rt_sigprocmask # branch to system call 708 jg sys32_rt_sigprocmask # branch to system call
836 709
837 .globl sys32_rt_sigpending_wrapper 710ENTRY(sys32_rt_sigpending_wrapper)
838sys32_rt_sigpending_wrapper:
839 llgtr %r2,%r2 # sigset_emu31 * 711 llgtr %r2,%r2 # sigset_emu31 *
840 llgfr %r3,%r3 # size_t 712 llgfr %r3,%r3 # size_t
841 jg sys32_rt_sigpending # branch to system call 713 jg sys32_rt_sigpending # branch to system call
842 714
843 .globl compat_sys_rt_sigtimedwait_wrapper 715ENTRY(compat_sys_rt_sigtimedwait_wrapper)
844compat_sys_rt_sigtimedwait_wrapper:
845 llgtr %r2,%r2 # const sigset_emu31_t * 716 llgtr %r2,%r2 # const sigset_emu31_t *
846 llgtr %r3,%r3 # siginfo_emu31_t * 717 llgtr %r3,%r3 # siginfo_emu31_t *
847 llgtr %r4,%r4 # const struct compat_timespec * 718 llgtr %r4,%r4 # const struct compat_timespec *
848 llgfr %r5,%r5 # size_t 719 llgfr %r5,%r5 # size_t
849 jg compat_sys_rt_sigtimedwait # branch to system call 720 jg compat_sys_rt_sigtimedwait # branch to system call
850 721
851 .globl sys32_rt_sigqueueinfo_wrapper 722ENTRY(sys32_rt_sigqueueinfo_wrapper)
852sys32_rt_sigqueueinfo_wrapper:
853 lgfr %r2,%r2 # int 723 lgfr %r2,%r2 # int
854 lgfr %r3,%r3 # int 724 lgfr %r3,%r3 # int
855 llgtr %r4,%r4 # siginfo_emu31_t * 725 llgtr %r4,%r4 # siginfo_emu31_t *
856 jg sys32_rt_sigqueueinfo # branch to system call 726 jg sys32_rt_sigqueueinfo # branch to system call
857 727
858 .globl compat_sys_rt_sigsuspend_wrapper 728ENTRY(compat_sys_rt_sigsuspend_wrapper)
859compat_sys_rt_sigsuspend_wrapper:
860 llgtr %r2,%r2 # compat_sigset_t * 729 llgtr %r2,%r2 # compat_sigset_t *
861 llgfr %r3,%r3 # compat_size_t 730 llgfr %r3,%r3 # compat_size_t
862 jg compat_sys_rt_sigsuspend 731 jg compat_sys_rt_sigsuspend
863 732
864 .globl sys32_pread64_wrapper 733ENTRY(sys32_pread64_wrapper)
865sys32_pread64_wrapper:
866 llgfr %r2,%r2 # unsigned int 734 llgfr %r2,%r2 # unsigned int
867 llgtr %r3,%r3 # char * 735 llgtr %r3,%r3 # char *
868 llgfr %r4,%r4 # size_t 736 llgfr %r4,%r4 # size_t
@@ -870,8 +738,7 @@ sys32_pread64_wrapper:
870 llgfr %r6,%r6 # u32 738 llgfr %r6,%r6 # u32
871 jg sys32_pread64 # branch to system call 739 jg sys32_pread64 # branch to system call
872 740
873 .globl sys32_pwrite64_wrapper 741ENTRY(sys32_pwrite64_wrapper)
874sys32_pwrite64_wrapper:
875 llgfr %r2,%r2 # unsigned int 742 llgfr %r2,%r2 # unsigned int
876 llgtr %r3,%r3 # const char * 743 llgtr %r3,%r3 # const char *
877 llgfr %r4,%r4 # size_t 744 llgfr %r4,%r4 # size_t
@@ -879,39 +746,33 @@ sys32_pwrite64_wrapper:
879 llgfr %r6,%r6 # u32 746 llgfr %r6,%r6 # u32
880 jg sys32_pwrite64 # branch to system call 747 jg sys32_pwrite64 # branch to system call
881 748
882 .globl sys32_chown16_wrapper 749ENTRY(sys32_chown16_wrapper)
883sys32_chown16_wrapper:
884 llgtr %r2,%r2 # const char * 750 llgtr %r2,%r2 # const char *
885 llgfr %r3,%r3 # __kernel_old_uid_emu31_t 751 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
886 llgfr %r4,%r4 # __kernel_old_gid_emu31_t 752 llgfr %r4,%r4 # __kernel_old_gid_emu31_t
887 jg sys32_chown16 # branch to system call 753 jg sys32_chown16 # branch to system call
888 754
889 .globl sys32_getcwd_wrapper 755ENTRY(sys32_getcwd_wrapper)
890sys32_getcwd_wrapper:
891 llgtr %r2,%r2 # char * 756 llgtr %r2,%r2 # char *
892 llgfr %r3,%r3 # unsigned long 757 llgfr %r3,%r3 # unsigned long
893 jg sys_getcwd # branch to system call 758 jg sys_getcwd # branch to system call
894 759
895 .globl sys32_capget_wrapper 760ENTRY(sys32_capget_wrapper)
896sys32_capget_wrapper:
897 llgtr %r2,%r2 # cap_user_header_t 761 llgtr %r2,%r2 # cap_user_header_t
898 llgtr %r3,%r3 # cap_user_data_t 762 llgtr %r3,%r3 # cap_user_data_t
899 jg sys_capget # branch to system call 763 jg sys_capget # branch to system call
900 764
901 .globl sys32_capset_wrapper 765ENTRY(sys32_capset_wrapper)
902sys32_capset_wrapper:
903 llgtr %r2,%r2 # cap_user_header_t 766 llgtr %r2,%r2 # cap_user_header_t
904 llgtr %r3,%r3 # const cap_user_data_t 767 llgtr %r3,%r3 # const cap_user_data_t
905 jg sys_capset # branch to system call 768 jg sys_capset # branch to system call
906 769
907 .globl sys32_sigaltstack_wrapper 770ENTRY(sys32_sigaltstack_wrapper)
908sys32_sigaltstack_wrapper:
909 llgtr %r2,%r2 # const stack_emu31_t * 771 llgtr %r2,%r2 # const stack_emu31_t *
910 llgtr %r3,%r3 # stack_emu31_t * 772 llgtr %r3,%r3 # stack_emu31_t *
911 jg sys32_sigaltstack 773 jg sys32_sigaltstack
912 774
913 .globl sys32_sendfile_wrapper 775ENTRY(sys32_sendfile_wrapper)
914sys32_sendfile_wrapper:
915 lgfr %r2,%r2 # int 776 lgfr %r2,%r2 # int
916 lgfr %r3,%r3 # int 777 lgfr %r3,%r3 # int
917 llgtr %r4,%r4 # __kernel_off_emu31_t * 778 llgtr %r4,%r4 # __kernel_off_emu31_t *
@@ -920,22 +781,19 @@ sys32_sendfile_wrapper:
920 781
921#sys32_vfork_wrapper # done in vfork_glue 782#sys32_vfork_wrapper # done in vfork_glue
922 783
923 .globl sys32_truncate64_wrapper 784ENTRY(sys32_truncate64_wrapper)
924sys32_truncate64_wrapper:
925 llgtr %r2,%r2 # const char * 785 llgtr %r2,%r2 # const char *
926 llgfr %r3,%r3 # unsigned long 786 llgfr %r3,%r3 # unsigned long
927 llgfr %r4,%r4 # unsigned long 787 llgfr %r4,%r4 # unsigned long
928 jg sys32_truncate64 # branch to system call 788 jg sys32_truncate64 # branch to system call
929 789
930 .globl sys32_ftruncate64_wrapper 790ENTRY(sys32_ftruncate64_wrapper)
931sys32_ftruncate64_wrapper:
932 llgfr %r2,%r2 # unsigned int 791 llgfr %r2,%r2 # unsigned int
933 llgfr %r3,%r3 # unsigned long 792 llgfr %r3,%r3 # unsigned long
934 llgfr %r4,%r4 # unsigned long 793 llgfr %r4,%r4 # unsigned long
935 jg sys32_ftruncate64 # branch to system call 794 jg sys32_ftruncate64 # branch to system call
936 795
937 .globl sys32_lchown_wrapper 796ENTRY(sys32_lchown_wrapper)
938sys32_lchown_wrapper:
939 llgtr %r2,%r2 # const char * 797 llgtr %r2,%r2 # const char *
940 llgfr %r3,%r3 # uid_t 798 llgfr %r3,%r3 # uid_t
941 llgfr %r4,%r4 # gid_t 799 llgfr %r4,%r4 # gid_t
@@ -946,156 +804,131 @@ sys32_lchown_wrapper:
946#sys32_geteuid_wrapper # void 804#sys32_geteuid_wrapper # void
947#sys32_getegid_wrapper # void 805#sys32_getegid_wrapper # void
948 806
949 .globl sys32_setreuid_wrapper 807ENTRY(sys32_setreuid_wrapper)
950sys32_setreuid_wrapper:
951 llgfr %r2,%r2 # uid_t 808 llgfr %r2,%r2 # uid_t
952 llgfr %r3,%r3 # uid_t 809 llgfr %r3,%r3 # uid_t
953 jg sys_setreuid # branch to system call 810 jg sys_setreuid # branch to system call
954 811
955 .globl sys32_setregid_wrapper 812ENTRY(sys32_setregid_wrapper)
956sys32_setregid_wrapper:
957 llgfr %r2,%r2 # gid_t 813 llgfr %r2,%r2 # gid_t
958 llgfr %r3,%r3 # gid_t 814 llgfr %r3,%r3 # gid_t
959 jg sys_setregid # branch to system call 815 jg sys_setregid # branch to system call
960 816
961 .globl sys32_getgroups_wrapper 817ENTRY(sys32_getgroups_wrapper)
962sys32_getgroups_wrapper:
963 lgfr %r2,%r2 # int 818 lgfr %r2,%r2 # int
964 llgtr %r3,%r3 # gid_t * 819 llgtr %r3,%r3 # gid_t *
965 jg sys_getgroups # branch to system call 820 jg sys_getgroups # branch to system call
966 821
967 .globl sys32_setgroups_wrapper 822ENTRY(sys32_setgroups_wrapper)
968sys32_setgroups_wrapper:
969 lgfr %r2,%r2 # int 823 lgfr %r2,%r2 # int
970 llgtr %r3,%r3 # gid_t * 824 llgtr %r3,%r3 # gid_t *
971 jg sys_setgroups # branch to system call 825 jg sys_setgroups # branch to system call
972 826
973 .globl sys32_fchown_wrapper 827ENTRY(sys32_fchown_wrapper)
974sys32_fchown_wrapper:
975 llgfr %r2,%r2 # unsigned int 828 llgfr %r2,%r2 # unsigned int
976 llgfr %r3,%r3 # uid_t 829 llgfr %r3,%r3 # uid_t
977 llgfr %r4,%r4 # gid_t 830 llgfr %r4,%r4 # gid_t
978 jg sys_fchown # branch to system call 831 jg sys_fchown # branch to system call
979 832
980 .globl sys32_setresuid_wrapper 833ENTRY(sys32_setresuid_wrapper)
981sys32_setresuid_wrapper:
982 llgfr %r2,%r2 # uid_t 834 llgfr %r2,%r2 # uid_t
983 llgfr %r3,%r3 # uid_t 835 llgfr %r3,%r3 # uid_t
984 llgfr %r4,%r4 # uid_t 836 llgfr %r4,%r4 # uid_t
985 jg sys_setresuid # branch to system call 837 jg sys_setresuid # branch to system call
986 838
987 .globl sys32_getresuid_wrapper 839ENTRY(sys32_getresuid_wrapper)
988sys32_getresuid_wrapper:
989 llgtr %r2,%r2 # uid_t * 840 llgtr %r2,%r2 # uid_t *
990 llgtr %r3,%r3 # uid_t * 841 llgtr %r3,%r3 # uid_t *
991 llgtr %r4,%r4 # uid_t * 842 llgtr %r4,%r4 # uid_t *
992 jg sys_getresuid # branch to system call 843 jg sys_getresuid # branch to system call
993 844
994 .globl sys32_setresgid_wrapper 845ENTRY(sys32_setresgid_wrapper)
995sys32_setresgid_wrapper:
996 llgfr %r2,%r2 # gid_t 846 llgfr %r2,%r2 # gid_t
997 llgfr %r3,%r3 # gid_t 847 llgfr %r3,%r3 # gid_t
998 llgfr %r4,%r4 # gid_t 848 llgfr %r4,%r4 # gid_t
999 jg sys_setresgid # branch to system call 849 jg sys_setresgid # branch to system call
1000 850
1001 .globl sys32_getresgid_wrapper 851ENTRY(sys32_getresgid_wrapper)
1002sys32_getresgid_wrapper:
1003 llgtr %r2,%r2 # gid_t * 852 llgtr %r2,%r2 # gid_t *
1004 llgtr %r3,%r3 # gid_t * 853 llgtr %r3,%r3 # gid_t *
1005 llgtr %r4,%r4 # gid_t * 854 llgtr %r4,%r4 # gid_t *
1006 jg sys_getresgid # branch to system call 855 jg sys_getresgid # branch to system call
1007 856
1008 .globl sys32_chown_wrapper 857ENTRY(sys32_chown_wrapper)
1009sys32_chown_wrapper:
1010 llgtr %r2,%r2 # const char * 858 llgtr %r2,%r2 # const char *
1011 llgfr %r3,%r3 # uid_t 859 llgfr %r3,%r3 # uid_t
1012 llgfr %r4,%r4 # gid_t 860 llgfr %r4,%r4 # gid_t
1013 jg sys_chown # branch to system call 861 jg sys_chown # branch to system call
1014 862
1015 .globl sys32_setuid_wrapper 863ENTRY(sys32_setuid_wrapper)
1016sys32_setuid_wrapper:
1017 llgfr %r2,%r2 # uid_t 864 llgfr %r2,%r2 # uid_t
1018 jg sys_setuid # branch to system call 865 jg sys_setuid # branch to system call
1019 866
1020 .globl sys32_setgid_wrapper 867ENTRY(sys32_setgid_wrapper)
1021sys32_setgid_wrapper:
1022 llgfr %r2,%r2 # gid_t 868 llgfr %r2,%r2 # gid_t
1023 jg sys_setgid # branch to system call 869 jg sys_setgid # branch to system call
1024 870
1025 .globl sys32_setfsuid_wrapper 871ENTRY(sys32_setfsuid_wrapper)
1026sys32_setfsuid_wrapper:
1027 llgfr %r2,%r2 # uid_t 872 llgfr %r2,%r2 # uid_t
1028 jg sys_setfsuid # branch to system call 873 jg sys_setfsuid # branch to system call
1029 874
1030 .globl sys32_setfsgid_wrapper 875ENTRY(sys32_setfsgid_wrapper)
1031sys32_setfsgid_wrapper:
1032 llgfr %r2,%r2 # gid_t 876 llgfr %r2,%r2 # gid_t
1033 jg sys_setfsgid # branch to system call 877 jg sys_setfsgid # branch to system call
1034 878
1035 .globl sys32_pivot_root_wrapper 879ENTRY(sys32_pivot_root_wrapper)
1036sys32_pivot_root_wrapper:
1037 llgtr %r2,%r2 # const char * 880 llgtr %r2,%r2 # const char *
1038 llgtr %r3,%r3 # const char * 881 llgtr %r3,%r3 # const char *
1039 jg sys_pivot_root # branch to system call 882 jg sys_pivot_root # branch to system call
1040 883
1041 .globl sys32_mincore_wrapper 884ENTRY(sys32_mincore_wrapper)
1042sys32_mincore_wrapper:
1043 llgfr %r2,%r2 # unsigned long 885 llgfr %r2,%r2 # unsigned long
1044 llgfr %r3,%r3 # size_t 886 llgfr %r3,%r3 # size_t
1045 llgtr %r4,%r4 # unsigned char * 887 llgtr %r4,%r4 # unsigned char *
1046 jg sys_mincore # branch to system call 888 jg sys_mincore # branch to system call
1047 889
1048 .globl sys32_madvise_wrapper 890ENTRY(sys32_madvise_wrapper)
1049sys32_madvise_wrapper:
1050 llgfr %r2,%r2 # unsigned long 891 llgfr %r2,%r2 # unsigned long
1051 llgfr %r3,%r3 # size_t 892 llgfr %r3,%r3 # size_t
1052 lgfr %r4,%r4 # int 893 lgfr %r4,%r4 # int
1053 jg sys_madvise # branch to system call 894 jg sys_madvise # branch to system call
1054 895
1055 .globl sys32_getdents64_wrapper 896ENTRY(sys32_getdents64_wrapper)
1056sys32_getdents64_wrapper:
1057 llgfr %r2,%r2 # unsigned int 897 llgfr %r2,%r2 # unsigned int
1058 llgtr %r3,%r3 # void * 898 llgtr %r3,%r3 # void *
1059 llgfr %r4,%r4 # unsigned int 899 llgfr %r4,%r4 # unsigned int
1060 jg sys_getdents64 # branch to system call 900 jg sys_getdents64 # branch to system call
1061 901
1062 .globl compat_sys_fcntl64_wrapper 902ENTRY(compat_sys_fcntl64_wrapper)
1063compat_sys_fcntl64_wrapper:
1064 llgfr %r2,%r2 # unsigned int 903 llgfr %r2,%r2 # unsigned int
1065 llgfr %r3,%r3 # unsigned int 904 llgfr %r3,%r3 # unsigned int
1066 llgfr %r4,%r4 # unsigned long 905 llgfr %r4,%r4 # unsigned long
1067 jg compat_sys_fcntl64 # branch to system call 906 jg compat_sys_fcntl64 # branch to system call
1068 907
1069 .globl sys32_stat64_wrapper 908ENTRY(sys32_stat64_wrapper)
1070sys32_stat64_wrapper:
1071 llgtr %r2,%r2 # char * 909 llgtr %r2,%r2 # char *
1072 llgtr %r3,%r3 # struct stat64 * 910 llgtr %r3,%r3 # struct stat64 *
1073 jg sys32_stat64 # branch to system call 911 jg sys32_stat64 # branch to system call
1074 912
1075 .globl sys32_lstat64_wrapper 913ENTRY(sys32_lstat64_wrapper)
1076sys32_lstat64_wrapper:
1077 llgtr %r2,%r2 # char * 914 llgtr %r2,%r2 # char *
1078 llgtr %r3,%r3 # struct stat64 * 915 llgtr %r3,%r3 # struct stat64 *
1079 jg sys32_lstat64 # branch to system call 916 jg sys32_lstat64 # branch to system call
1080 917
1081 .globl sys32_stime_wrapper 918ENTRY(sys32_stime_wrapper)
1082sys32_stime_wrapper:
1083 llgtr %r2,%r2 # long * 919 llgtr %r2,%r2 # long *
1084 jg compat_sys_stime # branch to system call 920 jg compat_sys_stime # branch to system call
1085 921
1086 .globl sys32_sysctl_wrapper 922ENTRY(sys32_sysctl_wrapper)
1087sys32_sysctl_wrapper:
1088 llgtr %r2,%r2 # struct compat_sysctl_args * 923 llgtr %r2,%r2 # struct compat_sysctl_args *
1089 jg compat_sys_sysctl 924 jg compat_sys_sysctl
1090 925
1091 .globl sys32_fstat64_wrapper 926ENTRY(sys32_fstat64_wrapper)
1092sys32_fstat64_wrapper:
1093 llgfr %r2,%r2 # unsigned long 927 llgfr %r2,%r2 # unsigned long
1094 llgtr %r3,%r3 # struct stat64 * 928 llgtr %r3,%r3 # struct stat64 *
1095 jg sys32_fstat64 # branch to system call 929 jg sys32_fstat64 # branch to system call
1096 930
1097 .globl compat_sys_futex_wrapper 931ENTRY(compat_sys_futex_wrapper)
1098compat_sys_futex_wrapper:
1099 llgtr %r2,%r2 # u32 * 932 llgtr %r2,%r2 # u32 *
1100 lgfr %r3,%r3 # int 933 lgfr %r3,%r3 # int
1101 lgfr %r4,%r4 # int 934 lgfr %r4,%r4 # int
@@ -1105,8 +938,7 @@ compat_sys_futex_wrapper:
1105 stg %r0,160(%r15) 938 stg %r0,160(%r15)
1106 jg compat_sys_futex # branch to system call 939 jg compat_sys_futex # branch to system call
1107 940
1108 .globl sys32_setxattr_wrapper 941ENTRY(sys32_setxattr_wrapper)
1109sys32_setxattr_wrapper:
1110 llgtr %r2,%r2 # char * 942 llgtr %r2,%r2 # char *
1111 llgtr %r3,%r3 # char * 943 llgtr %r3,%r3 # char *
1112 llgtr %r4,%r4 # void * 944 llgtr %r4,%r4 # void *
@@ -1114,8 +946,7 @@ sys32_setxattr_wrapper:
1114 lgfr %r6,%r6 # int 946 lgfr %r6,%r6 # int
1115 jg sys_setxattr 947 jg sys_setxattr
1116 948
1117 .globl sys32_lsetxattr_wrapper 949ENTRY(sys32_lsetxattr_wrapper)
1118sys32_lsetxattr_wrapper:
1119 llgtr %r2,%r2 # char * 950 llgtr %r2,%r2 # char *
1120 llgtr %r3,%r3 # char * 951 llgtr %r3,%r3 # char *
1121 llgtr %r4,%r4 # void * 952 llgtr %r4,%r4 # void *
@@ -1123,8 +954,7 @@ sys32_lsetxattr_wrapper:
1123 lgfr %r6,%r6 # int 954 lgfr %r6,%r6 # int
1124 jg sys_lsetxattr 955 jg sys_lsetxattr
1125 956
1126 .globl sys32_fsetxattr_wrapper 957ENTRY(sys32_fsetxattr_wrapper)
1127sys32_fsetxattr_wrapper:
1128 lgfr %r2,%r2 # int 958 lgfr %r2,%r2 # int
1129 llgtr %r3,%r3 # char * 959 llgtr %r3,%r3 # char *
1130 llgtr %r4,%r4 # void * 960 llgtr %r4,%r4 # void *
@@ -1132,124 +962,106 @@ sys32_fsetxattr_wrapper:
1132 lgfr %r6,%r6 # int 962 lgfr %r6,%r6 # int
1133 jg sys_fsetxattr 963 jg sys_fsetxattr
1134 964
1135 .globl sys32_getxattr_wrapper 965ENTRY(sys32_getxattr_wrapper)
1136sys32_getxattr_wrapper:
1137 llgtr %r2,%r2 # char * 966 llgtr %r2,%r2 # char *
1138 llgtr %r3,%r3 # char * 967 llgtr %r3,%r3 # char *
1139 llgtr %r4,%r4 # void * 968 llgtr %r4,%r4 # void *
1140 llgfr %r5,%r5 # size_t 969 llgfr %r5,%r5 # size_t
1141 jg sys_getxattr 970 jg sys_getxattr
1142 971
1143 .globl sys32_lgetxattr_wrapper 972ENTRY(sys32_lgetxattr_wrapper)
1144sys32_lgetxattr_wrapper:
1145 llgtr %r2,%r2 # char * 973 llgtr %r2,%r2 # char *
1146 llgtr %r3,%r3 # char * 974 llgtr %r3,%r3 # char *
1147 llgtr %r4,%r4 # void * 975 llgtr %r4,%r4 # void *
1148 llgfr %r5,%r5 # size_t 976 llgfr %r5,%r5 # size_t
1149 jg sys_lgetxattr 977 jg sys_lgetxattr
1150 978
1151 .globl sys32_fgetxattr_wrapper 979ENTRY(sys32_fgetxattr_wrapper)
1152sys32_fgetxattr_wrapper:
1153 lgfr %r2,%r2 # int 980 lgfr %r2,%r2 # int
1154 llgtr %r3,%r3 # char * 981 llgtr %r3,%r3 # char *
1155 llgtr %r4,%r4 # void * 982 llgtr %r4,%r4 # void *
1156 llgfr %r5,%r5 # size_t 983 llgfr %r5,%r5 # size_t
1157 jg sys_fgetxattr 984 jg sys_fgetxattr
1158 985
1159 .globl sys32_listxattr_wrapper 986ENTRY(sys32_listxattr_wrapper)
1160sys32_listxattr_wrapper:
1161 llgtr %r2,%r2 # char * 987 llgtr %r2,%r2 # char *
1162 llgtr %r3,%r3 # char * 988 llgtr %r3,%r3 # char *
1163 llgfr %r4,%r4 # size_t 989 llgfr %r4,%r4 # size_t
1164 jg sys_listxattr 990 jg sys_listxattr
1165 991
1166 .globl sys32_llistxattr_wrapper 992ENTRY(sys32_llistxattr_wrapper)
1167sys32_llistxattr_wrapper:
1168 llgtr %r2,%r2 # char * 993 llgtr %r2,%r2 # char *
1169 llgtr %r3,%r3 # char * 994 llgtr %r3,%r3 # char *
1170 llgfr %r4,%r4 # size_t 995 llgfr %r4,%r4 # size_t
1171 jg sys_llistxattr 996 jg sys_llistxattr
1172 997
1173 .globl sys32_flistxattr_wrapper 998ENTRY(sys32_flistxattr_wrapper)
1174sys32_flistxattr_wrapper:
1175 lgfr %r2,%r2 # int 999 lgfr %r2,%r2 # int
1176 llgtr %r3,%r3 # char * 1000 llgtr %r3,%r3 # char *
1177 llgfr %r4,%r4 # size_t 1001 llgfr %r4,%r4 # size_t
1178 jg sys_flistxattr 1002 jg sys_flistxattr
1179 1003
1180 .globl sys32_removexattr_wrapper 1004ENTRY(sys32_removexattr_wrapper)
1181sys32_removexattr_wrapper:
1182 llgtr %r2,%r2 # char * 1005 llgtr %r2,%r2 # char *
1183 llgtr %r3,%r3 # char * 1006 llgtr %r3,%r3 # char *
1184 jg sys_removexattr 1007 jg sys_removexattr
1185 1008
1186 .globl sys32_lremovexattr_wrapper 1009ENTRY(sys32_lremovexattr_wrapper)
1187sys32_lremovexattr_wrapper:
1188 llgtr %r2,%r2 # char * 1010 llgtr %r2,%r2 # char *
1189 llgtr %r3,%r3 # char * 1011 llgtr %r3,%r3 # char *
1190 jg sys_lremovexattr 1012 jg sys_lremovexattr
1191 1013
1192 .globl sys32_fremovexattr_wrapper 1014ENTRY(sys32_fremovexattr_wrapper)
1193sys32_fremovexattr_wrapper:
1194 lgfr %r2,%r2 # int 1015 lgfr %r2,%r2 # int
1195 llgtr %r3,%r3 # char * 1016 llgtr %r3,%r3 # char *
1196 jg sys_fremovexattr 1017 jg sys_fremovexattr
1197 1018
1198 .globl sys32_sched_setaffinity_wrapper 1019ENTRY(sys32_sched_setaffinity_wrapper)
1199sys32_sched_setaffinity_wrapper:
1200 lgfr %r2,%r2 # int 1020 lgfr %r2,%r2 # int
1201 llgfr %r3,%r3 # unsigned int 1021 llgfr %r3,%r3 # unsigned int
1202 llgtr %r4,%r4 # unsigned long * 1022 llgtr %r4,%r4 # unsigned long *
1203 jg compat_sys_sched_setaffinity 1023 jg compat_sys_sched_setaffinity
1204 1024
1205 .globl sys32_sched_getaffinity_wrapper 1025ENTRY(sys32_sched_getaffinity_wrapper)
1206sys32_sched_getaffinity_wrapper:
1207 lgfr %r2,%r2 # int 1026 lgfr %r2,%r2 # int
1208 llgfr %r3,%r3 # unsigned int 1027 llgfr %r3,%r3 # unsigned int
1209 llgtr %r4,%r4 # unsigned long * 1028 llgtr %r4,%r4 # unsigned long *
1210 jg compat_sys_sched_getaffinity 1029 jg compat_sys_sched_getaffinity
1211 1030
1212 .globl sys32_exit_group_wrapper 1031ENTRY(sys32_exit_group_wrapper)
1213sys32_exit_group_wrapper:
1214 lgfr %r2,%r2 # int 1032 lgfr %r2,%r2 # int
1215 jg sys_exit_group # branch to system call 1033 jg sys_exit_group # branch to system call
1216 1034
1217 .globl sys32_set_tid_address_wrapper 1035ENTRY(sys32_set_tid_address_wrapper)
1218sys32_set_tid_address_wrapper:
1219 llgtr %r2,%r2 # int * 1036 llgtr %r2,%r2 # int *
1220 jg sys_set_tid_address # branch to system call 1037 jg sys_set_tid_address # branch to system call
1221 1038
1222 .globl sys_epoll_create_wrapper 1039ENTRY(sys_epoll_create_wrapper)
1223sys_epoll_create_wrapper:
1224 lgfr %r2,%r2 # int 1040 lgfr %r2,%r2 # int
1225 jg sys_epoll_create # branch to system call 1041 jg sys_epoll_create # branch to system call
1226 1042
1227 .globl sys_epoll_ctl_wrapper 1043ENTRY(sys_epoll_ctl_wrapper)
1228sys_epoll_ctl_wrapper:
1229 lgfr %r2,%r2 # int 1044 lgfr %r2,%r2 # int
1230 lgfr %r3,%r3 # int 1045 lgfr %r3,%r3 # int
1231 lgfr %r4,%r4 # int 1046 lgfr %r4,%r4 # int
1232 llgtr %r5,%r5 # struct epoll_event * 1047 llgtr %r5,%r5 # struct epoll_event *
1233 jg sys_epoll_ctl # branch to system call 1048 jg sys_epoll_ctl # branch to system call
1234 1049
1235 .globl sys_epoll_wait_wrapper 1050ENTRY(sys_epoll_wait_wrapper)
1236sys_epoll_wait_wrapper:
1237 lgfr %r2,%r2 # int 1051 lgfr %r2,%r2 # int
1238 llgtr %r3,%r3 # struct epoll_event * 1052 llgtr %r3,%r3 # struct epoll_event *
1239 lgfr %r4,%r4 # int 1053 lgfr %r4,%r4 # int
1240 lgfr %r5,%r5 # int 1054 lgfr %r5,%r5 # int
1241 jg sys_epoll_wait # branch to system call 1055 jg sys_epoll_wait # branch to system call
1242 1056
1243 .globl sys32_lookup_dcookie_wrapper 1057ENTRY(sys32_lookup_dcookie_wrapper)
1244sys32_lookup_dcookie_wrapper:
1245 sllg %r2,%r2,32 # get high word of 64bit dcookie 1058 sllg %r2,%r2,32 # get high word of 64bit dcookie
1246 or %r2,%r3 # get low word of 64bit dcookie 1059 or %r2,%r3 # get low word of 64bit dcookie
1247 llgtr %r3,%r4 # char * 1060 llgtr %r3,%r4 # char *
1248 llgfr %r4,%r5 # size_t 1061 llgfr %r4,%r5 # size_t
1249 jg sys_lookup_dcookie 1062 jg sys_lookup_dcookie
1250 1063
1251 .globl sys32_fadvise64_wrapper 1064ENTRY(sys32_fadvise64_wrapper)
1252sys32_fadvise64_wrapper:
1253 lgfr %r2,%r2 # int 1065 lgfr %r2,%r2 # int
1254 sllg %r3,%r3,32 # get high word of 64bit loff_t 1066 sllg %r3,%r3,32 # get high word of 64bit loff_t
1255 or %r3,%r4 # get low word of 64bit loff_t 1067 or %r3,%r4 # get low word of 64bit loff_t
@@ -1257,81 +1069,68 @@ sys32_fadvise64_wrapper:
1257 lgfr %r5,%r6 # int 1069 lgfr %r5,%r6 # int
1258 jg sys32_fadvise64 1070 jg sys32_fadvise64
1259 1071
1260 .globl sys32_fadvise64_64_wrapper 1072ENTRY(sys32_fadvise64_64_wrapper)
1261sys32_fadvise64_64_wrapper:
1262 llgtr %r2,%r2 # struct fadvise64_64_args * 1073 llgtr %r2,%r2 # struct fadvise64_64_args *
1263 jg sys32_fadvise64_64 1074 jg sys32_fadvise64_64
1264 1075
1265 .globl sys32_clock_settime_wrapper 1076ENTRY(sys32_clock_settime_wrapper)
1266sys32_clock_settime_wrapper:
1267 lgfr %r2,%r2 # clockid_t (int) 1077 lgfr %r2,%r2 # clockid_t (int)
1268 llgtr %r3,%r3 # struct compat_timespec * 1078 llgtr %r3,%r3 # struct compat_timespec *
1269 jg compat_sys_clock_settime 1079 jg compat_sys_clock_settime
1270 1080
1271 .globl sys32_clock_gettime_wrapper 1081ENTRY(sys32_clock_gettime_wrapper)
1272sys32_clock_gettime_wrapper:
1273 lgfr %r2,%r2 # clockid_t (int) 1082 lgfr %r2,%r2 # clockid_t (int)
1274 llgtr %r3,%r3 # struct compat_timespec * 1083 llgtr %r3,%r3 # struct compat_timespec *
1275 jg compat_sys_clock_gettime 1084 jg compat_sys_clock_gettime
1276 1085
1277 .globl sys32_clock_getres_wrapper 1086ENTRY(sys32_clock_getres_wrapper)
1278sys32_clock_getres_wrapper:
1279 lgfr %r2,%r2 # clockid_t (int) 1087 lgfr %r2,%r2 # clockid_t (int)
1280 llgtr %r3,%r3 # struct compat_timespec * 1088 llgtr %r3,%r3 # struct compat_timespec *
1281 jg compat_sys_clock_getres 1089 jg compat_sys_clock_getres
1282 1090
1283 .globl sys32_clock_nanosleep_wrapper 1091ENTRY(sys32_clock_nanosleep_wrapper)
1284sys32_clock_nanosleep_wrapper:
1285 lgfr %r2,%r2 # clockid_t (int) 1092 lgfr %r2,%r2 # clockid_t (int)
1286 lgfr %r3,%r3 # int 1093 lgfr %r3,%r3 # int
1287 llgtr %r4,%r4 # struct compat_timespec * 1094 llgtr %r4,%r4 # struct compat_timespec *
1288 llgtr %r5,%r5 # struct compat_timespec * 1095 llgtr %r5,%r5 # struct compat_timespec *
1289 jg compat_sys_clock_nanosleep 1096 jg compat_sys_clock_nanosleep
1290 1097
1291 .globl sys32_timer_create_wrapper 1098ENTRY(sys32_timer_create_wrapper)
1292sys32_timer_create_wrapper:
1293 lgfr %r2,%r2 # timer_t (int) 1099 lgfr %r2,%r2 # timer_t (int)
1294 llgtr %r3,%r3 # struct compat_sigevent * 1100 llgtr %r3,%r3 # struct compat_sigevent *
1295 llgtr %r4,%r4 # timer_t * 1101 llgtr %r4,%r4 # timer_t *
1296 jg compat_sys_timer_create 1102 jg compat_sys_timer_create
1297 1103
1298 .globl sys32_timer_settime_wrapper 1104ENTRY(sys32_timer_settime_wrapper)
1299sys32_timer_settime_wrapper:
1300 lgfr %r2,%r2 # timer_t (int) 1105 lgfr %r2,%r2 # timer_t (int)
1301 lgfr %r3,%r3 # int 1106 lgfr %r3,%r3 # int
1302 llgtr %r4,%r4 # struct compat_itimerspec * 1107 llgtr %r4,%r4 # struct compat_itimerspec *
1303 llgtr %r5,%r5 # struct compat_itimerspec * 1108 llgtr %r5,%r5 # struct compat_itimerspec *
1304 jg compat_sys_timer_settime 1109 jg compat_sys_timer_settime
1305 1110
1306 .globl sys32_timer_gettime_wrapper 1111ENTRY(sys32_timer_gettime_wrapper)
1307sys32_timer_gettime_wrapper:
1308 lgfr %r2,%r2 # timer_t (int) 1112 lgfr %r2,%r2 # timer_t (int)
1309 llgtr %r3,%r3 # struct compat_itimerspec * 1113 llgtr %r3,%r3 # struct compat_itimerspec *
1310 jg compat_sys_timer_gettime 1114 jg compat_sys_timer_gettime
1311 1115
1312 .globl sys32_timer_getoverrun_wrapper 1116ENTRY(sys32_timer_getoverrun_wrapper)
1313sys32_timer_getoverrun_wrapper:
1314 lgfr %r2,%r2 # timer_t (int) 1117 lgfr %r2,%r2 # timer_t (int)
1315 jg sys_timer_getoverrun 1118 jg sys_timer_getoverrun
1316 1119
1317 .globl sys32_timer_delete_wrapper 1120ENTRY(sys32_timer_delete_wrapper)
1318sys32_timer_delete_wrapper:
1319 lgfr %r2,%r2 # timer_t (int) 1121 lgfr %r2,%r2 # timer_t (int)
1320 jg sys_timer_delete 1122 jg sys_timer_delete
1321 1123
1322 .globl sys32_io_setup_wrapper 1124ENTRY(sys32_io_setup_wrapper)
1323sys32_io_setup_wrapper:
1324 llgfr %r2,%r2 # unsigned int 1125 llgfr %r2,%r2 # unsigned int
1325 llgtr %r3,%r3 # u32 * 1126 llgtr %r3,%r3 # u32 *
1326 jg compat_sys_io_setup 1127 jg compat_sys_io_setup
1327 1128
1328 .globl sys32_io_destroy_wrapper 1129ENTRY(sys32_io_destroy_wrapper)
1329sys32_io_destroy_wrapper:
1330 llgfr %r2,%r2 # (aio_context_t) u32 1130 llgfr %r2,%r2 # (aio_context_t) u32
1331 jg sys_io_destroy 1131 jg sys_io_destroy
1332 1132
1333 .globl sys32_io_getevents_wrapper 1133ENTRY(sys32_io_getevents_wrapper)
1334sys32_io_getevents_wrapper:
1335 llgfr %r2,%r2 # (aio_context_t) u32 1134 llgfr %r2,%r2 # (aio_context_t) u32
1336 lgfr %r3,%r3 # long 1135 lgfr %r3,%r3 # long
1337 lgfr %r4,%r4 # long 1136 lgfr %r4,%r4 # long
@@ -1339,49 +1138,42 @@ sys32_io_getevents_wrapper:
1339 llgtr %r6,%r6 # struct compat_timespec * 1138 llgtr %r6,%r6 # struct compat_timespec *
1340 jg compat_sys_io_getevents 1139 jg compat_sys_io_getevents
1341 1140
1342 .globl sys32_io_submit_wrapper 1141ENTRY(sys32_io_submit_wrapper)
1343sys32_io_submit_wrapper:
1344 llgfr %r2,%r2 # (aio_context_t) u32 1142 llgfr %r2,%r2 # (aio_context_t) u32
1345 lgfr %r3,%r3 # long 1143 lgfr %r3,%r3 # long
1346 llgtr %r4,%r4 # struct iocb ** 1144 llgtr %r4,%r4 # struct iocb **
1347 jg compat_sys_io_submit 1145 jg compat_sys_io_submit
1348 1146
1349 .globl sys32_io_cancel_wrapper 1147ENTRY(sys32_io_cancel_wrapper)
1350sys32_io_cancel_wrapper:
1351 llgfr %r2,%r2 # (aio_context_t) u32 1148 llgfr %r2,%r2 # (aio_context_t) u32
1352 llgtr %r3,%r3 # struct iocb * 1149 llgtr %r3,%r3 # struct iocb *
1353 llgtr %r4,%r4 # struct io_event * 1150 llgtr %r4,%r4 # struct io_event *
1354 jg sys_io_cancel 1151 jg sys_io_cancel
1355 1152
1356 .globl compat_sys_statfs64_wrapper 1153ENTRY(compat_sys_statfs64_wrapper)
1357compat_sys_statfs64_wrapper:
1358 llgtr %r2,%r2 # const char * 1154 llgtr %r2,%r2 # const char *
1359 llgfr %r3,%r3 # compat_size_t 1155 llgfr %r3,%r3 # compat_size_t
1360 llgtr %r4,%r4 # struct compat_statfs64 * 1156 llgtr %r4,%r4 # struct compat_statfs64 *
1361 jg compat_sys_statfs64 1157 jg compat_sys_statfs64
1362 1158
1363 .globl compat_sys_fstatfs64_wrapper 1159ENTRY(compat_sys_fstatfs64_wrapper)
1364compat_sys_fstatfs64_wrapper:
1365 llgfr %r2,%r2 # unsigned int fd 1160 llgfr %r2,%r2 # unsigned int fd
1366 llgfr %r3,%r3 # compat_size_t 1161 llgfr %r3,%r3 # compat_size_t
1367 llgtr %r4,%r4 # struct compat_statfs64 * 1162 llgtr %r4,%r4 # struct compat_statfs64 *
1368 jg compat_sys_fstatfs64 1163 jg compat_sys_fstatfs64
1369 1164
1370 .globl compat_sys_mq_open_wrapper 1165ENTRY(compat_sys_mq_open_wrapper)
1371compat_sys_mq_open_wrapper:
1372 llgtr %r2,%r2 # const char * 1166 llgtr %r2,%r2 # const char *
1373 lgfr %r3,%r3 # int 1167 lgfr %r3,%r3 # int
1374 llgfr %r4,%r4 # mode_t 1168 llgfr %r4,%r4 # mode_t
1375 llgtr %r5,%r5 # struct compat_mq_attr * 1169 llgtr %r5,%r5 # struct compat_mq_attr *
1376 jg compat_sys_mq_open 1170 jg compat_sys_mq_open
1377 1171
1378 .globl sys32_mq_unlink_wrapper 1172ENTRY(sys32_mq_unlink_wrapper)
1379sys32_mq_unlink_wrapper:
1380 llgtr %r2,%r2 # const char * 1173 llgtr %r2,%r2 # const char *
1381 jg sys_mq_unlink 1174 jg sys_mq_unlink
1382 1175
1383 .globl compat_sys_mq_timedsend_wrapper 1176ENTRY(compat_sys_mq_timedsend_wrapper)
1384compat_sys_mq_timedsend_wrapper:
1385 lgfr %r2,%r2 # mqd_t 1177 lgfr %r2,%r2 # mqd_t
1386 llgtr %r3,%r3 # const char * 1178 llgtr %r3,%r3 # const char *
1387 llgfr %r4,%r4 # size_t 1179 llgfr %r4,%r4 # size_t
@@ -1389,8 +1181,7 @@ compat_sys_mq_timedsend_wrapper:
1389 llgtr %r6,%r6 # const struct compat_timespec * 1181 llgtr %r6,%r6 # const struct compat_timespec *
1390 jg compat_sys_mq_timedsend 1182 jg compat_sys_mq_timedsend
1391 1183
1392 .globl compat_sys_mq_timedreceive_wrapper 1184ENTRY(compat_sys_mq_timedreceive_wrapper)
1393compat_sys_mq_timedreceive_wrapper:
1394 lgfr %r2,%r2 # mqd_t 1185 lgfr %r2,%r2 # mqd_t
1395 llgtr %r3,%r3 # char * 1186 llgtr %r3,%r3 # char *
1396 llgfr %r4,%r4 # size_t 1187 llgfr %r4,%r4 # size_t
@@ -1398,21 +1189,18 @@ compat_sys_mq_timedreceive_wrapper:
1398 llgtr %r6,%r6 # const struct compat_timespec * 1189 llgtr %r6,%r6 # const struct compat_timespec *
1399 jg compat_sys_mq_timedreceive 1190 jg compat_sys_mq_timedreceive
1400 1191
1401 .globl compat_sys_mq_notify_wrapper 1192ENTRY(compat_sys_mq_notify_wrapper)
1402compat_sys_mq_notify_wrapper:
1403 lgfr %r2,%r2 # mqd_t 1193 lgfr %r2,%r2 # mqd_t
1404 llgtr %r3,%r3 # struct compat_sigevent * 1194 llgtr %r3,%r3 # struct compat_sigevent *
1405 jg compat_sys_mq_notify 1195 jg compat_sys_mq_notify
1406 1196
1407 .globl compat_sys_mq_getsetattr_wrapper 1197ENTRY(compat_sys_mq_getsetattr_wrapper)
1408compat_sys_mq_getsetattr_wrapper:
1409 lgfr %r2,%r2 # mqd_t 1198 lgfr %r2,%r2 # mqd_t
1410 llgtr %r3,%r3 # struct compat_mq_attr * 1199 llgtr %r3,%r3 # struct compat_mq_attr *
1411 llgtr %r4,%r4 # struct compat_mq_attr * 1200 llgtr %r4,%r4 # struct compat_mq_attr *
1412 jg compat_sys_mq_getsetattr 1201 jg compat_sys_mq_getsetattr
1413 1202
1414 .globl compat_sys_add_key_wrapper 1203ENTRY(compat_sys_add_key_wrapper)
1415compat_sys_add_key_wrapper:
1416 llgtr %r2,%r2 # const char * 1204 llgtr %r2,%r2 # const char *
1417 llgtr %r3,%r3 # const char * 1205 llgtr %r3,%r3 # const char *
1418 llgtr %r4,%r4 # const void * 1206 llgtr %r4,%r4 # const void *
@@ -1420,16 +1208,14 @@ compat_sys_add_key_wrapper:
1420 llgfr %r6,%r6 # (key_serial_t) u32 1208 llgfr %r6,%r6 # (key_serial_t) u32
1421 jg sys_add_key 1209 jg sys_add_key
1422 1210
1423 .globl compat_sys_request_key_wrapper 1211ENTRY(compat_sys_request_key_wrapper)
1424compat_sys_request_key_wrapper:
1425 llgtr %r2,%r2 # const char * 1212 llgtr %r2,%r2 # const char *
1426 llgtr %r3,%r3 # const char * 1213 llgtr %r3,%r3 # const char *
1427 llgtr %r4,%r4 # const void * 1214 llgtr %r4,%r4 # const void *
1428 llgfr %r5,%r5 # (key_serial_t) u32 1215 llgfr %r5,%r5 # (key_serial_t) u32
1429 jg sys_request_key 1216 jg sys_request_key
1430 1217
1431 .globl sys32_remap_file_pages_wrapper 1218ENTRY(sys32_remap_file_pages_wrapper)
1432sys32_remap_file_pages_wrapper:
1433 llgfr %r2,%r2 # unsigned long 1219 llgfr %r2,%r2 # unsigned long
1434 llgfr %r3,%r3 # unsigned long 1220 llgfr %r3,%r3 # unsigned long
1435 llgfr %r4,%r4 # unsigned long 1221 llgfr %r4,%r4 # unsigned long
@@ -1437,8 +1223,7 @@ sys32_remap_file_pages_wrapper:
1437 llgfr %r6,%r6 # unsigned long 1223 llgfr %r6,%r6 # unsigned long
1438 jg sys_remap_file_pages 1224 jg sys_remap_file_pages
1439 1225
1440 .globl compat_sys_waitid_wrapper 1226ENTRY(compat_sys_waitid_wrapper)
1441compat_sys_waitid_wrapper:
1442 lgfr %r2,%r2 # int 1227 lgfr %r2,%r2 # int
1443 lgfr %r3,%r3 # pid_t 1228 lgfr %r3,%r3 # pid_t
1444 llgtr %r4,%r4 # siginfo_emu31_t * 1229 llgtr %r4,%r4 # siginfo_emu31_t *
@@ -1446,65 +1231,56 @@ compat_sys_waitid_wrapper:
1446 llgtr %r6,%r6 # struct rusage_emu31 * 1231 llgtr %r6,%r6 # struct rusage_emu31 *
1447 jg compat_sys_waitid 1232 jg compat_sys_waitid
1448 1233
1449 .globl compat_sys_kexec_load_wrapper 1234ENTRY(compat_sys_kexec_load_wrapper)
1450compat_sys_kexec_load_wrapper:
1451 llgfr %r2,%r2 # unsigned long 1235 llgfr %r2,%r2 # unsigned long
1452 llgfr %r3,%r3 # unsigned long 1236 llgfr %r3,%r3 # unsigned long
1453 llgtr %r4,%r4 # struct kexec_segment * 1237 llgtr %r4,%r4 # struct kexec_segment *
1454 llgfr %r5,%r5 # unsigned long 1238 llgfr %r5,%r5 # unsigned long
1455 jg compat_sys_kexec_load 1239 jg compat_sys_kexec_load
1456 1240
1457 .globl sys_ioprio_set_wrapper 1241ENTRY(sys_ioprio_set_wrapper)
1458sys_ioprio_set_wrapper:
1459 lgfr %r2,%r2 # int 1242 lgfr %r2,%r2 # int
1460 lgfr %r3,%r3 # int 1243 lgfr %r3,%r3 # int
1461 lgfr %r4,%r4 # int 1244 lgfr %r4,%r4 # int
1462 jg sys_ioprio_set 1245 jg sys_ioprio_set
1463 1246
1464 .globl sys_ioprio_get_wrapper 1247ENTRY(sys_ioprio_get_wrapper)
1465sys_ioprio_get_wrapper:
1466 lgfr %r2,%r2 # int 1248 lgfr %r2,%r2 # int
1467 lgfr %r3,%r3 # int 1249 lgfr %r3,%r3 # int
1468 jg sys_ioprio_get 1250 jg sys_ioprio_get
1469 1251
1470 .globl sys_inotify_add_watch_wrapper 1252ENTRY(sys_inotify_add_watch_wrapper)
1471sys_inotify_add_watch_wrapper:
1472 lgfr %r2,%r2 # int 1253 lgfr %r2,%r2 # int
1473 llgtr %r3,%r3 # const char * 1254 llgtr %r3,%r3 # const char *
1474 llgfr %r4,%r4 # u32 1255 llgfr %r4,%r4 # u32
1475 jg sys_inotify_add_watch 1256 jg sys_inotify_add_watch
1476 1257
1477 .globl sys_inotify_rm_watch_wrapper 1258ENTRY(sys_inotify_rm_watch_wrapper)
1478sys_inotify_rm_watch_wrapper:
1479 lgfr %r2,%r2 # int 1259 lgfr %r2,%r2 # int
1480 llgfr %r3,%r3 # u32 1260 llgfr %r3,%r3 # u32
1481 jg sys_inotify_rm_watch 1261 jg sys_inotify_rm_watch
1482 1262
1483 .globl compat_sys_openat_wrapper 1263ENTRY(compat_sys_openat_wrapper)
1484compat_sys_openat_wrapper:
1485 llgfr %r2,%r2 # unsigned int 1264 llgfr %r2,%r2 # unsigned int
1486 llgtr %r3,%r3 # const char * 1265 llgtr %r3,%r3 # const char *
1487 lgfr %r4,%r4 # int 1266 lgfr %r4,%r4 # int
1488 lgfr %r5,%r5 # int 1267 lgfr %r5,%r5 # int
1489 jg compat_sys_openat 1268 jg compat_sys_openat
1490 1269
1491 .globl sys_mkdirat_wrapper 1270ENTRY(sys_mkdirat_wrapper)
1492sys_mkdirat_wrapper:
1493 lgfr %r2,%r2 # int 1271 lgfr %r2,%r2 # int
1494 llgtr %r3,%r3 # const char * 1272 llgtr %r3,%r3 # const char *
1495 lgfr %r4,%r4 # int 1273 lgfr %r4,%r4 # int
1496 jg sys_mkdirat 1274 jg sys_mkdirat
1497 1275
1498 .globl sys_mknodat_wrapper 1276ENTRY(sys_mknodat_wrapper)
1499sys_mknodat_wrapper:
1500 lgfr %r2,%r2 # int 1277 lgfr %r2,%r2 # int
1501 llgtr %r3,%r3 # const char * 1278 llgtr %r3,%r3 # const char *
1502 lgfr %r4,%r4 # int 1279 lgfr %r4,%r4 # int
1503 llgfr %r5,%r5 # unsigned int 1280 llgfr %r5,%r5 # unsigned int
1504 jg sys_mknodat 1281 jg sys_mknodat
1505 1282
1506 .globl sys_fchownat_wrapper 1283ENTRY(sys_fchownat_wrapper)
1507sys_fchownat_wrapper:
1508 lgfr %r2,%r2 # int 1284 lgfr %r2,%r2 # int
1509 llgtr %r3,%r3 # const char * 1285 llgtr %r3,%r3 # const char *
1510 llgfr %r4,%r4 # uid_t 1286 llgfr %r4,%r4 # uid_t
@@ -1512,38 +1288,33 @@ sys_fchownat_wrapper:
1512 lgfr %r6,%r6 # int 1288 lgfr %r6,%r6 # int
1513 jg sys_fchownat 1289 jg sys_fchownat
1514 1290
1515 .globl compat_sys_futimesat_wrapper 1291ENTRY(compat_sys_futimesat_wrapper)
1516compat_sys_futimesat_wrapper:
1517 llgfr %r2,%r2 # unsigned int 1292 llgfr %r2,%r2 # unsigned int
1518 llgtr %r3,%r3 # char * 1293 llgtr %r3,%r3 # char *
1519 llgtr %r4,%r4 # struct timeval * 1294 llgtr %r4,%r4 # struct timeval *
1520 jg compat_sys_futimesat 1295 jg compat_sys_futimesat
1521 1296
1522 .globl sys32_fstatat64_wrapper 1297ENTRY(sys32_fstatat64_wrapper)
1523sys32_fstatat64_wrapper:
1524 llgfr %r2,%r2 # unsigned int 1298 llgfr %r2,%r2 # unsigned int
1525 llgtr %r3,%r3 # char * 1299 llgtr %r3,%r3 # char *
1526 llgtr %r4,%r4 # struct stat64 * 1300 llgtr %r4,%r4 # struct stat64 *
1527 lgfr %r5,%r5 # int 1301 lgfr %r5,%r5 # int
1528 jg sys32_fstatat64 1302 jg sys32_fstatat64
1529 1303
1530 .globl sys_unlinkat_wrapper 1304ENTRY(sys_unlinkat_wrapper)
1531sys_unlinkat_wrapper:
1532 lgfr %r2,%r2 # int 1305 lgfr %r2,%r2 # int
1533 llgtr %r3,%r3 # const char * 1306 llgtr %r3,%r3 # const char *
1534 lgfr %r4,%r4 # int 1307 lgfr %r4,%r4 # int
1535 jg sys_unlinkat 1308 jg sys_unlinkat
1536 1309
1537 .globl sys_renameat_wrapper 1310ENTRY(sys_renameat_wrapper)
1538sys_renameat_wrapper:
1539 lgfr %r2,%r2 # int 1311 lgfr %r2,%r2 # int
1540 llgtr %r3,%r3 # const char * 1312 llgtr %r3,%r3 # const char *
1541 lgfr %r4,%r4 # int 1313 lgfr %r4,%r4 # int
1542 llgtr %r5,%r5 # const char * 1314 llgtr %r5,%r5 # const char *
1543 jg sys_renameat 1315 jg sys_renameat
1544 1316
1545 .globl sys_linkat_wrapper 1317ENTRY(sys_linkat_wrapper)
1546sys_linkat_wrapper:
1547 lgfr %r2,%r2 # int 1318 lgfr %r2,%r2 # int
1548 llgtr %r3,%r3 # const char * 1319 llgtr %r3,%r3 # const char *
1549 lgfr %r4,%r4 # int 1320 lgfr %r4,%r4 # int
@@ -1551,37 +1322,32 @@ sys_linkat_wrapper:
1551 lgfr %r6,%r6 # int 1322 lgfr %r6,%r6 # int
1552 jg sys_linkat 1323 jg sys_linkat
1553 1324
1554 .globl sys_symlinkat_wrapper 1325ENTRY(sys_symlinkat_wrapper)
1555sys_symlinkat_wrapper:
1556 llgtr %r2,%r2 # const char * 1326 llgtr %r2,%r2 # const char *
1557 lgfr %r3,%r3 # int 1327 lgfr %r3,%r3 # int
1558 llgtr %r4,%r4 # const char * 1328 llgtr %r4,%r4 # const char *
1559 jg sys_symlinkat 1329 jg sys_symlinkat
1560 1330
1561 .globl sys_readlinkat_wrapper 1331ENTRY(sys_readlinkat_wrapper)
1562sys_readlinkat_wrapper:
1563 lgfr %r2,%r2 # int 1332 lgfr %r2,%r2 # int
1564 llgtr %r3,%r3 # const char * 1333 llgtr %r3,%r3 # const char *
1565 llgtr %r4,%r4 # char * 1334 llgtr %r4,%r4 # char *
1566 lgfr %r5,%r5 # int 1335 lgfr %r5,%r5 # int
1567 jg sys_readlinkat 1336 jg sys_readlinkat
1568 1337
1569 .globl sys_fchmodat_wrapper 1338ENTRY(sys_fchmodat_wrapper)
1570sys_fchmodat_wrapper:
1571 lgfr %r2,%r2 # int 1339 lgfr %r2,%r2 # int
1572 llgtr %r3,%r3 # const char * 1340 llgtr %r3,%r3 # const char *
1573 llgfr %r4,%r4 # mode_t 1341 llgfr %r4,%r4 # mode_t
1574 jg sys_fchmodat 1342 jg sys_fchmodat
1575 1343
1576 .globl sys_faccessat_wrapper 1344ENTRY(sys_faccessat_wrapper)
1577sys_faccessat_wrapper:
1578 lgfr %r2,%r2 # int 1345 lgfr %r2,%r2 # int
1579 llgtr %r3,%r3 # const char * 1346 llgtr %r3,%r3 # const char *
1580 lgfr %r4,%r4 # int 1347 lgfr %r4,%r4 # int
1581 jg sys_faccessat 1348 jg sys_faccessat
1582 1349
1583 .globl compat_sys_pselect6_wrapper 1350ENTRY(compat_sys_pselect6_wrapper)
1584compat_sys_pselect6_wrapper:
1585 lgfr %r2,%r2 # int 1351 lgfr %r2,%r2 # int
1586 llgtr %r3,%r3 # fd_set * 1352 llgtr %r3,%r3 # fd_set *
1587 llgtr %r4,%r4 # fd_set * 1353 llgtr %r4,%r4 # fd_set *
@@ -1591,8 +1357,7 @@ compat_sys_pselect6_wrapper:
1591 stg %r0,160(%r15) 1357 stg %r0,160(%r15)
1592 jg compat_sys_pselect6 1358 jg compat_sys_pselect6
1593 1359
1594 .globl compat_sys_ppoll_wrapper 1360ENTRY(compat_sys_ppoll_wrapper)
1595compat_sys_ppoll_wrapper:
1596 llgtr %r2,%r2 # struct pollfd * 1361 llgtr %r2,%r2 # struct pollfd *
1597 llgfr %r3,%r3 # unsigned int 1362 llgfr %r3,%r3 # unsigned int
1598 llgtr %r4,%r4 # struct timespec * 1363 llgtr %r4,%r4 # struct timespec *
@@ -1600,26 +1365,22 @@ compat_sys_ppoll_wrapper:
1600 llgfr %r6,%r6 # size_t 1365 llgfr %r6,%r6 # size_t
1601 jg compat_sys_ppoll 1366 jg compat_sys_ppoll
1602 1367
1603 .globl sys_unshare_wrapper 1368ENTRY(sys_unshare_wrapper)
1604sys_unshare_wrapper:
1605 llgfr %r2,%r2 # unsigned long 1369 llgfr %r2,%r2 # unsigned long
1606 jg sys_unshare 1370 jg sys_unshare
1607 1371
1608 .globl compat_sys_set_robust_list_wrapper 1372ENTRY(compat_sys_set_robust_list_wrapper)
1609compat_sys_set_robust_list_wrapper:
1610 llgtr %r2,%r2 # struct compat_robust_list_head * 1373 llgtr %r2,%r2 # struct compat_robust_list_head *
1611 llgfr %r3,%r3 # size_t 1374 llgfr %r3,%r3 # size_t
1612 jg compat_sys_set_robust_list 1375 jg compat_sys_set_robust_list
1613 1376
1614 .globl compat_sys_get_robust_list_wrapper 1377ENTRY(compat_sys_get_robust_list_wrapper)
1615compat_sys_get_robust_list_wrapper:
1616 lgfr %r2,%r2 # int 1378 lgfr %r2,%r2 # int
1617 llgtr %r3,%r3 # compat_uptr_t_t * 1379 llgtr %r3,%r3 # compat_uptr_t_t *
1618 llgtr %r4,%r4 # compat_size_t * 1380 llgtr %r4,%r4 # compat_size_t *
1619 jg compat_sys_get_robust_list 1381 jg compat_sys_get_robust_list
1620 1382
1621 .globl sys_splice_wrapper 1383ENTRY(sys_splice_wrapper)
1622sys_splice_wrapper:
1623 lgfr %r2,%r2 # int 1384 lgfr %r2,%r2 # int
1624 llgtr %r3,%r3 # loff_t * 1385 llgtr %r3,%r3 # loff_t *
1625 lgfr %r4,%r4 # int 1386 lgfr %r4,%r4 # int
@@ -1629,8 +1390,7 @@ sys_splice_wrapper:
1629 stg %r0,160(%r15) 1390 stg %r0,160(%r15)
1630 jg sys_splice 1391 jg sys_splice
1631 1392
1632 .globl sys_sync_file_range_wrapper 1393ENTRY(sys_sync_file_range_wrapper)
1633sys_sync_file_range_wrapper:
1634 lgfr %r2,%r2 # int 1394 lgfr %r2,%r2 # int
1635 sllg %r3,%r3,32 # get high word of 64bit loff_t 1395 sllg %r3,%r3,32 # get high word of 64bit loff_t
1636 or %r3,%r4 # get low word of 64bit loff_t 1396 or %r3,%r4 # get low word of 64bit loff_t
@@ -1639,31 +1399,27 @@ sys_sync_file_range_wrapper:
1639 llgf %r5,164(%r15) # unsigned int 1399 llgf %r5,164(%r15) # unsigned int
1640 jg sys_sync_file_range 1400 jg sys_sync_file_range
1641 1401
1642 .globl sys_tee_wrapper 1402ENTRY(sys_tee_wrapper)
1643sys_tee_wrapper:
1644 lgfr %r2,%r2 # int 1403 lgfr %r2,%r2 # int
1645 lgfr %r3,%r3 # int 1404 lgfr %r3,%r3 # int
1646 llgfr %r4,%r4 # size_t 1405 llgfr %r4,%r4 # size_t
1647 llgfr %r5,%r5 # unsigned int 1406 llgfr %r5,%r5 # unsigned int
1648 jg sys_tee 1407 jg sys_tee
1649 1408
1650 .globl compat_sys_vmsplice_wrapper 1409ENTRY(compat_sys_vmsplice_wrapper)
1651compat_sys_vmsplice_wrapper:
1652 lgfr %r2,%r2 # int 1410 lgfr %r2,%r2 # int
1653 llgtr %r3,%r3 # compat_iovec * 1411 llgtr %r3,%r3 # compat_iovec *
1654 llgfr %r4,%r4 # unsigned int 1412 llgfr %r4,%r4 # unsigned int
1655 llgfr %r5,%r5 # unsigned int 1413 llgfr %r5,%r5 # unsigned int
1656 jg compat_sys_vmsplice 1414 jg compat_sys_vmsplice
1657 1415
1658 .globl sys_getcpu_wrapper 1416ENTRY(sys_getcpu_wrapper)
1659sys_getcpu_wrapper:
1660 llgtr %r2,%r2 # unsigned * 1417 llgtr %r2,%r2 # unsigned *
1661 llgtr %r3,%r3 # unsigned * 1418 llgtr %r3,%r3 # unsigned *
1662 llgtr %r4,%r4 # struct getcpu_cache * 1419 llgtr %r4,%r4 # struct getcpu_cache *
1663 jg sys_getcpu 1420 jg sys_getcpu
1664 1421
1665 .globl compat_sys_epoll_pwait_wrapper 1422ENTRY(compat_sys_epoll_pwait_wrapper)
1666compat_sys_epoll_pwait_wrapper:
1667 lgfr %r2,%r2 # int 1423 lgfr %r2,%r2 # int
1668 llgtr %r3,%r3 # struct compat_epoll_event * 1424 llgtr %r3,%r3 # struct compat_epoll_event *
1669 lgfr %r4,%r4 # int 1425 lgfr %r4,%r4 # int
@@ -1673,34 +1429,29 @@ compat_sys_epoll_pwait_wrapper:
1673 stg %r0,160(%r15) 1429 stg %r0,160(%r15)
1674 jg compat_sys_epoll_pwait 1430 jg compat_sys_epoll_pwait
1675 1431
1676 .globl compat_sys_utimes_wrapper 1432ENTRY(compat_sys_utimes_wrapper)
1677compat_sys_utimes_wrapper:
1678 llgtr %r2,%r2 # char * 1433 llgtr %r2,%r2 # char *
1679 llgtr %r3,%r3 # struct compat_timeval * 1434 llgtr %r3,%r3 # struct compat_timeval *
1680 jg compat_sys_utimes 1435 jg compat_sys_utimes
1681 1436
1682 .globl compat_sys_utimensat_wrapper 1437ENTRY(compat_sys_utimensat_wrapper)
1683compat_sys_utimensat_wrapper:
1684 llgfr %r2,%r2 # unsigned int 1438 llgfr %r2,%r2 # unsigned int
1685 llgtr %r3,%r3 # char * 1439 llgtr %r3,%r3 # char *
1686 llgtr %r4,%r4 # struct compat_timespec * 1440 llgtr %r4,%r4 # struct compat_timespec *
1687 lgfr %r5,%r5 # int 1441 lgfr %r5,%r5 # int
1688 jg compat_sys_utimensat 1442 jg compat_sys_utimensat
1689 1443
1690 .globl compat_sys_signalfd_wrapper 1444ENTRY(compat_sys_signalfd_wrapper)
1691compat_sys_signalfd_wrapper:
1692 lgfr %r2,%r2 # int 1445 lgfr %r2,%r2 # int
1693 llgtr %r3,%r3 # compat_sigset_t * 1446 llgtr %r3,%r3 # compat_sigset_t *
1694 llgfr %r4,%r4 # compat_size_t 1447 llgfr %r4,%r4 # compat_size_t
1695 jg compat_sys_signalfd 1448 jg compat_sys_signalfd
1696 1449
1697 .globl sys_eventfd_wrapper 1450ENTRY(sys_eventfd_wrapper)
1698sys_eventfd_wrapper:
1699 llgfr %r2,%r2 # unsigned int 1451 llgfr %r2,%r2 # unsigned int
1700 jg sys_eventfd 1452 jg sys_eventfd
1701 1453
1702 .globl sys_fallocate_wrapper 1454ENTRY(sys_fallocate_wrapper)
1703sys_fallocate_wrapper:
1704 lgfr %r2,%r2 # int 1455 lgfr %r2,%r2 # int
1705 lgfr %r3,%r3 # int 1456 lgfr %r3,%r3 # int
1706 sllg %r4,%r4,32 # get high word of 64bit loff_t 1457 sllg %r4,%r4,32 # get high word of 64bit loff_t
@@ -1709,94 +1460,80 @@ sys_fallocate_wrapper:
1709 l %r5,164(%r15) # get low word of 64bit loff_t 1460 l %r5,164(%r15) # get low word of 64bit loff_t
1710 jg sys_fallocate 1461 jg sys_fallocate
1711 1462
1712 .globl sys_timerfd_create_wrapper 1463ENTRY(sys_timerfd_create_wrapper)
1713sys_timerfd_create_wrapper:
1714 lgfr %r2,%r2 # int 1464 lgfr %r2,%r2 # int
1715 lgfr %r3,%r3 # int 1465 lgfr %r3,%r3 # int
1716 jg sys_timerfd_create 1466 jg sys_timerfd_create
1717 1467
1718 .globl compat_sys_timerfd_settime_wrapper 1468ENTRY(compat_sys_timerfd_settime_wrapper)
1719compat_sys_timerfd_settime_wrapper:
1720 lgfr %r2,%r2 # int 1469 lgfr %r2,%r2 # int
1721 lgfr %r3,%r3 # int 1470 lgfr %r3,%r3 # int
1722 llgtr %r4,%r4 # struct compat_itimerspec * 1471 llgtr %r4,%r4 # struct compat_itimerspec *
1723 llgtr %r5,%r5 # struct compat_itimerspec * 1472 llgtr %r5,%r5 # struct compat_itimerspec *
1724 jg compat_sys_timerfd_settime 1473 jg compat_sys_timerfd_settime
1725 1474
1726 .globl compat_sys_timerfd_gettime_wrapper 1475ENTRY(compat_sys_timerfd_gettime_wrapper)
1727compat_sys_timerfd_gettime_wrapper:
1728 lgfr %r2,%r2 # int 1476 lgfr %r2,%r2 # int
1729 llgtr %r3,%r3 # struct compat_itimerspec * 1477 llgtr %r3,%r3 # struct compat_itimerspec *
1730 jg compat_sys_timerfd_gettime 1478 jg compat_sys_timerfd_gettime
1731 1479
1732 .globl compat_sys_signalfd4_wrapper 1480ENTRY(compat_sys_signalfd4_wrapper)
1733compat_sys_signalfd4_wrapper:
1734 lgfr %r2,%r2 # int 1481 lgfr %r2,%r2 # int
1735 llgtr %r3,%r3 # compat_sigset_t * 1482 llgtr %r3,%r3 # compat_sigset_t *
1736 llgfr %r4,%r4 # compat_size_t 1483 llgfr %r4,%r4 # compat_size_t
1737 lgfr %r5,%r5 # int 1484 lgfr %r5,%r5 # int
1738 jg compat_sys_signalfd4 1485 jg compat_sys_signalfd4
1739 1486
1740 .globl sys_eventfd2_wrapper 1487ENTRY(sys_eventfd2_wrapper)
1741sys_eventfd2_wrapper:
1742 llgfr %r2,%r2 # unsigned int 1488 llgfr %r2,%r2 # unsigned int
1743 lgfr %r3,%r3 # int 1489 lgfr %r3,%r3 # int
1744 jg sys_eventfd2 1490 jg sys_eventfd2
1745 1491
1746 .globl sys_inotify_init1_wrapper 1492ENTRY(sys_inotify_init1_wrapper)
1747sys_inotify_init1_wrapper:
1748 lgfr %r2,%r2 # int 1493 lgfr %r2,%r2 # int
1749 jg sys_inotify_init1 1494 jg sys_inotify_init1
1750 1495
1751 .globl sys_pipe2_wrapper 1496ENTRY(sys_pipe2_wrapper)
1752sys_pipe2_wrapper:
1753 llgtr %r2,%r2 # u32 * 1497 llgtr %r2,%r2 # u32 *
1754 lgfr %r3,%r3 # int 1498 lgfr %r3,%r3 # int
1755 jg sys_pipe2 # branch to system call 1499 jg sys_pipe2 # branch to system call
1756 1500
1757 .globl sys_dup3_wrapper 1501ENTRY(sys_dup3_wrapper)
1758sys_dup3_wrapper:
1759 llgfr %r2,%r2 # unsigned int 1502 llgfr %r2,%r2 # unsigned int
1760 llgfr %r3,%r3 # unsigned int 1503 llgfr %r3,%r3 # unsigned int
1761 lgfr %r4,%r4 # int 1504 lgfr %r4,%r4 # int
1762 jg sys_dup3 # branch to system call 1505 jg sys_dup3 # branch to system call
1763 1506
1764 .globl sys_epoll_create1_wrapper 1507ENTRY(sys_epoll_create1_wrapper)
1765sys_epoll_create1_wrapper:
1766 lgfr %r2,%r2 # int 1508 lgfr %r2,%r2 # int
1767 jg sys_epoll_create1 # branch to system call 1509 jg sys_epoll_create1 # branch to system call
1768 1510
1769 .globl sys32_readahead_wrapper 1511ENTRY(sys32_readahead_wrapper)
1770sys32_readahead_wrapper:
1771 lgfr %r2,%r2 # int 1512 lgfr %r2,%r2 # int
1772 llgfr %r3,%r3 # u32 1513 llgfr %r3,%r3 # u32
1773 llgfr %r4,%r4 # u32 1514 llgfr %r4,%r4 # u32
1774 lgfr %r5,%r5 # s32 1515 lgfr %r5,%r5 # s32
1775 jg sys32_readahead # branch to system call 1516 jg sys32_readahead # branch to system call
1776 1517
1777 .globl sys32_sendfile64_wrapper 1518ENTRY(sys32_sendfile64_wrapper)
1778sys32_sendfile64_wrapper:
1779 lgfr %r2,%r2 # int 1519 lgfr %r2,%r2 # int
1780 lgfr %r3,%r3 # int 1520 lgfr %r3,%r3 # int
1781 llgtr %r4,%r4 # compat_loff_t * 1521 llgtr %r4,%r4 # compat_loff_t *
1782 lgfr %r5,%r5 # s32 1522 lgfr %r5,%r5 # s32
1783 jg sys32_sendfile64 # branch to system call 1523 jg sys32_sendfile64 # branch to system call
1784 1524
1785 .globl sys_tkill_wrapper 1525ENTRY(sys_tkill_wrapper)
1786sys_tkill_wrapper:
1787 lgfr %r2,%r2 # pid_t 1526 lgfr %r2,%r2 # pid_t
1788 lgfr %r3,%r3 # int 1527 lgfr %r3,%r3 # int
1789 jg sys_tkill # branch to system call 1528 jg sys_tkill # branch to system call
1790 1529
1791 .globl sys_tgkill_wrapper 1530ENTRY(sys_tgkill_wrapper)
1792sys_tgkill_wrapper:
1793 lgfr %r2,%r2 # pid_t 1531 lgfr %r2,%r2 # pid_t
1794 lgfr %r3,%r3 # pid_t 1532 lgfr %r3,%r3 # pid_t
1795 lgfr %r4,%r4 # int 1533 lgfr %r4,%r4 # int
1796 jg sys_tgkill # branch to system call 1534 jg sys_tgkill # branch to system call
1797 1535
1798 .globl compat_sys_keyctl_wrapper 1536ENTRY(compat_sys_keyctl_wrapper)
1799compat_sys_keyctl_wrapper:
1800 llgfr %r2,%r2 # u32 1537 llgfr %r2,%r2 # u32
1801 llgfr %r3,%r3 # u32 1538 llgfr %r3,%r3 # u32
1802 llgfr %r4,%r4 # u32 1539 llgfr %r4,%r4 # u32
@@ -1804,8 +1541,7 @@ compat_sys_keyctl_wrapper:
1804 llgfr %r6,%r6 # u32 1541 llgfr %r6,%r6 # u32
1805 jg compat_sys_keyctl # branch to system call 1542 jg compat_sys_keyctl # branch to system call
1806 1543
1807 .globl compat_sys_preadv_wrapper 1544ENTRY(compat_sys_preadv_wrapper)
1808compat_sys_preadv_wrapper:
1809 llgfr %r2,%r2 # unsigned long 1545 llgfr %r2,%r2 # unsigned long
1810 llgtr %r3,%r3 # compat_iovec * 1546 llgtr %r3,%r3 # compat_iovec *
1811 llgfr %r4,%r4 # unsigned long 1547 llgfr %r4,%r4 # unsigned long
@@ -1813,8 +1549,7 @@ compat_sys_preadv_wrapper:
1813 llgfr %r6,%r6 # u32 1549 llgfr %r6,%r6 # u32
1814 jg compat_sys_preadv # branch to system call 1550 jg compat_sys_preadv # branch to system call
1815 1551
1816 .globl compat_sys_pwritev_wrapper 1552ENTRY(compat_sys_pwritev_wrapper)
1817compat_sys_pwritev_wrapper:
1818 llgfr %r2,%r2 # unsigned long 1553 llgfr %r2,%r2 # unsigned long
1819 llgtr %r3,%r3 # compat_iovec * 1554 llgtr %r3,%r3 # compat_iovec *
1820 llgfr %r4,%r4 # unsigned long 1555 llgfr %r4,%r4 # unsigned long
@@ -1822,16 +1557,14 @@ compat_sys_pwritev_wrapper:
1822 llgfr %r6,%r6 # u32 1557 llgfr %r6,%r6 # u32
1823 jg compat_sys_pwritev # branch to system call 1558 jg compat_sys_pwritev # branch to system call
1824 1559
1825 .globl compat_sys_rt_tgsigqueueinfo_wrapper 1560ENTRY(compat_sys_rt_tgsigqueueinfo_wrapper)
1826compat_sys_rt_tgsigqueueinfo_wrapper:
1827 lgfr %r2,%r2 # compat_pid_t 1561 lgfr %r2,%r2 # compat_pid_t
1828 lgfr %r3,%r3 # compat_pid_t 1562 lgfr %r3,%r3 # compat_pid_t
1829 lgfr %r4,%r4 # int 1563 lgfr %r4,%r4 # int
1830 llgtr %r5,%r5 # struct compat_siginfo * 1564 llgtr %r5,%r5 # struct compat_siginfo *
1831 jg compat_sys_rt_tgsigqueueinfo_wrapper # branch to system call 1565 jg compat_sys_rt_tgsigqueueinfo_wrapper # branch to system call
1832 1566
1833 .globl sys_perf_event_open_wrapper 1567ENTRY(sys_perf_event_open_wrapper)
1834sys_perf_event_open_wrapper:
1835 llgtr %r2,%r2 # const struct perf_event_attr * 1568 llgtr %r2,%r2 # const struct perf_event_attr *
1836 lgfr %r3,%r3 # pid_t 1569 lgfr %r3,%r3 # pid_t
1837 lgfr %r4,%r4 # int 1570 lgfr %r4,%r4 # int
@@ -1839,29 +1572,25 @@ sys_perf_event_open_wrapper:
1839 llgfr %r6,%r6 # unsigned long 1572 llgfr %r6,%r6 # unsigned long
1840 jg sys_perf_event_open # branch to system call 1573 jg sys_perf_event_open # branch to system call
1841 1574
1842 .globl sys_clone_wrapper 1575ENTRY(sys_clone_wrapper)
1843sys_clone_wrapper:
1844 llgfr %r2,%r2 # unsigned long 1576 llgfr %r2,%r2 # unsigned long
1845 llgfr %r3,%r3 # unsigned long 1577 llgfr %r3,%r3 # unsigned long
1846 llgtr %r4,%r4 # int * 1578 llgtr %r4,%r4 # int *
1847 llgtr %r5,%r5 # int * 1579 llgtr %r5,%r5 # int *
1848 jg sys_clone # branch to system call 1580 jg sys_clone # branch to system call
1849 1581
1850 .globl sys32_execve_wrapper 1582ENTRY(sys32_execve_wrapper)
1851sys32_execve_wrapper:
1852 llgtr %r2,%r2 # char * 1583 llgtr %r2,%r2 # char *
1853 llgtr %r3,%r3 # compat_uptr_t * 1584 llgtr %r3,%r3 # compat_uptr_t *
1854 llgtr %r4,%r4 # compat_uptr_t * 1585 llgtr %r4,%r4 # compat_uptr_t *
1855 jg sys32_execve # branch to system call 1586 jg sys32_execve # branch to system call
1856 1587
1857 .globl sys_fanotify_init_wrapper 1588ENTRY(sys_fanotify_init_wrapper)
1858sys_fanotify_init_wrapper:
1859 llgfr %r2,%r2 # unsigned int 1589 llgfr %r2,%r2 # unsigned int
1860 llgfr %r3,%r3 # unsigned int 1590 llgfr %r3,%r3 # unsigned int
1861 jg sys_fanotify_init # branch to system call 1591 jg sys_fanotify_init # branch to system call
1862 1592
1863 .globl sys_fanotify_mark_wrapper 1593ENTRY(sys_fanotify_mark_wrapper)
1864sys_fanotify_mark_wrapper:
1865 lgfr %r2,%r2 # int 1594 lgfr %r2,%r2 # int
1866 llgfr %r3,%r3 # unsigned int 1595 llgfr %r3,%r3 # unsigned int
1867 sllg %r4,%r4,32 # get high word of 64bit mask 1596 sllg %r4,%r4,32 # get high word of 64bit mask
@@ -1870,16 +1599,14 @@ sys_fanotify_mark_wrapper:
1870 llgt %r6,164(%r15) # char * 1599 llgt %r6,164(%r15) # char *
1871 jg sys_fanotify_mark # branch to system call 1600 jg sys_fanotify_mark # branch to system call
1872 1601
1873 .globl sys_prlimit64_wrapper 1602ENTRY(sys_prlimit64_wrapper)
1874sys_prlimit64_wrapper:
1875 lgfr %r2,%r2 # pid_t 1603 lgfr %r2,%r2 # pid_t
1876 llgfr %r3,%r3 # unsigned int 1604 llgfr %r3,%r3 # unsigned int
1877 llgtr %r4,%r4 # const struct rlimit64 __user * 1605 llgtr %r4,%r4 # const struct rlimit64 __user *
1878 llgtr %r5,%r5 # struct rlimit64 __user * 1606 llgtr %r5,%r5 # struct rlimit64 __user *
1879 jg sys_prlimit64 # branch to system call 1607 jg sys_prlimit64 # branch to system call
1880 1608
1881 .globl sys_name_to_handle_at_wrapper 1609ENTRY(sys_name_to_handle_at_wrapper)
1882sys_name_to_handle_at_wrapper:
1883 lgfr %r2,%r2 # int 1610 lgfr %r2,%r2 # int
1884 llgtr %r3,%r3 # const char __user * 1611 llgtr %r3,%r3 # const char __user *
1885 llgtr %r4,%r4 # struct file_handle __user * 1612 llgtr %r4,%r4 # struct file_handle __user *
@@ -1887,21 +1614,18 @@ sys_name_to_handle_at_wrapper:
1887 lgfr %r6,%r6 # int 1614 lgfr %r6,%r6 # int
1888 jg sys_name_to_handle_at 1615 jg sys_name_to_handle_at
1889 1616
1890 .globl compat_sys_open_by_handle_at_wrapper 1617ENTRY(compat_sys_open_by_handle_at_wrapper)
1891compat_sys_open_by_handle_at_wrapper:
1892 lgfr %r2,%r2 # int 1618 lgfr %r2,%r2 # int
1893 llgtr %r3,%r3 # struct file_handle __user * 1619 llgtr %r3,%r3 # struct file_handle __user *
1894 lgfr %r4,%r4 # int 1620 lgfr %r4,%r4 # int
1895 jg compat_sys_open_by_handle_at 1621 jg compat_sys_open_by_handle_at
1896 1622
1897 .globl compat_sys_clock_adjtime_wrapper 1623ENTRY(compat_sys_clock_adjtime_wrapper)
1898compat_sys_clock_adjtime_wrapper:
1899 lgfr %r2,%r2 # clockid_t (int) 1624 lgfr %r2,%r2 # clockid_t (int)
1900 llgtr %r3,%r3 # struct compat_timex __user * 1625 llgtr %r3,%r3 # struct compat_timex __user *
1901 jg compat_sys_clock_adjtime 1626 jg compat_sys_clock_adjtime
1902 1627
1903 .globl sys_syncfs_wrapper 1628ENTRY(sys_syncfs_wrapper)
1904sys_syncfs_wrapper:
1905 lgfr %r2,%r2 # int 1629 lgfr %r2,%r2 # int
1906 jg sys_syncfs 1630 jg sys_syncfs
1907 1631
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 0476174dfff5..3eab7cfab07c 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -9,8 +9,8 @@
9 * Heiko Carstens <heiko.carstens@de.ibm.com> 9 * Heiko Carstens <heiko.carstens@de.ibm.com>
10 */ 10 */
11 11
12#include <linux/linkage.h>
13#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/linkage.h>
14#include <asm/cache.h> 14#include <asm/cache.h>
15#include <asm/errno.h> 15#include <asm/errno.h>
16#include <asm/ptrace.h> 16#include <asm/ptrace.h>
@@ -197,8 +197,7 @@ STACK_SIZE = 1 << STACK_SHIFT
197 * Returns: 197 * Returns:
198 * gpr2 = prev 198 * gpr2 = prev
199 */ 199 */
200 .globl __switch_to 200ENTRY(__switch_to)
201__switch_to:
202 basr %r1,0 201 basr %r1,0
2030: l %r4,__THREAD_info(%r2) # get thread_info of prev 2020: l %r4,__THREAD_info(%r2) # get thread_info of prev
204 l %r5,__THREAD_info(%r3) # get thread_info of next 203 l %r5,__THREAD_info(%r3) # get thread_info of next
@@ -224,8 +223,7 @@ __critical_start:
224 * are executed with interrupts enabled. 223 * are executed with interrupts enabled.
225 */ 224 */
226 225
227 .globl system_call 226ENTRY(system_call)
228system_call:
229 stpt __LC_SYNC_ENTER_TIMER 227 stpt __LC_SYNC_ENTER_TIMER
230sysc_saveall: 228sysc_saveall:
231 SAVE_ALL_SVC __LC_SVC_OLD_PSW,__LC_SAVE_AREA 229 SAVE_ALL_SVC __LC_SVC_OLD_PSW,__LC_SAVE_AREA
@@ -388,8 +386,7 @@ sysc_tracenogo:
388# 386#
389# a new process exits the kernel with ret_from_fork 387# a new process exits the kernel with ret_from_fork
390# 388#
391 .globl ret_from_fork 389ENTRY(ret_from_fork)
392ret_from_fork:
393 l %r13,__LC_SVC_NEW_PSW+4 390 l %r13,__LC_SVC_NEW_PSW+4
394 l %r12,__LC_THREAD_INFO # load pointer to thread_info struct 391 l %r12,__LC_THREAD_INFO # load pointer to thread_info struct
395 tm SP_PSW+1(%r15),0x01 # forking a kernel thread ? 392 tm SP_PSW+1(%r15),0x01 # forking a kernel thread ?
@@ -405,8 +402,7 @@ ret_from_fork:
405# kernel_execve function needs to deal with pt_regs that is not 402# kernel_execve function needs to deal with pt_regs that is not
406# at the usual place 403# at the usual place
407# 404#
408 .globl kernel_execve 405ENTRY(kernel_execve)
409kernel_execve:
410 stm %r12,%r15,48(%r15) 406 stm %r12,%r15,48(%r15)
411 lr %r14,%r15 407 lr %r14,%r15
412 l %r13,__LC_SVC_NEW_PSW+4 408 l %r13,__LC_SVC_NEW_PSW+4
@@ -438,8 +434,7 @@ kernel_execve:
438 * Program check handler routine 434 * Program check handler routine
439 */ 435 */
440 436
441 .globl pgm_check_handler 437ENTRY(pgm_check_handler)
442pgm_check_handler:
443/* 438/*
444 * First we need to check for a special case: 439 * First we need to check for a special case:
445 * Single stepping an instruction that disables the PER event mask will 440 * Single stepping an instruction that disables the PER event mask will
@@ -565,8 +560,7 @@ kernel_per:
565 * IO interrupt handler routine 560 * IO interrupt handler routine
566 */ 561 */
567 562
568 .globl io_int_handler 563ENTRY(io_int_handler)
569io_int_handler:
570 stck __LC_INT_CLOCK 564 stck __LC_INT_CLOCK
571 stpt __LC_ASYNC_ENTER_TIMER 565 stpt __LC_ASYNC_ENTER_TIMER
572 SAVE_ALL_ASYNC __LC_IO_OLD_PSW,__LC_SAVE_AREA+16 566 SAVE_ALL_ASYNC __LC_IO_OLD_PSW,__LC_SAVE_AREA+16
@@ -703,8 +697,7 @@ io_notify_resume:
703 * External interrupt handler routine 697 * External interrupt handler routine
704 */ 698 */
705 699
706 .globl ext_int_handler 700ENTRY(ext_int_handler)
707ext_int_handler:
708 stck __LC_INT_CLOCK 701 stck __LC_INT_CLOCK
709 stpt __LC_ASYNC_ENTER_TIMER 702 stpt __LC_ASYNC_ENTER_TIMER
710 SAVE_ALL_ASYNC __LC_EXT_OLD_PSW,__LC_SAVE_AREA+16 703 SAVE_ALL_ASYNC __LC_EXT_OLD_PSW,__LC_SAVE_AREA+16
@@ -731,8 +724,7 @@ __critical_end:
731 * Machine check handler routines 724 * Machine check handler routines
732 */ 725 */
733 726
734 .globl mcck_int_handler 727ENTRY(mcck_int_handler)
735mcck_int_handler:
736 stck __LC_MCCK_CLOCK 728 stck __LC_MCCK_CLOCK
737 spt __LC_CPU_TIMER_SAVE_AREA # revalidate cpu timer 729 spt __LC_CPU_TIMER_SAVE_AREA # revalidate cpu timer
738 lm %r0,%r15,__LC_GPREGS_SAVE_AREA # revalidate gprs 730 lm %r0,%r15,__LC_GPREGS_SAVE_AREA # revalidate gprs
@@ -818,8 +810,7 @@ mcck_return:
818 */ 810 */
819#ifdef CONFIG_SMP 811#ifdef CONFIG_SMP
820 __CPUINIT 812 __CPUINIT
821 .globl restart_int_handler 813ENTRY(restart_int_handler)
822restart_int_handler:
823 basr %r1,0 814 basr %r1,0
824restart_base: 815restart_base:
825 spt restart_vtime-restart_base(%r1) 816 spt restart_vtime-restart_base(%r1)
@@ -848,8 +839,7 @@ restart_vtime:
848/* 839/*
849 * If we do not run with SMP enabled, let the new CPU crash ... 840 * If we do not run with SMP enabled, let the new CPU crash ...
850 */ 841 */
851 .globl restart_int_handler 842ENTRY(restart_int_handler)
852restart_int_handler:
853 basr %r1,0 843 basr %r1,0
854restart_base: 844restart_base:
855 lpsw restart_crash-restart_base(%r1) 845 lpsw restart_crash-restart_base(%r1)
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index 17a6f83a2d67..66729eb7bbc5 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -5,10 +5,9 @@
5#include <linux/signal.h> 5#include <linux/signal.h>
6#include <asm/ptrace.h> 6#include <asm/ptrace.h>
7 7
8typedef void pgm_check_handler_t(struct pt_regs *, long, unsigned long); 8void do_protection_exception(struct pt_regs *, long, unsigned long);
9extern pgm_check_handler_t *pgm_check_table[128]; 9void do_dat_exception(struct pt_regs *, long, unsigned long);
10pgm_check_handler_t do_protection_exception; 10void do_asce_exception(struct pt_regs *, long, unsigned long);
11pgm_check_handler_t do_dat_exception;
12 11
13extern int sysctl_userprocess_debug; 12extern int sysctl_userprocess_debug;
14 13
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index d61967e2eab0..7a0fd426ca92 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -9,8 +9,8 @@
9 * Heiko Carstens <heiko.carstens@de.ibm.com> 9 * Heiko Carstens <heiko.carstens@de.ibm.com>
10 */ 10 */
11 11
12#include <linux/linkage.h>
13#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/linkage.h>
14#include <asm/cache.h> 14#include <asm/cache.h>
15#include <asm/errno.h> 15#include <asm/errno.h>
16#include <asm/ptrace.h> 16#include <asm/ptrace.h>
@@ -56,15 +56,28 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
56 _TIF_MCCK_PENDING) 56 _TIF_MCCK_PENDING)
57_TIF_SYSCALL = (_TIF_SYSCALL_TRACE>>8 | _TIF_SYSCALL_AUDIT>>8 | \ 57_TIF_SYSCALL = (_TIF_SYSCALL_TRACE>>8 | _TIF_SYSCALL_AUDIT>>8 | \
58 _TIF_SECCOMP>>8 | _TIF_SYSCALL_TRACEPOINT>>8) 58 _TIF_SECCOMP>>8 | _TIF_SYSCALL_TRACEPOINT>>8)
59_TIF_EXIT_SIE = (_TIF_SIGPENDING | _TIF_NEED_RESCHED | _TIF_MCCK_PENDING)
59 60
60#define BASED(name) name-system_call(%r13) 61#define BASED(name) name-system_call(%r13)
61 62
63 .macro SPP newpp
64#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
65 tm __LC_MACHINE_FLAGS+6,0x20 # MACHINE_FLAG_SPP
66 jz .+8
67 .insn s,0xb2800000,\newpp
68#endif
69 .endm
70
62 .macro HANDLE_SIE_INTERCEPT 71 .macro HANDLE_SIE_INTERCEPT
63#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE) 72#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
64 lg %r3,__LC_SIE_HOOK 73 tm __TI_flags+6(%r12),_TIF_SIE>>8
65 ltgr %r3,%r3
66 jz 0f 74 jz 0f
67 basr %r14,%r3 75 SPP __LC_CMF_HPP # set host id
76 clc SP_PSW+8(8,%r15),BASED(.Lsie_loop)
77 jl 0f
78 clc SP_PSW+8(8,%r15),BASED(.Lsie_done)
79 jhe 0f
80 mvc SP_PSW+8(8,%r15),BASED(.Lsie_loop)
680: 810:
69#endif 82#endif
70 .endm 83 .endm
@@ -206,8 +219,7 @@ _TIF_SYSCALL = (_TIF_SYSCALL_TRACE>>8 | _TIF_SYSCALL_AUDIT>>8 | \
206 * Returns: 219 * Returns:
207 * gpr2 = prev 220 * gpr2 = prev
208 */ 221 */
209 .globl __switch_to 222ENTRY(__switch_to)
210__switch_to:
211 lg %r4,__THREAD_info(%r2) # get thread_info of prev 223 lg %r4,__THREAD_info(%r2) # get thread_info of prev
212 lg %r5,__THREAD_info(%r3) # get thread_info of next 224 lg %r5,__THREAD_info(%r3) # get thread_info of next
213 tm __TI_flags+7(%r4),_TIF_MCCK_PENDING # machine check pending? 225 tm __TI_flags+7(%r4),_TIF_MCCK_PENDING # machine check pending?
@@ -232,8 +244,7 @@ __critical_start:
232 * are executed with interrupts enabled. 244 * are executed with interrupts enabled.
233 */ 245 */
234 246
235 .globl system_call 247ENTRY(system_call)
236system_call:
237 stpt __LC_SYNC_ENTER_TIMER 248 stpt __LC_SYNC_ENTER_TIMER
238sysc_saveall: 249sysc_saveall:
239 SAVE_ALL_SVC __LC_SVC_OLD_PSW,__LC_SAVE_AREA 250 SAVE_ALL_SVC __LC_SVC_OLD_PSW,__LC_SAVE_AREA
@@ -395,8 +406,7 @@ sysc_tracenogo:
395# 406#
396# a new process exits the kernel with ret_from_fork 407# a new process exits the kernel with ret_from_fork
397# 408#
398 .globl ret_from_fork 409ENTRY(ret_from_fork)
399ret_from_fork:
400 lg %r13,__LC_SVC_NEW_PSW+8 410 lg %r13,__LC_SVC_NEW_PSW+8
401 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct 411 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct
402 tm SP_PSW+1(%r15),0x01 # forking a kernel thread ? 412 tm SP_PSW+1(%r15),0x01 # forking a kernel thread ?
@@ -411,8 +421,7 @@ ret_from_fork:
411# kernel_execve function needs to deal with pt_regs that is not 421# kernel_execve function needs to deal with pt_regs that is not
412# at the usual place 422# at the usual place
413# 423#
414 .globl kernel_execve 424ENTRY(kernel_execve)
415kernel_execve:
416 stmg %r12,%r15,96(%r15) 425 stmg %r12,%r15,96(%r15)
417 lgr %r14,%r15 426 lgr %r14,%r15
418 aghi %r15,-SP_SIZE 427 aghi %r15,-SP_SIZE
@@ -442,8 +451,7 @@ kernel_execve:
442 * Program check handler routine 451 * Program check handler routine
443 */ 452 */
444 453
445 .globl pgm_check_handler 454ENTRY(pgm_check_handler)
446pgm_check_handler:
447/* 455/*
448 * First we need to check for a special case: 456 * First we need to check for a special case:
449 * Single stepping an instruction that disables the PER event mask will 457 * Single stepping an instruction that disables the PER event mask will
@@ -465,6 +473,7 @@ pgm_check_handler:
465 xc SP_ILC(4,%r15),SP_ILC(%r15) 473 xc SP_ILC(4,%r15),SP_ILC(%r15)
466 mvc SP_PSW(16,%r15),__LC_PGM_OLD_PSW 474 mvc SP_PSW(16,%r15),__LC_PGM_OLD_PSW
467 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct 475 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct
476 HANDLE_SIE_INTERCEPT
468 tm SP_PSW+1(%r15),0x01 # interrupting from user ? 477 tm SP_PSW+1(%r15),0x01 # interrupting from user ?
469 jz pgm_no_vtime 478 jz pgm_no_vtime
470 UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER 479 UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER
@@ -472,7 +481,6 @@ pgm_check_handler:
472 mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER 481 mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER
473 LAST_BREAK 482 LAST_BREAK
474pgm_no_vtime: 483pgm_no_vtime:
475 HANDLE_SIE_INTERCEPT
476 stg %r11,SP_ARGS(%r15) 484 stg %r11,SP_ARGS(%r15)
477 lgf %r3,__LC_PGM_ILC # load program interruption code 485 lgf %r3,__LC_PGM_ILC # load program interruption code
478 lg %r4,__LC_TRANS_EXC_CODE 486 lg %r4,__LC_TRANS_EXC_CODE
@@ -507,6 +515,7 @@ pgm_per_std:
507 CREATE_STACK_FRAME __LC_SAVE_AREA 515 CREATE_STACK_FRAME __LC_SAVE_AREA
508 mvc SP_PSW(16,%r15),__LC_PGM_OLD_PSW 516 mvc SP_PSW(16,%r15),__LC_PGM_OLD_PSW
509 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct 517 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct
518 HANDLE_SIE_INTERCEPT
510 tm SP_PSW+1(%r15),0x01 # interrupting from user ? 519 tm SP_PSW+1(%r15),0x01 # interrupting from user ?
511 jz pgm_no_vtime2 520 jz pgm_no_vtime2
512 UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER 521 UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER
@@ -514,7 +523,6 @@ pgm_per_std:
514 mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER 523 mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER
515 LAST_BREAK 524 LAST_BREAK
516pgm_no_vtime2: 525pgm_no_vtime2:
517 HANDLE_SIE_INTERCEPT
518 lg %r1,__TI_task(%r12) 526 lg %r1,__TI_task(%r12)
519 tm SP_PSW+1(%r15),0x01 # kernel per event ? 527 tm SP_PSW+1(%r15),0x01 # kernel per event ?
520 jz kernel_per 528 jz kernel_per
@@ -571,14 +579,14 @@ kernel_per:
571/* 579/*
572 * IO interrupt handler routine 580 * IO interrupt handler routine
573 */ 581 */
574 .globl io_int_handler 582ENTRY(io_int_handler)
575io_int_handler:
576 stck __LC_INT_CLOCK 583 stck __LC_INT_CLOCK
577 stpt __LC_ASYNC_ENTER_TIMER 584 stpt __LC_ASYNC_ENTER_TIMER
578 SAVE_ALL_ASYNC __LC_IO_OLD_PSW,__LC_SAVE_AREA+40 585 SAVE_ALL_ASYNC __LC_IO_OLD_PSW,__LC_SAVE_AREA+40
579 CREATE_STACK_FRAME __LC_SAVE_AREA+40 586 CREATE_STACK_FRAME __LC_SAVE_AREA+40
580 mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack 587 mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack
581 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct 588 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct
589 HANDLE_SIE_INTERCEPT
582 tm SP_PSW+1(%r15),0x01 # interrupting from user ? 590 tm SP_PSW+1(%r15),0x01 # interrupting from user ?
583 jz io_no_vtime 591 jz io_no_vtime
584 UPDATE_VTIME __LC_EXIT_TIMER,__LC_ASYNC_ENTER_TIMER,__LC_USER_TIMER 592 UPDATE_VTIME __LC_EXIT_TIMER,__LC_ASYNC_ENTER_TIMER,__LC_USER_TIMER
@@ -586,7 +594,6 @@ io_int_handler:
586 mvc __LC_LAST_UPDATE_TIMER(8),__LC_ASYNC_ENTER_TIMER 594 mvc __LC_LAST_UPDATE_TIMER(8),__LC_ASYNC_ENTER_TIMER
587 LAST_BREAK 595 LAST_BREAK
588io_no_vtime: 596io_no_vtime:
589 HANDLE_SIE_INTERCEPT
590 TRACE_IRQS_OFF 597 TRACE_IRQS_OFF
591 la %r2,SP_PTREGS(%r15) # address of register-save area 598 la %r2,SP_PTREGS(%r15) # address of register-save area
592 brasl %r14,do_IRQ # call standard irq handler 599 brasl %r14,do_IRQ # call standard irq handler
@@ -706,14 +713,14 @@ io_notify_resume:
706/* 713/*
707 * External interrupt handler routine 714 * External interrupt handler routine
708 */ 715 */
709 .globl ext_int_handler 716ENTRY(ext_int_handler)
710ext_int_handler:
711 stck __LC_INT_CLOCK 717 stck __LC_INT_CLOCK
712 stpt __LC_ASYNC_ENTER_TIMER 718 stpt __LC_ASYNC_ENTER_TIMER
713 SAVE_ALL_ASYNC __LC_EXT_OLD_PSW,__LC_SAVE_AREA+40 719 SAVE_ALL_ASYNC __LC_EXT_OLD_PSW,__LC_SAVE_AREA+40
714 CREATE_STACK_FRAME __LC_SAVE_AREA+40 720 CREATE_STACK_FRAME __LC_SAVE_AREA+40
715 mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack 721 mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack
716 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct 722 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct
723 HANDLE_SIE_INTERCEPT
717 tm SP_PSW+1(%r15),0x01 # interrupting from user ? 724 tm SP_PSW+1(%r15),0x01 # interrupting from user ?
718 jz ext_no_vtime 725 jz ext_no_vtime
719 UPDATE_VTIME __LC_EXIT_TIMER,__LC_ASYNC_ENTER_TIMER,__LC_USER_TIMER 726 UPDATE_VTIME __LC_EXIT_TIMER,__LC_ASYNC_ENTER_TIMER,__LC_USER_TIMER
@@ -721,7 +728,6 @@ ext_int_handler:
721 mvc __LC_LAST_UPDATE_TIMER(8),__LC_ASYNC_ENTER_TIMER 728 mvc __LC_LAST_UPDATE_TIMER(8),__LC_ASYNC_ENTER_TIMER
722 LAST_BREAK 729 LAST_BREAK
723ext_no_vtime: 730ext_no_vtime:
724 HANDLE_SIE_INTERCEPT
725 TRACE_IRQS_OFF 731 TRACE_IRQS_OFF
726 lghi %r1,4096 732 lghi %r1,4096
727 la %r2,SP_PTREGS(%r15) # address of register-save area 733 la %r2,SP_PTREGS(%r15) # address of register-save area
@@ -736,8 +742,7 @@ __critical_end:
736/* 742/*
737 * Machine check handler routines 743 * Machine check handler routines
738 */ 744 */
739 .globl mcck_int_handler 745ENTRY(mcck_int_handler)
740mcck_int_handler:
741 stck __LC_MCCK_CLOCK 746 stck __LC_MCCK_CLOCK
742 la %r1,4095 # revalidate r1 747 la %r1,4095 # revalidate r1
743 spt __LC_CPU_TIMER_SAVE_AREA-4095(%r1) # revalidate cpu timer 748 spt __LC_CPU_TIMER_SAVE_AREA-4095(%r1) # revalidate cpu timer
@@ -785,6 +790,7 @@ mcck_int_main:
785 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct 790 lg %r12,__LC_THREAD_INFO # load pointer to thread_info struct
786 tm __LC_MCCK_CODE+2,0x08 # mwp of old psw valid? 791 tm __LC_MCCK_CODE+2,0x08 # mwp of old psw valid?
787 jno mcck_no_vtime # no -> no timer update 792 jno mcck_no_vtime # no -> no timer update
793 HANDLE_SIE_INTERCEPT
788 tm SP_PSW+1(%r15),0x01 # interrupting from user ? 794 tm SP_PSW+1(%r15),0x01 # interrupting from user ?
789 jz mcck_no_vtime 795 jz mcck_no_vtime
790 UPDATE_VTIME __LC_EXIT_TIMER,__LC_MCCK_ENTER_TIMER,__LC_USER_TIMER 796 UPDATE_VTIME __LC_EXIT_TIMER,__LC_MCCK_ENTER_TIMER,__LC_USER_TIMER
@@ -804,7 +810,6 @@ mcck_no_vtime:
804 stosm __SF_EMPTY(%r15),0x04 # turn dat on 810 stosm __SF_EMPTY(%r15),0x04 # turn dat on
805 tm __TI_flags+7(%r12),_TIF_MCCK_PENDING 811 tm __TI_flags+7(%r12),_TIF_MCCK_PENDING
806 jno mcck_return 812 jno mcck_return
807 HANDLE_SIE_INTERCEPT
808 TRACE_IRQS_OFF 813 TRACE_IRQS_OFF
809 brasl %r14,s390_handle_mcck 814 brasl %r14,s390_handle_mcck
810 TRACE_IRQS_ON 815 TRACE_IRQS_ON
@@ -823,8 +828,7 @@ mcck_done:
823 */ 828 */
824#ifdef CONFIG_SMP 829#ifdef CONFIG_SMP
825 __CPUINIT 830 __CPUINIT
826 .globl restart_int_handler 831ENTRY(restart_int_handler)
827restart_int_handler:
828 basr %r1,0 832 basr %r1,0
829restart_base: 833restart_base:
830 spt restart_vtime-restart_base(%r1) 834 spt restart_vtime-restart_base(%r1)
@@ -851,8 +855,7 @@ restart_vtime:
851/* 855/*
852 * If we do not run with SMP enabled, let the new CPU crash ... 856 * If we do not run with SMP enabled, let the new CPU crash ...
853 */ 857 */
854 .globl restart_int_handler 858ENTRY(restart_int_handler)
855restart_int_handler:
856 basr %r1,0 859 basr %r1,0
857restart_base: 860restart_base:
858 lpswe restart_crash-restart_base(%r1) 861 lpswe restart_crash-restart_base(%r1)
@@ -1036,6 +1039,56 @@ cleanup_io_restore_insn:
1036.Lcritical_end: 1039.Lcritical_end:
1037 .quad __critical_end 1040 .quad __critical_end
1038 1041
1042#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
1043/*
1044 * sie64a calling convention:
1045 * %r2 pointer to sie control block
1046 * %r3 guest register save area
1047 */
1048ENTRY(sie64a)
1049 stmg %r6,%r14,__SF_GPRS(%r15) # save kernel registers
1050 stg %r2,__SF_EMPTY(%r15) # save control block pointer
1051 stg %r3,__SF_EMPTY+8(%r15) # save guest register save area
1052 lmg %r0,%r13,0(%r3) # load guest gprs 0-13
1053 lg %r14,__LC_THREAD_INFO # pointer thread_info struct
1054 oi __TI_flags+6(%r14),_TIF_SIE>>8
1055sie_loop:
1056 lg %r14,__LC_THREAD_INFO # pointer thread_info struct
1057 tm __TI_flags+7(%r14),_TIF_EXIT_SIE
1058 jnz sie_exit
1059 lg %r14,__SF_EMPTY(%r15) # get control block pointer
1060 SPP __SF_EMPTY(%r15) # set guest id
1061 sie 0(%r14)
1062sie_done:
1063 SPP __LC_CMF_HPP # set host id
1064 lg %r14,__LC_THREAD_INFO # pointer thread_info struct
1065sie_exit:
1066 ni __TI_flags+6(%r14),255-(_TIF_SIE>>8)
1067 lg %r14,__SF_EMPTY+8(%r15) # load guest register save area
1068 stmg %r0,%r13,0(%r14) # save guest gprs 0-13
1069 lmg %r6,%r14,__SF_GPRS(%r15) # restore kernel registers
1070 lghi %r2,0
1071 br %r14
1072sie_fault:
1073 lg %r14,__LC_THREAD_INFO # pointer thread_info struct
1074 ni __TI_flags+6(%r14),255-(_TIF_SIE>>8)
1075 lg %r14,__SF_EMPTY+8(%r15) # load guest register save area
1076 stmg %r0,%r13,0(%r14) # save guest gprs 0-13
1077 lmg %r6,%r14,__SF_GPRS(%r15) # restore kernel registers
1078 lghi %r2,-EFAULT
1079 br %r14
1080
1081 .align 8
1082.Lsie_loop:
1083 .quad sie_loop
1084.Lsie_done:
1085 .quad sie_done
1086
1087 .section __ex_table,"a"
1088 .quad sie_loop,sie_fault
1089 .previous
1090#endif
1091
1039 .section .rodata, "a" 1092 .section .rodata, "a"
1040#define SYSCALL(esa,esame,emu) .long esame 1093#define SYSCALL(esa,esame,emu) .long esame
1041 .globl sys_call_table 1094 .globl sys_call_table
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index fb317bf2c378..2d781bab37bb 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -22,6 +22,7 @@
22 */ 22 */
23 23
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/linkage.h>
25#include <asm/asm-offsets.h> 26#include <asm/asm-offsets.h>
26#include <asm/thread_info.h> 27#include <asm/thread_info.h>
27#include <asm/page.h> 28#include <asm/page.h>
@@ -383,8 +384,7 @@ iplstart:
383# doesn't need a builtin ipl record. 384# doesn't need a builtin ipl record.
384# 385#
385 .org 0x800 386 .org 0x800
386 .globl start 387ENTRY(start)
387start:
388 stm %r0,%r15,0x07b0 # store registers 388 stm %r0,%r15,0x07b0 # store registers
389 basr %r12,%r0 389 basr %r12,%r0
390.base: 390.base:
@@ -448,8 +448,7 @@ start:
448# or linload or SALIPL 448# or linload or SALIPL
449# 449#
450 .org 0x10000 450 .org 0x10000
451 .globl startup 451ENTRY(startup)
452startup:
453 basr %r13,0 # get base 452 basr %r13,0 # get base
454.LPG0: 453.LPG0:
455 xc 0x200(256),0x200 # partially clear lowcore 454 xc 0x200(256),0x200 # partially clear lowcore
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S
index b8f8dc126102..f21954b44dc1 100644
--- a/arch/s390/kernel/head31.S
+++ b/arch/s390/kernel/head31.S
@@ -11,13 +11,13 @@
11 */ 11 */
12 12
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/linkage.h>
14#include <asm/asm-offsets.h> 15#include <asm/asm-offsets.h>
15#include <asm/thread_info.h> 16#include <asm/thread_info.h>
16#include <asm/page.h> 17#include <asm/page.h>
17 18
18__HEAD 19__HEAD
19 .globl startup_continue 20ENTRY(startup_continue)
20startup_continue:
21 basr %r13,0 # get base 21 basr %r13,0 # get base
22.LPG1: 22.LPG1:
23 23
@@ -45,7 +45,7 @@ startup_continue:
45 # virtual and never return ... 45 # virtual and never return ...
46 .align 8 46 .align 8
47.Lentry:.long 0x00080000,0x80000000 + _stext 47.Lentry:.long 0x00080000,0x80000000 + _stext
48.Lctl: .long 0x04b50002 # cr0: various things 48.Lctl: .long 0x04b50000 # cr0: various things
49 .long 0 # cr1: primary space segment table 49 .long 0 # cr1: primary space segment table
50 .long .Lduct # cr2: dispatchable unit control table 50 .long .Lduct # cr2: dispatchable unit control table
51 .long 0 # cr3: instruction authorization 51 .long 0 # cr3: instruction authorization
@@ -78,8 +78,7 @@ startup_continue:
78.Lbase_cc: 78.Lbase_cc:
79 .long sched_clock_base_cc 79 .long sched_clock_base_cc
80 80
81 .globl _ehead 81ENTRY(_ehead)
82_ehead:
83 82
84#ifdef CONFIG_SHARED_KERNEL 83#ifdef CONFIG_SHARED_KERNEL
85 .org 0x100000 - 0x11000 # head.o ends at 0x11000 84 .org 0x100000 - 0x11000 # head.o ends at 0x11000
@@ -88,8 +87,8 @@ _ehead:
88# 87#
89# startup-code, running in absolute addressing mode 88# startup-code, running in absolute addressing mode
90# 89#
91 .globl _stext 90ENTRY(_stext)
92_stext: basr %r13,0 # get base 91 basr %r13,0 # get base
93.LPG3: 92.LPG3:
94# check control registers 93# check control registers
95 stctl %c0,%c15,0(%r15) 94 stctl %c0,%c15,0(%r15)
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index cdef68717416..ae5d492b069e 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -11,13 +11,13 @@
11 */ 11 */
12 12
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/linkage.h>
14#include <asm/asm-offsets.h> 15#include <asm/asm-offsets.h>
15#include <asm/thread_info.h> 16#include <asm/thread_info.h>
16#include <asm/page.h> 17#include <asm/page.h>
17 18
18__HEAD 19__HEAD
19 .globl startup_continue 20ENTRY(startup_continue)
20startup_continue:
21 larl %r1,sched_clock_base_cc 21 larl %r1,sched_clock_base_cc
22 mvc 0(8,%r1),__LC_LAST_UPDATE_CLOCK 22 mvc 0(8,%r1),__LC_LAST_UPDATE_CLOCK
23 larl %r13,.LPG1 # get base 23 larl %r13,.LPG1 # get base
@@ -46,7 +46,7 @@ startup_continue:
46 .align 16 46 .align 16
47.LPG1: 47.LPG1:
48.Lentry:.quad 0x0000000180000000,_stext 48.Lentry:.quad 0x0000000180000000,_stext
49.Lctl: .quad 0x04350002 # cr0: various things 49.Lctl: .quad 0x04040000 # cr0: AFP registers & secondary space
50 .quad 0 # cr1: primary space segment table 50 .quad 0 # cr1: primary space segment table
51 .quad .Lduct # cr2: dispatchable unit control table 51 .quad .Lduct # cr2: dispatchable unit control table
52 .quad 0 # cr3: instruction authorization 52 .quad 0 # cr3: instruction authorization
@@ -76,8 +76,7 @@ startup_continue:
76 .long 0x80000000,0,0,0 # invalid access-list entries 76 .long 0x80000000,0,0,0 # invalid access-list entries
77 .endr 77 .endr
78 78
79 .globl _ehead 79ENTRY(_ehead)
80_ehead:
81 80
82#ifdef CONFIG_SHARED_KERNEL 81#ifdef CONFIG_SHARED_KERNEL
83 .org 0x100000 - 0x11000 # head.o ends at 0x11000 82 .org 0x100000 - 0x11000 # head.o ends at 0x11000
@@ -86,8 +85,8 @@ _ehead:
86# 85#
87# startup-code, running in absolute addressing mode 86# startup-code, running in absolute addressing mode
88# 87#
89 .globl _stext 88ENTRY(_stext)
90_stext: basr %r13,0 # get base 89 basr %r13,0 # get base
91.LPG3: 90.LPG3:
92# check control registers 91# check control registers
93 stctg %c0,%c15,0(%r15) 92 stctg %c0,%c15,0(%r15)
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index e3264f6a9720..1f4050d45f78 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -88,15 +88,6 @@ int show_interrupts(struct seq_file *p, void *v)
88} 88}
89 89
90/* 90/*
91 * For compatibilty only. S/390 specific setup of interrupts et al. is done
92 * much later in init_channel_subsystem().
93 */
94void __init init_IRQ(void)
95{
96 /* nothing... */
97}
98
99/*
100 * Switch to the asynchronous interrupt stack for softirq execution. 91 * Switch to the asynchronous interrupt stack for softirq execution.
101 */ 92 */
102asmlinkage void do_softirq(void) 93asmlinkage void do_softirq(void)
@@ -144,28 +135,45 @@ void init_irq_proc(void)
144#endif 135#endif
145 136
146/* 137/*
147 * ext_int_hash[index] is the start of the list for all external interrupts 138 * ext_int_hash[index] is the list head for all external interrupts that hash
148 * that hash to this index. With the current set of external interrupts 139 * to this index.
149 * (0x1202 external call, 0x1004 cpu timer, 0x2401 hwc console, 0x4000
150 * iucv and 0x2603 pfault) this is always the first element.
151 */ 140 */
141static struct list_head ext_int_hash[256];
152 142
153struct ext_int_info { 143struct ext_int_info {
154 struct ext_int_info *next;
155 ext_int_handler_t handler; 144 ext_int_handler_t handler;
156 u16 code; 145 u16 code;
146 struct list_head entry;
147 struct rcu_head rcu;
157}; 148};
158 149
159static struct ext_int_info *ext_int_hash[256]; 150/* ext_int_hash_lock protects the handler lists for external interrupts */
151DEFINE_SPINLOCK(ext_int_hash_lock);
152
153static void __init init_external_interrupts(void)
154{
155 int idx;
156
157 for (idx = 0; idx < ARRAY_SIZE(ext_int_hash); idx++)
158 INIT_LIST_HEAD(&ext_int_hash[idx]);
159}
160 160
161static inline int ext_hash(u16 code) 161static inline int ext_hash(u16 code)
162{ 162{
163 return (code + (code >> 9)) & 0xff; 163 return (code + (code >> 9)) & 0xff;
164} 164}
165 165
166static void ext_int_hash_update(struct rcu_head *head)
167{
168 struct ext_int_info *p = container_of(head, struct ext_int_info, rcu);
169
170 kfree(p);
171}
172
166int register_external_interrupt(u16 code, ext_int_handler_t handler) 173int register_external_interrupt(u16 code, ext_int_handler_t handler)
167{ 174{
168 struct ext_int_info *p; 175 struct ext_int_info *p;
176 unsigned long flags;
169 int index; 177 int index;
170 178
171 p = kmalloc(sizeof(*p), GFP_ATOMIC); 179 p = kmalloc(sizeof(*p), GFP_ATOMIC);
@@ -174,33 +182,27 @@ int register_external_interrupt(u16 code, ext_int_handler_t handler)
174 p->code = code; 182 p->code = code;
175 p->handler = handler; 183 p->handler = handler;
176 index = ext_hash(code); 184 index = ext_hash(code);
177 p->next = ext_int_hash[index]; 185
178 ext_int_hash[index] = p; 186 spin_lock_irqsave(&ext_int_hash_lock, flags);
187 list_add_rcu(&p->entry, &ext_int_hash[index]);
188 spin_unlock_irqrestore(&ext_int_hash_lock, flags);
179 return 0; 189 return 0;
180} 190}
181EXPORT_SYMBOL(register_external_interrupt); 191EXPORT_SYMBOL(register_external_interrupt);
182 192
183int unregister_external_interrupt(u16 code, ext_int_handler_t handler) 193int unregister_external_interrupt(u16 code, ext_int_handler_t handler)
184{ 194{
185 struct ext_int_info *p, *q; 195 struct ext_int_info *p;
186 int index; 196 unsigned long flags;
197 int index = ext_hash(code);
187 198
188 index = ext_hash(code); 199 spin_lock_irqsave(&ext_int_hash_lock, flags);
189 q = NULL; 200 list_for_each_entry_rcu(p, &ext_int_hash[index], entry)
190 p = ext_int_hash[index]; 201 if (p->code == code && p->handler == handler) {
191 while (p) { 202 list_del_rcu(&p->entry);
192 if (p->code == code && p->handler == handler) 203 call_rcu(&p->rcu, ext_int_hash_update);
193 break; 204 }
194 q = p; 205 spin_unlock_irqrestore(&ext_int_hash_lock, flags);
195 p = p->next;
196 }
197 if (!p)
198 return -ENOENT;
199 if (q)
200 q->next = p->next;
201 else
202 ext_int_hash[index] = p->next;
203 kfree(p);
204 return 0; 206 return 0;
205} 207}
206EXPORT_SYMBOL(unregister_external_interrupt); 208EXPORT_SYMBOL(unregister_external_interrupt);
@@ -224,15 +226,22 @@ void __irq_entry do_extint(struct pt_regs *regs, unsigned int ext_int_code,
224 kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; 226 kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++;
225 if (code != 0x1004) 227 if (code != 0x1004)
226 __get_cpu_var(s390_idle).nohz_delay = 1; 228 __get_cpu_var(s390_idle).nohz_delay = 1;
229
227 index = ext_hash(code); 230 index = ext_hash(code);
228 for (p = ext_int_hash[index]; p; p = p->next) { 231 rcu_read_lock();
232 list_for_each_entry_rcu(p, &ext_int_hash[index], entry)
229 if (likely(p->code == code)) 233 if (likely(p->code == code))
230 p->handler(ext_int_code, param32, param64); 234 p->handler(ext_int_code, param32, param64);
231 } 235 rcu_read_unlock();
232 irq_exit(); 236 irq_exit();
233 set_irq_regs(old_regs); 237 set_irq_regs(old_regs);
234} 238}
235 239
240void __init init_IRQ(void)
241{
242 init_external_interrupts();
243}
244
236static DEFINE_SPINLOCK(sc_irq_lock); 245static DEFINE_SPINLOCK(sc_irq_lock);
237static int sc_irq_refcount; 246static int sc_irq_refcount;
238 247
diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S
index 1e6a55795628..7e2c38ba1373 100644
--- a/arch/s390/kernel/mcount.S
+++ b/arch/s390/kernel/mcount.S
@@ -5,21 +5,19 @@
5 * 5 *
6 */ 6 */
7 7
8#include <linux/linkage.h>
8#include <asm/asm-offsets.h> 9#include <asm/asm-offsets.h>
9 10
10 .section .kprobes.text, "ax" 11 .section .kprobes.text, "ax"
11 12
12 .globl ftrace_stub 13ENTRY(ftrace_stub)
13ftrace_stub:
14 br %r14 14 br %r14
15 15
16 .globl _mcount 16ENTRY(_mcount)
17_mcount:
18#ifdef CONFIG_DYNAMIC_FTRACE 17#ifdef CONFIG_DYNAMIC_FTRACE
19 br %r14 18 br %r14
20 19
21 .globl ftrace_caller 20ENTRY(ftrace_caller)
22ftrace_caller:
23#endif 21#endif
24 stm %r2,%r5,16(%r15) 22 stm %r2,%r5,16(%r15)
25 bras %r1,2f 23 bras %r1,2f
@@ -41,8 +39,7 @@ ftrace_caller:
41#ifdef CONFIG_FUNCTION_GRAPH_TRACER 39#ifdef CONFIG_FUNCTION_GRAPH_TRACER
42 l %r2,100(%r15) 40 l %r2,100(%r15)
43 l %r3,152(%r15) 41 l %r3,152(%r15)
44 .globl ftrace_graph_caller 42ENTRY(ftrace_graph_caller)
45ftrace_graph_caller:
46# The bras instruction gets runtime patched to call prepare_ftrace_return. 43# The bras instruction gets runtime patched to call prepare_ftrace_return.
47# See ftrace_enable_ftrace_graph_caller. The patched instruction is: 44# See ftrace_enable_ftrace_graph_caller. The patched instruction is:
48# bras %r14,prepare_ftrace_return 45# bras %r14,prepare_ftrace_return
@@ -56,8 +53,7 @@ ftrace_graph_caller:
56 53
57#ifdef CONFIG_FUNCTION_GRAPH_TRACER 54#ifdef CONFIG_FUNCTION_GRAPH_TRACER
58 55
59 .globl return_to_handler 56ENTRY(return_to_handler)
60return_to_handler:
61 stm %r2,%r5,16(%r15) 57 stm %r2,%r5,16(%r15)
62 st %r14,56(%r15) 58 st %r14,56(%r15)
63 lr %r0,%r15 59 lr %r0,%r15
diff --git a/arch/s390/kernel/mcount64.S b/arch/s390/kernel/mcount64.S
index e73667286ac0..f70cadec68fc 100644
--- a/arch/s390/kernel/mcount64.S
+++ b/arch/s390/kernel/mcount64.S
@@ -5,21 +5,19 @@
5 * 5 *
6 */ 6 */
7 7
8#include <linux/linkage.h>
8#include <asm/asm-offsets.h> 9#include <asm/asm-offsets.h>
9 10
10 .section .kprobes.text, "ax" 11 .section .kprobes.text, "ax"
11 12
12 .globl ftrace_stub 13ENTRY(ftrace_stub)
13ftrace_stub:
14 br %r14 14 br %r14
15 15
16 .globl _mcount 16ENTRY(_mcount)
17_mcount:
18#ifdef CONFIG_DYNAMIC_FTRACE 17#ifdef CONFIG_DYNAMIC_FTRACE
19 br %r14 18 br %r14
20 19
21 .globl ftrace_caller 20ENTRY(ftrace_caller)
22ftrace_caller:
23#endif 21#endif
24 larl %r1,function_trace_stop 22 larl %r1,function_trace_stop
25 icm %r1,0xf,0(%r1) 23 icm %r1,0xf,0(%r1)
@@ -37,8 +35,7 @@ ftrace_caller:
37#ifdef CONFIG_FUNCTION_GRAPH_TRACER 35#ifdef CONFIG_FUNCTION_GRAPH_TRACER
38 lg %r2,168(%r15) 36 lg %r2,168(%r15)
39 lg %r3,272(%r15) 37 lg %r3,272(%r15)
40 .globl ftrace_graph_caller 38ENTRY(ftrace_graph_caller)
41ftrace_graph_caller:
42# The bras instruction gets runtime patched to call prepare_ftrace_return. 39# The bras instruction gets runtime patched to call prepare_ftrace_return.
43# See ftrace_enable_ftrace_graph_caller. The patched instruction is: 40# See ftrace_enable_ftrace_graph_caller. The patched instruction is:
44# bras %r14,prepare_ftrace_return 41# bras %r14,prepare_ftrace_return
@@ -52,8 +49,7 @@ ftrace_graph_caller:
52 49
53#ifdef CONFIG_FUNCTION_GRAPH_TRACER 50#ifdef CONFIG_FUNCTION_GRAPH_TRACER
54 51
55 .globl return_to_handler 52ENTRY(return_to_handler)
56return_to_handler:
57 stmg %r2,%r5,32(%r15) 53 stmg %r2,%r5,32(%r15)
58 lgr %r1,%r15 54 lgr %r1,%r15
59 aghi %r15,-160 55 aghi %r15,-160
diff --git a/arch/s390/kernel/reipl.S b/arch/s390/kernel/reipl.S
index cb899d9f8505..303d961c3bb5 100644
--- a/arch/s390/kernel/reipl.S
+++ b/arch/s390/kernel/reipl.S
@@ -6,14 +6,15 @@
6 * Author(s): Holger Smolinski (Holger.Smolinski@de.ibm.com) 6 * Author(s): Holger Smolinski (Holger.Smolinski@de.ibm.com)
7 */ 7 */
8 8
9#include <linux/linkage.h>
9#include <asm/asm-offsets.h> 10#include <asm/asm-offsets.h>
10 11
11# 12#
12# do_reipl_asm 13# do_reipl_asm
13# Parameter: r2 = schid of reipl device 14# Parameter: r2 = schid of reipl device
14# 15#
15 .globl do_reipl_asm 16ENTRY(do_reipl_asm)
16do_reipl_asm: basr %r13,0 17 basr %r13,0
17.Lpg0: lpsw .Lnewpsw-.Lpg0(%r13) 18.Lpg0: lpsw .Lnewpsw-.Lpg0(%r13)
18.Lpg1: # do store status of all registers 19.Lpg1: # do store status of all registers
19 20
diff --git a/arch/s390/kernel/reipl64.S b/arch/s390/kernel/reipl64.S
index 9eabbc90795d..78eb7cfbd3d1 100644
--- a/arch/s390/kernel/reipl64.S
+++ b/arch/s390/kernel/reipl64.S
@@ -4,6 +4,7 @@
4 * Denis Joseph Barrow, 4 * Denis Joseph Barrow,
5 */ 5 */
6 6
7#include <linux/linkage.h>
7#include <asm/asm-offsets.h> 8#include <asm/asm-offsets.h>
8 9
9# 10#
@@ -11,8 +12,8 @@
11# Parameter: r2 = schid of reipl device 12# Parameter: r2 = schid of reipl device
12# 13#
13 14
14 .globl do_reipl_asm 15ENTRY(do_reipl_asm)
15do_reipl_asm: basr %r13,0 16 basr %r13,0
16.Lpg0: lpswe .Lnewpsw-.Lpg0(%r13) 17.Lpg0: lpswe .Lnewpsw-.Lpg0(%r13)
17.Lpg1: # do store status of all registers 18.Lpg1: # do store status of all registers
18 19
diff --git a/arch/s390/kernel/relocate_kernel.S b/arch/s390/kernel/relocate_kernel.S
index 3b456b80bcee..c91d70aede91 100644
--- a/arch/s390/kernel/relocate_kernel.S
+++ b/arch/s390/kernel/relocate_kernel.S
@@ -8,6 +8,8 @@
8 * 8 *
9 */ 9 */
10 10
11#include <linux/linkage.h>
12
11/* 13/*
12 * moves the new kernel to its destination... 14 * moves the new kernel to its destination...
13 * %r2 = pointer to first kimage_entry_t 15 * %r2 = pointer to first kimage_entry_t
@@ -22,8 +24,7 @@
22 */ 24 */
23 25
24 .text 26 .text
25 .globl relocate_kernel 27ENTRY(relocate_kernel)
26 relocate_kernel:
27 basr %r13,0 # base address 28 basr %r13,0 # base address
28 .base: 29 .base:
29 stnsm sys_msk-.base(%r13),0xfb # disable DAT 30 stnsm sys_msk-.base(%r13),0xfb # disable DAT
@@ -112,6 +113,7 @@
112 .byte 0 113 .byte 0
113 .align 8 114 .align 8
114 relocate_kernel_end: 115 relocate_kernel_end:
116 .align 8
115 .globl relocate_kernel_len 117 .globl relocate_kernel_len
116 relocate_kernel_len: 118 relocate_kernel_len:
117 .quad relocate_kernel_end - relocate_kernel 119 .quad relocate_kernel_end - relocate_kernel
diff --git a/arch/s390/kernel/relocate_kernel64.S b/arch/s390/kernel/relocate_kernel64.S
index 1f9ea2067b59..7c3ce589a7f0 100644
--- a/arch/s390/kernel/relocate_kernel64.S
+++ b/arch/s390/kernel/relocate_kernel64.S
@@ -8,6 +8,8 @@
8 * 8 *
9 */ 9 */
10 10
11#include <linux/linkage.h>
12
11/* 13/*
12 * moves the new kernel to its destination... 14 * moves the new kernel to its destination...
13 * %r2 = pointer to first kimage_entry_t 15 * %r2 = pointer to first kimage_entry_t
@@ -23,8 +25,7 @@
23 */ 25 */
24 26
25 .text 27 .text
26 .globl relocate_kernel 28ENTRY(relocate_kernel)
27 relocate_kernel:
28 basr %r13,0 # base address 29 basr %r13,0 # base address
29 .base: 30 .base:
30 stnsm sys_msk-.base(%r13),0xfb # disable DAT 31 stnsm sys_msk-.base(%r13),0xfb # disable DAT
@@ -115,6 +116,7 @@
115 .byte 0 116 .byte 0
116 .align 8 117 .align 8
117 relocate_kernel_end: 118 relocate_kernel_end:
119 .align 8
118 .globl relocate_kernel_len 120 .globl relocate_kernel_len
119 relocate_kernel_len: 121 relocate_kernel_len:
120 .quad relocate_kernel_end - relocate_kernel 122 .quad relocate_kernel_end - relocate_kernel
diff --git a/arch/s390/kernel/s390_ksyms.c b/arch/s390/kernel/s390_ksyms.c
index 656fcbb9bd83..57b536649b00 100644
--- a/arch/s390/kernel/s390_ksyms.c
+++ b/arch/s390/kernel/s390_ksyms.c
@@ -1,6 +1,10 @@
1#include <linux/module.h> 1#include <linux/module.h>
2#include <linux/kvm_host.h>
2#include <asm/ftrace.h> 3#include <asm/ftrace.h>
3 4
4#ifdef CONFIG_FUNCTION_TRACER 5#ifdef CONFIG_FUNCTION_TRACER
5EXPORT_SYMBOL(_mcount); 6EXPORT_SYMBOL(_mcount);
6#endif 7#endif
8#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
9EXPORT_SYMBOL(sie64a);
10#endif
diff --git a/arch/s390/kernel/sclp.S b/arch/s390/kernel/sclp.S
index 2e82fdd89320..95792d846bb6 100644
--- a/arch/s390/kernel/sclp.S
+++ b/arch/s390/kernel/sclp.S
@@ -8,6 +8,8 @@
8 * 8 *
9 */ 9 */
10 10
11#include <linux/linkage.h>
12
11LC_EXT_NEW_PSW = 0x58 # addr of ext int handler 13LC_EXT_NEW_PSW = 0x58 # addr of ext int handler
12LC_EXT_NEW_PSW_64 = 0x1b0 # addr of ext int handler 64 bit 14LC_EXT_NEW_PSW_64 = 0x1b0 # addr of ext int handler 64 bit
13LC_EXT_INT_PARAM = 0x80 # addr of ext int parameter 15LC_EXT_INT_PARAM = 0x80 # addr of ext int parameter
@@ -260,8 +262,7 @@ _sclp_print:
260# R2 = 0 on success, 1 on failure 262# R2 = 0 on success, 1 on failure
261# 263#
262 264
263 .globl _sclp_print_early 265ENTRY(_sclp_print_early)
264_sclp_print_early:
265 stm %r6,%r15,24(%r15) # save registers 266 stm %r6,%r15,24(%r15) # save registers
266 ahi %r15,-96 # create stack frame 267 ahi %r15,-96 # create stack frame
267#ifdef CONFIG_64BIT 268#ifdef CONFIG_64BIT
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 1d55c95f617c..a6d85c0a7f20 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -654,7 +654,8 @@ int __cpu_disable(void)
654 /* disable all external interrupts */ 654 /* disable all external interrupts */
655 cr_parms.orvals[0] = 0; 655 cr_parms.orvals[0] = 0;
656 cr_parms.andvals[0] = ~(1 << 15 | 1 << 14 | 1 << 13 | 1 << 11 | 656 cr_parms.andvals[0] = ~(1 << 15 | 1 << 14 | 1 << 13 | 1 << 11 |
657 1 << 10 | 1 << 9 | 1 << 6 | 1 << 4); 657 1 << 10 | 1 << 9 | 1 << 6 | 1 << 5 |
658 1 << 4);
658 /* disable all I/O interrupts */ 659 /* disable all I/O interrupts */
659 cr_parms.orvals[6] = 0; 660 cr_parms.orvals[6] = 0;
660 cr_parms.andvals[6] = ~(1 << 31 | 1 << 30 | 1 << 29 | 1 << 28 | 661 cr_parms.andvals[6] = ~(1 << 31 | 1 << 30 | 1 << 29 | 1 << 28 |
diff --git a/arch/s390/kernel/switch_cpu.S b/arch/s390/kernel/switch_cpu.S
index 20530dd2eab1..bfe070bc7659 100644
--- a/arch/s390/kernel/switch_cpu.S
+++ b/arch/s390/kernel/switch_cpu.S
@@ -5,6 +5,7 @@
5 * 5 *
6 */ 6 */
7 7
8#include <linux/linkage.h>
8#include <asm/asm-offsets.h> 9#include <asm/asm-offsets.h>
9#include <asm/ptrace.h> 10#include <asm/ptrace.h>
10 11
@@ -16,9 +17,7 @@
16# %r6 - destination cpu 17# %r6 - destination cpu
17 18
18 .section .text 19 .section .text
19 .align 4 20ENTRY(smp_switch_to_cpu)
20 .globl smp_switch_to_cpu
21smp_switch_to_cpu:
22 stm %r6,%r15,__SF_GPRS(%r15) 21 stm %r6,%r15,__SF_GPRS(%r15)
23 lr %r1,%r15 22 lr %r1,%r15
24 ahi %r15,-STACK_FRAME_OVERHEAD 23 ahi %r15,-STACK_FRAME_OVERHEAD
@@ -33,8 +32,7 @@ smp_switch_to_cpu:
33 brc 2,2b /* busy, try again */ 32 brc 2,2b /* busy, try again */
343: j 3b 333: j 3b
35 34
36 .globl smp_restart_cpu 35ENTRY(smp_restart_cpu)
37smp_restart_cpu:
38 basr %r13,0 36 basr %r13,0
390: la %r1,.gprregs_addr-0b(%r13) 370: la %r1,.gprregs_addr-0b(%r13)
40 l %r1,0(%r1) 38 l %r1,0(%r1)
diff --git a/arch/s390/kernel/switch_cpu64.S b/arch/s390/kernel/switch_cpu64.S
index 5be3f43898f9..fcc42d799e41 100644
--- a/arch/s390/kernel/switch_cpu64.S
+++ b/arch/s390/kernel/switch_cpu64.S
@@ -5,6 +5,7 @@
5 * 5 *
6 */ 6 */
7 7
8#include <linux/linkage.h>
8#include <asm/asm-offsets.h> 9#include <asm/asm-offsets.h>
9#include <asm/ptrace.h> 10#include <asm/ptrace.h>
10 11
@@ -16,9 +17,7 @@
16# %r6 - destination cpu 17# %r6 - destination cpu
17 18
18 .section .text 19 .section .text
19 .align 4 20ENTRY(smp_switch_to_cpu)
20 .globl smp_switch_to_cpu
21smp_switch_to_cpu:
22 stmg %r6,%r15,__SF_GPRS(%r15) 21 stmg %r6,%r15,__SF_GPRS(%r15)
23 lgr %r1,%r15 22 lgr %r1,%r15
24 aghi %r15,-STACK_FRAME_OVERHEAD 23 aghi %r15,-STACK_FRAME_OVERHEAD
@@ -31,8 +30,7 @@ smp_switch_to_cpu:
31 brc 2,2b /* busy, try again */ 30 brc 2,2b /* busy, try again */
323: j 3b 313: j 3b
33 32
34 .globl smp_restart_cpu 33ENTRY(smp_restart_cpu)
35smp_restart_cpu:
36 larl %r1,.gprregs 34 larl %r1,.gprregs
37 lmg %r0,%r15,0(%r1) 35 lmg %r0,%r15,0(%r1)
381: sigp %r0,%r5,__SIGP_SENSE /* Wait for calling CPU */ 361: sigp %r0,%r5,__SIGP_SENSE /* Wait for calling CPU */
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S
index 1f066e46e83e..51bcdb50a230 100644
--- a/arch/s390/kernel/swsusp_asm64.S
+++ b/arch/s390/kernel/swsusp_asm64.S
@@ -7,6 +7,7 @@
7 * Michael Holzheu <holzheu@linux.vnet.ibm.com> 7 * Michael Holzheu <holzheu@linux.vnet.ibm.com>
8 */ 8 */
9 9
10#include <linux/linkage.h>
10#include <asm/page.h> 11#include <asm/page.h>
11#include <asm/ptrace.h> 12#include <asm/ptrace.h>
12#include <asm/thread_info.h> 13#include <asm/thread_info.h>
@@ -22,9 +23,7 @@
22 * This function runs with disabled interrupts. 23 * This function runs with disabled interrupts.
23 */ 24 */
24 .section .text 25 .section .text
25 .align 4 26ENTRY(swsusp_arch_suspend)
26 .globl swsusp_arch_suspend
27swsusp_arch_suspend:
28 stmg %r6,%r15,__SF_GPRS(%r15) 27 stmg %r6,%r15,__SF_GPRS(%r15)
29 lgr %r1,%r15 28 lgr %r1,%r15
30 aghi %r15,-STACK_FRAME_OVERHEAD 29 aghi %r15,-STACK_FRAME_OVERHEAD
@@ -112,8 +111,7 @@ swsusp_arch_suspend:
112 * Then we return to the function that called swsusp_arch_suspend(). 111 * Then we return to the function that called swsusp_arch_suspend().
113 * swsusp_arch_resume() runs with disabled interrupts. 112 * swsusp_arch_resume() runs with disabled interrupts.
114 */ 113 */
115 .globl swsusp_arch_resume 114ENTRY(swsusp_arch_resume)
116swsusp_arch_resume:
117 stmg %r6,%r15,__SF_GPRS(%r15) 115 stmg %r6,%r15,__SF_GPRS(%r15)
118 lgr %r1,%r15 116 lgr %r1,%r15
119 aghi %r15,-STACK_FRAME_OVERHEAD 117 aghi %r15,-STACK_FRAME_OVERHEAD
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index a63d34c3611e..e9372c77cced 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -18,7 +18,7 @@
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/string.h> 19#include <linux/string.h>
20#include <linux/errno.h> 20#include <linux/errno.h>
21#include <linux/tracehook.h> 21#include <linux/ptrace.h>
22#include <linux/timer.h> 22#include <linux/timer.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/smp.h> 24#include <linux/smp.h>
@@ -43,14 +43,10 @@
43#include <asm/debug.h> 43#include <asm/debug.h>
44#include "entry.h" 44#include "entry.h"
45 45
46pgm_check_handler_t *pgm_check_table[128]; 46void (*pgm_check_table[128])(struct pt_regs *, long, unsigned long);
47 47
48int show_unhandled_signals; 48int show_unhandled_signals;
49 49
50extern pgm_check_handler_t do_protection_exception;
51extern pgm_check_handler_t do_dat_exception;
52extern pgm_check_handler_t do_asce_exception;
53
54#define stack_pointer ({ void **sp; asm("la %0,0(15)" : "=&d" (sp)); sp; }) 50#define stack_pointer ({ void **sp; asm("la %0,0(15)" : "=&d" (sp)); sp; })
55 51
56#ifndef CONFIG_64BIT 52#ifndef CONFIG_64BIT
@@ -329,10 +325,17 @@ static inline void __user *get_psw_address(struct pt_regs *regs,
329 325
330void __kprobes do_per_trap(struct pt_regs *regs) 326void __kprobes do_per_trap(struct pt_regs *regs)
331{ 327{
328 siginfo_t info;
329
332 if (notify_die(DIE_SSTEP, "sstep", regs, 0, 0, SIGTRAP) == NOTIFY_STOP) 330 if (notify_die(DIE_SSTEP, "sstep", regs, 0, 0, SIGTRAP) == NOTIFY_STOP)
333 return; 331 return;
334 if (current->ptrace) 332 if (!current->ptrace)
335 force_sig(SIGTRAP, current); 333 return;
334 info.si_signo = SIGTRAP;
335 info.si_errno = 0;
336 info.si_code = TRAP_HWBKPT;
337 info.si_addr = (void *) current->thread.per_event.address;
338 force_sig_info(SIGTRAP, &info, current);
336} 339}
337 340
338static void default_trap_handler(struct pt_regs *regs, long pgm_int_code, 341static void default_trap_handler(struct pt_regs *regs, long pgm_int_code,
@@ -425,9 +428,13 @@ static void __kprobes illegal_op(struct pt_regs *regs, long pgm_int_code,
425 if (get_user(*((__u16 *) opcode), (__u16 __user *) location)) 428 if (get_user(*((__u16 *) opcode), (__u16 __user *) location))
426 return; 429 return;
427 if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) { 430 if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) {
428 if (current->ptrace) 431 if (current->ptrace) {
429 force_sig(SIGTRAP, current); 432 info.si_signo = SIGTRAP;
430 else 433 info.si_errno = 0;
434 info.si_code = TRAP_BRKPT;
435 info.si_addr = location;
436 force_sig_info(SIGTRAP, &info, current);
437 } else
431 signal = SIGILL; 438 signal = SIGILL;
432#ifdef CONFIG_MATHEMU 439#ifdef CONFIG_MATHEMU
433 } else if (opcode[0] == 0xb3) { 440 } else if (opcode[0] == 0xb3) {
@@ -489,9 +496,8 @@ static void __kprobes illegal_op(struct pt_regs *regs, long pgm_int_code,
489 496
490 497
491#ifdef CONFIG_MATHEMU 498#ifdef CONFIG_MATHEMU
492asmlinkage void specification_exception(struct pt_regs *regs, 499void specification_exception(struct pt_regs *regs, long pgm_int_code,
493 long pgm_int_code, 500 unsigned long trans_exc_code)
494 unsigned long trans_exc_code)
495{ 501{
496 __u8 opcode[6]; 502 __u8 opcode[6];
497 __u16 __user *location = NULL; 503 __u16 __user *location = NULL;
@@ -648,7 +654,7 @@ static void space_switch_exception(struct pt_regs *regs, long pgm_int_code,
648 do_trap(pgm_int_code, SIGILL, "space switch event", regs, &info); 654 do_trap(pgm_int_code, SIGILL, "space switch event", regs, &info);
649} 655}
650 656
651asmlinkage void __kprobes kernel_stack_overflow(struct pt_regs * regs) 657void __kprobes kernel_stack_overflow(struct pt_regs * regs)
652{ 658{
653 bust_spinlocks(1); 659 bust_spinlocks(1);
654 printk("Kernel stack overflow.\n"); 660 printk("Kernel stack overflow.\n");