summaryrefslogtreecommitdiffstats
path: root/include/asm-mips/pgtable.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-27 09:42:43 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-27 09:42:43 -0700
commit88ede8209efd01b4a557ddd588875544954e170a (patch)
treefaa926f325a2c6c04a48793cf734502c8a078ea1 /include/asm-mips/pgtable.h
parent96665822dc43957d4337509e138017dc1cb960b1 (diff)
parent23dd6d351a2f8157602e854e3a147a04cf7279a1 (diff)
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (60 commits) [MIPS] Fulong doesn't need ISA DMA. [MIPS] IP27: intr_sconnect_level: don't disable interrupts. [MIPS] IP27: startup_bridge_irq: connect interrupt. [MIPS] IP27: shutdown_bridge_irq: don't free irq. [MIPS] Sort out handling of ISA-less PCI systems. [MIPS] Add __cmpdi2 [MIPS] HOTPLUG: Make register_pci_controller __devinit. [MIPS] PCI: Remove __devinit attribute from pcibios_fixup_bus. [MIPS] PCI: Remove __devinit attribute from pcibios_fixup_bus. [MIPS] Delete duplicate inclusion of <linux/delay.h>. [MIPS] Polish <asm/edac.h>. [MIPS] IP22: Export sgi_gfxaddr for use by the Newport console driver. [MIPS] Maintain si_code field properly for FP exceptions [MIPS] SMTC: Fix duplicate status dumps on NMI [MIPS] Unconditionally writeback and invalidate caches on kexec. [PATCH] rtc: Make rtc-rs5c348 driver hotplug-aware [MIPS] Fix gcc 3.3 warning. [MIPS] Fix invalid semicolon after if statement [MIPS] Update Cobalt defconfig [MIPS] Update workpad_defconfig ...
Diffstat (limited to 'include/asm-mips/pgtable.h')
-rw-r--r--include/asm-mips/pgtable.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index 2e2d70d13ff..d2ee2815674 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -168,11 +168,15 @@ static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *pt
#define set_pud(pudptr, pudval) do { *(pudptr) = (pudval); } while(0)
#endif
-#define PGD_T_LOG2 ffz(~sizeof(pgd_t))
-#define PMD_T_LOG2 ffz(~sizeof(pmd_t))
-#define PTE_T_LOG2 ffz(~sizeof(pte_t))
+#define PGD_T_LOG2 (__builtin_ffs(sizeof(pgd_t)) - 1)
+#define PMD_T_LOG2 (__builtin_ffs(sizeof(pmd_t)) - 1)
+#define PTE_T_LOG2 (__builtin_ffs(sizeof(pte_t)) - 1)
-extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
+/*
+ * We used to declare this array with size but gcc 3.3 and older are not able
+ * to find that this expression is a constant, so the size is dropped.
+ */
+extern pgd_t swapper_pg_dir[];
/*
* The following only work if pte_present() is true.