aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel/trap.c
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2007-10-16 04:27:05 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 12:43:05 -0400
commitfab95c55e3b94e219044dc7a558632d08c198771 (patch)
tree2ce8bf6eb52e66ee69a0b03cf9ad60310279524e /arch/um/kernel/trap.c
parent0a7675aa204ac2470bb06f562557978b03914a71 (diff)
uml: get rid of do_longjmp
do_longjmp used to be needed when UML didn't have its own implementation of setjmp and longjmp. They came from libc, and couldn't be called directly from kernel code, as the libc jmp_buf couldn't be imported there. do_longjmp was a userspace function which served to provide longjmp access to kernel code. This is gone, and a number of void * pointers can now be jmp_buf *. Signed-off-by: Jeff Dike <jdike@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/um/kernel/trap.c')
-rw-r--r--arch/um/kernel/trap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index eac63fb6183c..bd060551e619 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -149,7 +149,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user,
149 struct uml_pt_regs *regs) 149 struct uml_pt_regs *regs)
150{ 150{
151 struct siginfo si; 151 struct siginfo si;
152 void *catcher; 152 jmp_buf *catcher;
153 int err; 153 int err;
154 int is_write = FAULT_WRITE(fi); 154 int is_write = FAULT_WRITE(fi);
155 unsigned long address = FAULT_ADDRESS(fi); 155 unsigned long address = FAULT_ADDRESS(fi);
@@ -181,7 +181,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user,
181 return 0; 181 return 0;
182 else if (catcher != NULL) { 182 else if (catcher != NULL) {
183 current->thread.fault_addr = (void *) address; 183 current->thread.fault_addr = (void *) address;
184 do_longjmp(catcher, 1); 184 UML_LONGJMP(catcher, 1);
185 } 185 }
186 else if (current->thread.fault_addr != NULL) 186 else if (current->thread.fault_addr != NULL)
187 panic("fault_addr set but no fault catcher"); 187 panic("fault_addr set but no fault catcher");
@@ -233,7 +233,7 @@ void relay_signal(int sig, struct uml_pt_regs *regs)
233static void bus_handler(int sig, struct uml_pt_regs *regs) 233static void bus_handler(int sig, struct uml_pt_regs *regs)
234{ 234{
235 if (current->thread.fault_catcher != NULL) 235 if (current->thread.fault_catcher != NULL)
236 do_longjmp(current->thread.fault_catcher, 1); 236 UML_LONGJMP(current->thread.fault_catcher, 1);
237 else relay_signal(sig, regs); 237 else relay_signal(sig, regs);
238} 238}
239 239