summaryrefslogtreecommitdiffstats
path: root/target/linux/generic-2.6/patches-2.6.21/31-use_kbuild.h.patch
blob: 45c753b55b99c21ec7c3da46699cdf033f87226a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[MIPS] Fix computation of {PGD,PMD,PTE}_T_LOG2.

For the generation of asm-offset.h to work these need to be evaulatable
by gcc as a constant expression.  This issue did exist for a while but
didn't bite because they're only in asm-offset.h for debugging purposes.

--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -168,9 +168,9 @@ static inline void pte_clear(struct mm_s
 #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];