diff options
author | Bodo Stroesser <bstroesser@fujitsu-siemens.com> | 2006-01-18 17:42:43 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-18 19:20:19 -0800 |
commit | 2c332a251302873cf8301c2aad27737b6df70255 (patch) | |
tree | 8c641abe3d27bf44a7a55f4f6354dc5de7ccc260 | |
parent | cff65c4f0ea6662124bbb7bf3806e5df1c6d735d (diff) |
[PATCH] uml: change interface to boot_timer_handler
Current implementation of boot_timer_handler isn't usable for s390. So I
changed its name to do_boot_timer_handler, taking (struct sigcontext *)sc as
argument. do_boot_timer_handler is called from new boot_timer_handler() in
arch/um/os-Linux/signal.c, which uses the same mechanisms as other signal
handler to find out sigcontext pointer.
Signed-off-by: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/um/kernel/time_kern.c | 5 | ||||
-rw-r--r-- | arch/um/os-Linux/signal.c | 12 |
2 files changed, 13 insertions, 4 deletions
diff --git a/arch/um/kernel/time_kern.c b/arch/um/kernel/time_kern.c index 6712ffad024..6fa4e1b892b 100644 --- a/arch/um/kernel/time_kern.c +++ b/arch/um/kernel/time_kern.c @@ -84,12 +84,11 @@ void timer_irq(union uml_pt_regs *regs) } } -void boot_timer_handler(int sig) +void do_boot_timer_handler(struct sigcontext * sc) { struct pt_regs regs; - CHOOSE_MODE((void) - (UPT_SC(®s.regs) = (struct sigcontext *) (&sig + 1)), + CHOOSE_MODE((void) (UPT_SC(®s.regs) = sc), (void) (regs.regs.skas.is_user = 0)); do_timer(®s); } diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c index da474a797fb..884e4575194 100644 --- a/arch/um/os-Linux/signal.c +++ b/arch/um/os-Linux/signal.c @@ -12,7 +12,6 @@ #include <string.h> #include <sys/mman.h> #include "user_util.h" -#include "kern_util.h" #include "user.h" #include "signal_kern.h" #include "sysdep/sigcontext.h" @@ -49,6 +48,17 @@ void alarm_handler(ARCH_SIGHDLR_PARAM) switch_timers(1); } +extern void do_boot_timer_handler(struct sigcontext * sc); + +void boot_timer_handler(ARCH_SIGHDLR_PARAM) +{ + struct sigcontext *sc; + + ARCH_GET_SIGCONTEXT(sc, sig); + + do_boot_timer_handler(sc); +} + void set_sigstack(void *sig_stack, int size) { stack_t stack = ((stack_t) { .ss_flags = 0, |