[PATCH 2/8] ARC: add configuration option for MMU page size

Vineet Gupta <[email protected]>
Newsgroups gmane.comp.lib.uclibc.general
Message-ID <[email protected]>
From: Alexey Brodkin <[email protected]>

ARC CPU may have MMU page size of 4/8(default)/16k.
uClibc needs to have page size configured accodring to HW it will be run on.

Signed-off-by: Alexey Brodkin <[email protected]>
Signed-off-by: Vineet Gupta <[email protected]>
---
 extra/Configs/Config.arc                  | 17 +++++++++++++++++
 libc/sysdeps/linux/arc/bits/uClibc_page.h | 17 +++++++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/extra/Configs/Config.arc b/extra/Configs/Config.arc
index 40ff114cf5b5..dc32ba4fb2aa 100644
--- a/extra/Configs/Config.arc
+++ b/extra/Configs/Config.arc
@@ -21,3 +21,20 @@ config CONFIG_ARC_CPU_700
 	  ARCompact ISA based ARC CPU
 
 endchoice
+
+choice
+	prompt "MMU Page Size"
+	default CONFIG_ARC_PAGE_SIZE_8K
+
+config CONFIG_ARC_PAGE_SIZE_8K
+	bool "8KB"
+	help
+	  Choose between 4k, 8k (default) or 16k
+
+config CONFIG_ARC_PAGE_SIZE_16K
+	bool "16KB"
+
+config CONFIG_ARC_PAGE_SIZE_4K
+	bool "4KB"
+
+endchoice
diff --git a/libc/sysdeps/linux/arc/bits/uClibc_page.h b/libc/sysdeps/linux/arc/bits/uClibc_page.h
index 26cec54c961f..b05c57501375 100755
--- a/libc/sysdeps/linux/arc/bits/uClibc_page.h
+++ b/libc/sysdeps/linux/arc/bits/uClibc_page.h
@@ -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
-- 
1.9.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.