Skip to contentSkip to conversation

move get_order() out of the page.h

RFC PATCH New Andrey Panin 1 participant 1 message Apr 29, 2002 Generic include/asm header files

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 move get_order() out of the page.h

Hi all,

currently (2.5.10) every arch specific asm-*/page.h file includes inline get_order() function. All of them (except IA64 one) are identical. Attached patch moves get_order() into separate include file and adds microoptimisation for get_order() calls with immediate argument.

Best regards.

Signature · 2 lines
Andrey Panin            | Embedded systems software engineer
[email protected]        | PGP key: wwwkeys.eu.pgp.net
include/asm-alpha/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-alpha/page.h linux/include/asm-alpha/page.h
@@ -67,19 +67,7 @@
 
 #define PAGE_BUG(page)	BUG()
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* !__ASSEMBLY__ */
 
include/asm-arm/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-arm/page.h linux/include/asm-arm/page.h
@@ -111,19 +111,7 @@
 
 #endif
 
-/* Pure 2^n version of get_order */
-static 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* !__ASSEMBLY__ */
 
include/asm-generic/get_order.h +53 -0

53 lines not on this page · raw message

include/asm-i386/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-i386/page.h linux/include/asm-i386/page.h
@@ -109,19 +109,7 @@
 	BUG(); \
 } while (0)
 
-/* Pure 2^n version of get_order */
-static __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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* __ASSEMBLY__ */
 
include/asm-ia64/page.h +3 -0
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-ia64/page.h linux/include/asm-ia64/page.h
@@ -110,6 +110,7 @@
 #define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
 #define PAGE_BUG(page) do { BUG(); } while (0)
 
+#define __HAVE_ARCH_GET_ORDER
 static __inline__ int
 get_order (unsigned long size)
 {
@@ -122,6 +123,8 @@
 		order = 0;
 	return order;
 }
+
+#include <asm-generic/get_order.h>
 
 # endif /* __KERNEL__ */
 #endif /* !__ASSEMBLY__ */
include/asm-m68k/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-m68k/page.h linux/include/asm-m68k/page.h
@@ -100,19 +100,7 @@
 /* to align the pointer to the (next) page boundary */
 #define PAGE_ALIGN(addr)	(((addr)+PAGE_SIZE-1)&PAGE_MASK)
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* !__ASSEMBLY__ */
 
include/asm-mips/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-mips/page.h linux/include/asm-mips/page.h
@@ -49,19 +49,7 @@
 #define __pgd(x)	((pgd_t) { (x) } )
 #define __pgprot(x)	((pgprot_t) { (x) } )
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* _LANGUAGE_ASSEMBLY */
 
include/asm-parisc/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-parisc/page.h linux/include/asm-parisc/page.h
@@ -33,19 +33,7 @@
 #define __pgd(x)	((pgd_t) { (x) } )
 #define __pgprot(x)	((pgprot_t) { (x) } )
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* !__ASSEMBLY__ */
 
include/asm-ppc/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-ppc/page.h linux/include/asm-ppc/page.h
@@ -142,19 +142,7 @@
 
 extern unsigned long get_zero_page_fast(void);
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* __ASSEMBLY__ */
 
include/asm-ppc64/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-ppc64/page.h linux/include/asm-ppc64/page.h
@@ -137,19 +137,7 @@
  */
 #define WANT_PAGE_VIRTUAL 1
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
 
include/asm-s390/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-s390/page.h linux/include/asm-s390/page.h
@@ -71,19 +71,7 @@
         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;
-}
+#include <asm-generic/get_order.h>
 
 /*
  * These are used to make use of C type-checking..
include/asm-s390x/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-s390x/page.h linux/include/asm-s390x/page.h
@@ -69,19 +69,7 @@
         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;
-}
+#include <asm-generic/get_order.h>
 
 /*
  * These are used to make use of C type-checking..
include/asm-sh/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-sh/page.h linux/include/asm-sh/page.h
@@ -102,19 +102,7 @@
 	BUG(); \
 } while (0)
 
-/* Pure 2^n version of get_order */
-static __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;
-}
+#include <asm-generic/get_order.h>
 
 #endif
 
include/asm-sparc/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-sparc/page.h linux/include/asm-sparc/page.h
@@ -150,19 +150,7 @@
 
 #define TASK_UNMAPPED_BASE	BTFIXUP_SETHI(sparc_unmapped_base)
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #else /* !(__ASSEMBLY__) */
 
include/asm-sparc64/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-sparc64/page.h linux/include/asm-sparc64/page.h
@@ -138,19 +138,7 @@
 
 extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS];
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* !(__ASSEMBLY__) */
 
include/asm-x86_64/page.h +1 -13
diff -urN -X /usr/share/dontdiff linux.vanilla/include/asm-x86_64/page.h linux/include/asm-x86_64/page.h
@@ -74,19 +74,7 @@
 #define PAGE_BUG(page) BUG()
 void out_of_line_bug(void);
 
-/* 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;
-}
+#include <asm-generic/get_order.h>
 
 #endif /* __ASSEMBLY__ */