ARC: allow selection of MMU page size
PATCH v2 1/1 ARC: allow selection of MMU page size
Modern ARC cores (those sporting MMU of version 3 and 4) allow selection of different page sizes (4, 8 or 16 kB) during ASIC design creation. And it's important to build a toolchain with page size setting that matches hardware.
Otherwise user-space applications will fail on execution due to unexpected data layout/alignment etc.
---
Changes compared to v1:
[1] Use upper-case in BR2_ARC_PAGE_SIZE_x
[2] Updated comments
arch/Config.in.arc | 37 +++++++++++++++++++++++++++++++++++++ package/uclibc/uclibc.mk | 8 ++++++++ 2 files changed, 45 insertions(+)
arch/Config.in.arc +37 -0
@@ -40,3 +40,40 @@ config BR2_GCC_TARGET_CPU default "arc700" if BR2_arc750d default "arc700" if BR2_arc770d default "archs" if BR2_archs38 + +choice + prompt "MMU Page Size" + default BR2_ARC_PAGE_SIZE_8K + help + MMU starting from version 3 (could be found in ARC 770) and now + version 4 (could be found in ARC HS38) allows selection of page + size during ASIC design creation. + + Following options are available for MMU v3 and v4: 4kB, 8kB and 16 kB. + + Default is 8 kB (that really matches the only page size in MMU v2). + It is important to build a toolchain with page size matching the + hardware configuration. Otherwise user-space applications will + fail at runtime. + +config BR2_ARC_PAGE_SIZE_4K + bool "4KB" + depends on BR2_arc770d || BR2_archs38 + +config BR2_ARC_PAGE_SIZE_8K + bool "8KB" + help + This is the one and only option available for MMUv2 and default + value for MMU v3 and v4. + +config BR2_ARC_PAGE_SIZE_16K + bool "16KB" + depends on BR2_arc770d || BR2_archs38 + +endchoice + +config BR2_ARC_PAGE_SIZE + string + default "4K" if BR2_ARC_PAGE_SIZE_4K + default "8K" if BR2_ARC_PAGE_SIZE_8K + default "16K" if BR2_ARC_PAGE_SIZE_16K
package/uclibc/uclibc.mk +8 -0
@@ -70,6 +70,13 @@ UCLIBC_ARC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_ARC_TYPE)) define UCLIBC_ARC_TYPE_CONFIG $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_TYPE),$(@D)/.config) endef + +UCLIBC_ARC_PAGE_SIZE = CONFIG_ARC_PAGE_SIZE_$(call qstrip,$(BR2_ARC_PAGE_SIZE)) +define UCLIBC_ARC_PAGE_SIZE_CONFIG + $(SED) '/CONFIG_ARC_PAGE_SIZE_*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_PAGE_SIZE),$(@D)/.config) +endef + endif # arc #
@@ -367,6 +374,7 @@ define UCLIBC_KCONFIG_FIXUP_CMDS $(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config) $(UCLIBC_MMU_CONFIG) $(UCLIBC_ARC_TYPE_CONFIG) + $(UCLIBC_ARC_PAGE_SIZE_CONFIG) $(UCLIBC_ARM_ABI_CONFIG) $(UCLIBC_ARM_BX_CONFIG) $(UCLIBC_MIPS_ABI_CONFIG)
Signature · 1 line
2.4.3
PATCH v2 1/1 ARC: allow selection of MMU page size
Dear Alexey Brodkin,
Quoted 5 lines · Alexey Brodkin
Modern ARC cores (those sporting MMU of version 3 and 4) allow selection of different page sizes (4, 8 or 16 kB) during ASIC design creation. And it's important to build a toolchain with page size setting that matches hardware.
Quoted 8 lines
Otherwise user-space applications will fail on execution due to unexpected data layout/alignment etc.
Signed-off-by Alexey Brodkin <[email protected]>Cc Anton Kolesov <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Arnout Vandecappelle <[email protected]>---
I've done some minor edits of the Config.in help text, and also fixed the indentation: indentation for Config.in properties is one tab, and for the help text it's one tab + two spaces (it was broken in several places). After fixing those minor issues, I've applied and pushed!
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com