summaryrefslogtreecommitdiffstats
path: root/include/asm-sh
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sh')
-rw-r--r--include/asm-sh/page.h15
-rw-r--r--include/asm-sh/pgtable.h7
2 files changed, 18 insertions, 4 deletions
diff --git a/include/asm-sh/page.h b/include/asm-sh/page.h
index 867c07122..24a374d4b 100644
--- a/include/asm-sh/page.h
+++ b/include/asm-sh/page.h
@@ -76,6 +76,21 @@ extern int console_loglevel;
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
+
+/* Pure 2^n version of get_order */
+extern __inline__ int get_order(unsigned long size)
+{
+ int order;
+
+ size = (size-1) >> (PAGE_SHIFT-1);
+ order = -1;
+ do {
+ size >>= 1;
+ order++;
+ } while (size);
+ return order;
+}
+
#endif
#endif /* __KERNEL__ */
diff --git a/include/asm-sh/pgtable.h b/include/asm-sh/pgtable.h
index cd6dc704a..9dbd7005c 100644
--- a/include/asm-sh/pgtable.h
+++ b/include/asm-sh/pgtable.h
@@ -250,10 +250,9 @@ extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
/* to find an entry in a page-table-directory. */
-#define __pgd_offset(address) \
- ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
-
-#define pgd_offset(mm, address) ((mm)->pgd+__pgd_offset(address))
+#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
+#define __pgd_offset(address) pgd_index(address)
+#define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address))
/* to find an entry in a kernel page-table-directory */
#define pgd_offset_k(address) pgd_offset(&init_mm, address)