1 /* 2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 3 * Licensed under the GPL 4 */ 5 6 #include <arch.h> 7 #include <sysdep/ptrace.h> 8 9 /* These two are from asm-um/uaccess.h and linux/module.h, check them. */ 10 struct exception_table_entry 11 { 12 unsigned long insn; 13 unsigned long fixup; 14 }; 15 16 const struct exception_table_entry *search_exception_tables(unsigned long add); 17 18 /* Compare this to arch/i386/mm/extable.c:fixup_exception() */ 19 int arch_fixup(unsigned long address, struct uml_pt_regs *regs) 20 { 21 const struct exception_table_entry *fixup; 22 23 fixup = search_exception_tables(address); 24 if (fixup) { 25 UPT_IP(regs) = fixup->fixup; 26 return 1; 27 } 28 return 0; 29 } 30