|
@@ -9,16 +9,25 @@
|
|
|
|
|
|
/*
|
|
|
* ARC700/linux supports 4k, 8k, 16k pages (build time).
|
|
|
- * We rely on the kernel exported header (aka uapi headers since 3.8)
|
|
|
- * for PAGE_SIZE and friends. This avoids hand-editing here when building
|
|
|
- * toolchain.
|
|
|
*
|
|
|
* Although uClibc determines page size dynamically, from kernel's auxv which
|
|
|
* ARC Linux does pass, still the generic code needs a fall back
|
|
|
* _dl_pagesize = auxvt[AT_PAGESZ].a_un.a_val ? : PAGE_SIZE
|
|
|
*
|
|
|
*/
|
|
|
-#include <asm/page.h>
|
|
|
+
|
|
|
+#include <features.h>
|
|
|
+
|
|
|
+#if defined(__CONFIG_ARC_PAGE_SIZE_16K__)
|
|
|
+#define PAGE_SHIFT 14
|
|
|
+#elif defined(__CONFIG_ARC_PAGE_SIZE_4K__)
|
|
|
+#define PAGE_SHIFT 12
|
|
|
+#else
|
|
|
+#define PAGE_SHIFT 13
|
|
|
+#endif
|
|
|
+
|
|
|
+#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
|
|
+#define PAGE_MASK (~(PAGE_SIZE-1))
|
|
|
|
|
|
/* TBD: fix this with runtime value for a PAGE_SIZE agnostic uClibc */
|
|
|
#define MMAP2_PAGE_SHIFT PAGE_SHIFT
|