]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/cris/arch-v10/mm/fault.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild...
[linux-2.6-omap-h63xx.git] / arch / cris / arch-v10 / mm / fault.c
index fe2615022b9741ca2473300f2fa1d66ac494ec87..087a2096f221f1203d4737c63123fb162952de38 100644 (file)
@@ -4,16 +4,16 @@
  *  Low level bus fault handler
  *
  *
- *  Copyright (C) 2000, 2001  Axis Communications AB
+ *  Copyright (C) 2000-2007  Axis Communications AB
+ *
+ *  Authors:  Bjorn Wesen
  *
- *  Authors:  Bjorn Wesen 
- * 
  */
 
 #include <linux/mm.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
-#include <asm/arch/svinto.h>
+#include <arch/svinto.h>
 #include <asm/mmu_context.h>
 
 /* debug of low-level TLB reload */
@@ -60,7 +60,7 @@ handle_mmu_bus_fault(struct pt_regs *regs)
 #ifdef DEBUG
        page_id = IO_EXTRACT(R_MMU_CAUSE,  page_id,   cause);
        acc     = IO_EXTRACT(R_MMU_CAUSE,  acc_excp,  cause);
-       inv     = IO_EXTRACT(R_MMU_CAUSE,  inv_excp,  cause);  
+       inv     = IO_EXTRACT(R_MMU_CAUSE,  inv_excp,  cause);
        index   = IO_EXTRACT(R_TLB_SELECT, index,     select);
 #endif
        miss    = IO_EXTRACT(R_MMU_CAUSE,  miss_excp, cause);
@@ -84,12 +84,13 @@ handle_mmu_bus_fault(struct pt_regs *regs)
        local_irq_disable();
        pmd = (pmd_t *)(pgd + pgd_index(address));
        if (pmd_none(*pmd))
-               return;
+               goto exit;
        pte = *pte_offset_kernel(pmd, address);
        if (!pte_present(pte))
-               return;
+               goto exit;
        *R_TLB_SELECT = select;
        *R_TLB_HI = cause;
        *R_TLB_LO = pte_val(pte);
+exit:
        local_irq_restore(flags);
 }