diff -Naur linux-/arch/um/kernel/process.c linux+/arch/um/kernel/process.c --- linux-/arch/um/kernel/process.c 2003-09-14 19:17:37.000000000 +0100 +++ linux+/arch/um/kernel/process.c 2003-09-14 18:05:56.000000000 +0100 @@ -229,11 +229,11 @@ int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr) { - jmp_buf buf; + sigjmp_buf buf; int n; *jmp_ptr = &buf; - n = setjmp(buf); + n = sigsetjmp(buf,1); if(n != 0) return(n); (*fn)(arg); diff -Naur linux-/arch/um/kernel/skas/process.c linux+/arch/um/kernel/skas/process.c --- linux-/arch/um/kernel/skas/process.c 2003-09-14 19:17:44.000000000 +0100 +++ linux+/arch/um/kernel/skas/process.c 2003-09-14 18:05:56.000000000 +0100 @@ -184,12 +184,12 @@ void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr, void (*handler)(int)) { - jmp_buf switch_buf, fork_buf; + sigjmp_buf switch_buf, fork_buf; *switch_buf_ptr = &switch_buf; *fork_buf_ptr = &fork_buf; - if(setjmp(fork_buf) == 0) + if(sigsetjmp(fork_buf,1) == 0) new_thread_proc(stack, handler); remove_sigstack(); @@ -197,12 +197,12 @@ void thread_wait(void *sw, void *fb) { - jmp_buf buf, **switch_buf = sw, *fork_buf; + sigjmp_buf buf, **switch_buf = sw, *fork_buf; *switch_buf = &buf; fork_buf = fb; - if(setjmp(buf) == 0) - longjmp(*fork_buf, 1); + if(sigsetjmp(buf,1) == 0) + siglongjmp(*fork_buf, 1); } static int move_registers(int int_op, int fp_op, union uml_pt_regs *regs, @@ -257,34 +257,34 @@ void switch_threads(void *me, void *next) { - jmp_buf my_buf, **me_ptr = me, *next_buf = next; + sigjmp_buf my_buf, **me_ptr = me, *next_buf = next; *me_ptr = &my_buf; - if(setjmp(my_buf) == 0) - longjmp(*next_buf, 1); + if(sigsetjmp(my_buf,1) == 0) + siglongjmp(*next_buf, 1); } -static jmp_buf initial_jmpbuf; +static sigjmp_buf initial_jmpbuf; /* XXX Make these percpu */ static void (*cb_proc)(void *arg); static void *cb_arg; -static jmp_buf *cb_back; +static sigjmp_buf *cb_back; int start_idle_thread(void *stack, void *switch_buf_ptr, void **fork_buf_ptr) { - jmp_buf **switch_buf = switch_buf_ptr; + sigjmp_buf **switch_buf = switch_buf_ptr; int n; *fork_buf_ptr = &initial_jmpbuf; - n = setjmp(initial_jmpbuf); + n = sigsetjmp(initial_jmpbuf,1); if(n == 0) new_thread_proc((void *) stack, new_thread_handler); else if(n == 1) remove_sigstack(); else if(n == 2){ (*cb_proc)(cb_arg); - longjmp(*cb_back, 1); + siglongjmp(*cb_back, 1); } else if(n == 3){ kmalloc_ok = 0; @@ -294,7 +294,7 @@ kmalloc_ok = 0; return(1); } - longjmp(**switch_buf, 1); + siglongjmp(**switch_buf, 1); } void remove_sigstack(void) @@ -309,15 +309,15 @@ void initial_thread_cb_skas(void (*proc)(void *), void *arg) { - jmp_buf here; + sigjmp_buf here; cb_proc = proc; cb_arg = arg; cb_back = &here; block_signals(); - if(setjmp(here) == 0) - longjmp(initial_jmpbuf, 2); + if(sigsetjmp(here,1) == 0) + siglongjmp(initial_jmpbuf, 2); unblock_signals(); cb_proc = NULL; @@ -328,13 +328,13 @@ void halt_skas(void) { block_signals(); - longjmp(initial_jmpbuf, 3); + siglongjmp(initial_jmpbuf, 3); } void reboot_skas(void) { block_signals(); - longjmp(initial_jmpbuf, 4); + siglongjmp(initial_jmpbuf, 4); } int new_mm(int from) diff -Naur linux-/arch/um/kernel/trap_user.c linux+/arch/um/kernel/trap_user.c --- linux-/arch/um/kernel/trap_user.c 2003-09-14 19:18:10.000000000 +0100 +++ linux+/arch/um/kernel/trap_user.c 2003-09-14 18:05:56.000000000 +0100 @@ -123,9 +123,9 @@ void do_longjmp(void *b, int val) { - jmp_buf *buf = b; + sigjmp_buf *buf = b; - longjmp(*buf, val); + siglongjmp(*buf, val); } /* diff -Naur linux-/arch/um/kernel/tt/uaccess_user.c linux+/arch/um/kernel/tt/uaccess_user.c --- linux-/arch/um/kernel/tt/uaccess_user.c 2003-09-14 19:18:13.000000000 +0100 +++ linux+/arch/um/kernel/tt/uaccess_user.c 2003-09-14 18:05:56.000000000 +0100 @@ -72,10 +72,10 @@ struct tt_regs save = TASK_REGS(get_current())->tt; int ret; unsigned long *faddrp = (unsigned long *)fault_addr; - jmp_buf jbuf; + sigjmp_buf jbuf; *fault_catcher = &jbuf; - if(setjmp(jbuf) == 0){ + if(sigsetjmp(jbuf,1) == 0){ ret = strlen(str) + 1; } else { diff -Naur linux-/arch/um/kernel/uaccess_user.c linux+/arch/um/kernel/uaccess_user.c --- linux-/arch/um/kernel/uaccess_user.c 2003-07-27 18:05:56.000000000 +0100 +++ linux+/arch/um/kernel/uaccess_user.c 2003-09-14 18:04:00.000000000 +0100 @@ -18,9 +18,9 @@ { unsigned long *faddrp = (unsigned long *) fault_addr, ret; - jmp_buf jbuf; + sigjmp_buf jbuf; *fault_catcher = &jbuf; - if(setjmp(jbuf) == 0){ + if(sigsetjmp(jbuf,1) == 0){ (*op)(to, from, n); ret = 0; *faulted_out = 0;