ARC: mm: support 4 levels of page tables
[linux-2.6-microblaze.git] / arch / arc / mm / tlbex.S
index 5f57eba..e054780 100644 (file)
@@ -173,6 +173,15 @@ ex_saved_reg1:
        tst     r3, r3
        bz      do_slow_path_pf         ; if no Page Table, do page fault
 
+#if CONFIG_PGTABLE_LEVELS > 3
+       lsr     r0, r2, PUD_SHIFT       ; Bits for indexing into PUD
+       and     r0, r0, (PTRS_PER_PUD - 1)
+       ld.as   r1, [r3, r0]            ; PMD entry
+       tst     r1, r1
+       bz      do_slow_path_pf
+       mov     r3, r1
+#endif
+
 #if CONFIG_PGTABLE_LEVELS > 2
        lsr     r0, r2, PMD_SHIFT       ; Bits for indexing into PMD
        and     r0, r0, (PTRS_PER_PMD - 1)