aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel/trap.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/kernel/trap.c')
-rw-r--r--arch/um/kernel/trap.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index e3a3ab8f8635..ff405a446d15 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -128,7 +128,7 @@ static void bad_segv(struct faultinfo fi, unsigned long ip)
128 force_sig_info(SIGSEGV, &si, current); 128 force_sig_info(SIGSEGV, &si, current);
129} 129}
130 130
131static void segv_handler(int sig, struct uml_pt_regs *regs) 131void segv_handler(int sig, struct uml_pt_regs *regs)
132{ 132{
133 struct faultinfo * fi = UPT_FAULTINFO(regs); 133 struct faultinfo * fi = UPT_FAULTINFO(regs);
134 134
@@ -229,27 +229,18 @@ void relay_signal(int sig, struct uml_pt_regs *regs)
229 force_sig(sig, current); 229 force_sig(sig, current);
230} 230}
231 231
232static void bus_handler(int sig, struct uml_pt_regs *regs) 232void bus_handler(int sig, struct uml_pt_regs *regs)
233{ 233{
234 if (current->thread.fault_catcher != NULL) 234 if (current->thread.fault_catcher != NULL)
235 UML_LONGJMP(current->thread.fault_catcher, 1); 235 UML_LONGJMP(current->thread.fault_catcher, 1);
236 else relay_signal(sig, regs); 236 else relay_signal(sig, regs);
237} 237}
238 238
239static void winch(int sig, struct uml_pt_regs *regs) 239void winch(int sig, struct uml_pt_regs *regs)
240{ 240{
241 do_IRQ(WINCH_IRQ, regs); 241 do_IRQ(WINCH_IRQ, regs);
242} 242}
243 243
244const struct kern_handlers handlinfo_kern = {
245 .relay_signal = relay_signal,
246 .winch = winch,
247 .bus_handler = bus_handler,
248 .page_fault = segv_handler,
249 .sigio_handler = sigio_handler,
250 .timer_handler = timer_handler
251};
252
253void trap_init(void) 244void trap_init(void)
254{ 245{
255} 246}