diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-12-27 05:27:18 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-12-27 05:27:12 -0500 |
commit | aa33c8cbbae2eb98489a3a363099b362146a8f4c (patch) | |
tree | 315ac880b4a4af8f7c0c2822c2c5e5817033a5ab /arch/s390/kernel/entry.h | |
parent | 679e2ea73366cac81ede4104e6d3048cb806df2c (diff) |
[S390] cleanup trap handling
Move the program interruption code and the translation exception identifier
to the pt_regs structure as 'int_code' and 'int_parm_long' and make the
first level interrupt handler in entry[64].S store the two values. That
makes it possible to drop 'prot_addr' and 'trap_no' from the thread_struct
and to reduce the number of arguments to a lot of functions. Finally
un-inline do_trap. Overall this saves 5812 bytes in the .text section of
the 64 bit kernel.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/entry.h')
-rw-r--r-- | arch/s390/kernel/entry.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h index ef8fb1d6e8d7..bf538aaf407d 100644 --- a/arch/s390/kernel/entry.h +++ b/arch/s390/kernel/entry.h | |||
@@ -6,15 +6,15 @@ | |||
6 | #include <asm/ptrace.h> | 6 | #include <asm/ptrace.h> |
7 | 7 | ||
8 | 8 | ||
9 | extern void (*pgm_check_table[128])(struct pt_regs *, long, unsigned long); | 9 | extern void (*pgm_check_table[128])(struct pt_regs *); |
10 | extern void *restart_stack; | 10 | extern void *restart_stack; |
11 | 11 | ||
12 | asmlinkage long do_syscall_trace_enter(struct pt_regs *regs); | 12 | asmlinkage long do_syscall_trace_enter(struct pt_regs *regs); |
13 | asmlinkage void do_syscall_trace_exit(struct pt_regs *regs); | 13 | asmlinkage void do_syscall_trace_exit(struct pt_regs *regs); |
14 | 14 | ||
15 | void do_protection_exception(struct pt_regs *, long, unsigned long); | 15 | void do_protection_exception(struct pt_regs *regs); |
16 | void do_dat_exception(struct pt_regs *, long, unsigned long); | 16 | void do_dat_exception(struct pt_regs *regs); |
17 | void do_asce_exception(struct pt_regs *, long, unsigned long); | 17 | void do_asce_exception(struct pt_regs *regs); |
18 | 18 | ||
19 | void do_per_trap(struct pt_regs *regs); | 19 | void do_per_trap(struct pt_regs *regs); |
20 | void syscall_trace(struct pt_regs *regs, int entryexit); | 20 | void syscall_trace(struct pt_regs *regs, int entryexit); |
@@ -28,7 +28,7 @@ void do_extint(struct pt_regs *regs, unsigned int, unsigned int, unsigned long); | |||
28 | void do_restart(void); | 28 | void do_restart(void); |
29 | int __cpuinit start_secondary(void *cpuvoid); | 29 | int __cpuinit start_secondary(void *cpuvoid); |
30 | void __init startup_init(void); | 30 | void __init startup_init(void); |
31 | void die(const char * str, struct pt_regs * regs, long err); | 31 | void die(struct pt_regs *regs, const char *str); |
32 | 32 | ||
33 | void __init time_init(void); | 33 | void __init time_init(void); |
34 | 34 | ||