patch-2.4.4 linux/arch/ia64/mm/fault.c
Next file: linux/arch/ia64/mm/init.c
Previous file: linux/arch/ia64/mm/extable.c
Back to the patch index
Back to the overall index
- Lines: 30
- Date:
Thu Apr 5 12:51:47 2001
- Orig file:
v2.4.3/linux/arch/ia64/mm/fault.c
- Orig date:
Mon Mar 19 12:35:10 2001
diff -u --recursive --new-file v2.4.3/linux/arch/ia64/mm/fault.c linux/arch/ia64/mm/fault.c
@@ -47,7 +47,7 @@
ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *regs)
{
struct mm_struct *mm = current->mm;
- const struct exception_table_entry *fix;
+ struct exception_fixup fix;
struct vm_area_struct *vma, *prev_vma;
struct siginfo si;
int signal = SIGSEGV;
@@ -163,14 +163,13 @@
return;
}
+#ifdef GAS_HAS_LOCAL_TAGS
+ fix = search_exception_table(regs->cr_iip + ia64_psr(regs)->ri);
+#else
fix = search_exception_table(regs->cr_iip);
- if (fix) {
- regs->r8 = -EFAULT;
- if (fix->skip & 1) {
- regs->r9 = 0;
- }
- regs->cr_iip += ((long) fix->skip) & ~15;
- regs->cr_ipsr &= ~IA64_PSR_RI; /* clear exception slot number */
+#endif
+ if (fix.cont) {
+ handle_exception(regs, fix);
return;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)