1 #include <asm/interrupt.h> 2 #include <asm/kprobes.h> 3 4 struct restart_table_entry { 5 unsigned long start; 6 unsigned long end; 7 unsigned long fixup; 8 }; 9 10 extern struct restart_table_entry __start___restart_table[]; 11 extern struct restart_table_entry __stop___restart_table[]; 12 13 /* Given an address, look for it in the kernel exception table */ 14 unsigned long search_kernel_restart_table(unsigned long addr) 15 { 16 struct restart_table_entry *rte = __start___restart_table; 17 18 while (rte < __stop___restart_table) { 19 unsigned long start = rte->start; 20 unsigned long end = rte->end; 21 unsigned long fixup = rte->fixup; 22 23 if (addr >= start && addr < end) 24 return fixup; 25 26 rte++; 27 } 28 return 0; 29 } 30 NOKPROBE_SYMBOL(search_kernel_restart_table); 31