summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-04-05 12:36:12 +0000
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-04-05 12:36:12 +0000
commitbe92401dd332dde5e1a009a0bdd9c8ce01be71a1 (patch)
treeac9d19555150e98419eb2e00f2e7a2caeaed1b5b
parent6d9472818ea83e5dfac4dafa2773907dfa11806f (diff)
buildroot: allow enabling MIPS16 user-space build
Enabling MIPS16 is made conditional on advertising the "mips16" feature for a specific target since it requires support from the CPU (HAS_MIPS16) and the actual use of MIPS16 for building packages (USE_MIPS16). Signed-off-by: Florian Fainelli <florian@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36202 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--Config.in11
-rw-r--r--rules.mk3
-rwxr-xr-xscripts/metadata.pl1
-rw-r--r--target/Config.in4
4 files changed, 19 insertions, 0 deletions
diff --git a/Config.in b/Config.in
index 8de6e1aa8..7b03c7a24 100644
--- a/Config.in
+++ b/Config.in
@@ -681,6 +681,17 @@ menuconfig TARGET_OPTIONS
Most people will answer N.
+ config USE_MIPS16
+ bool "Build packages with MIPS16 instructions" if TARGET_OPTIONS
+ depends on HAS_MIPS16
+ help
+ If your target CPU does support the MIPS16 instruction set
+ and you want to use it for packages, enable this option.
+ MIPS16 produces smaller binaries thus reducing pressure on
+ caches and TLB.
+
+ Most people will answer N.
+
source "toolchain/Config.in"
source "target/imagebuilder/Config.in"
diff --git a/rules.mk b/rules.mk
index 59ab50b92..56129917e 100644
--- a/rules.mk
+++ b/rules.mk
@@ -63,6 +63,9 @@ endif
ifneq ($(filter -mips%r2,$(TARGET_OPTIMIZATION)),)
ARCH_SUFFIX:=_r2
endif
+ifdef CONFIG_USE_MIPS16
+ TARGET_OPTIMIZATION+= -minterlink-mips16 -mips16
+endif
ifneq ($(findstring -mips16,$(TARGET_OPTIMIZATION)),)
TARGET_ASFLAGS_OVERRIDE:=-mno-mips16
ARCH_SUFFIX:= $(ARCH_SUFFIX)_m16
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index b04cd8cc3..6249127e3 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -174,6 +174,7 @@ sub target_config_features(@) {
/ramdisk/ and $ret .= "\tselect USES_INITRAMFS\n";
/powerpc64/ and $ret .= "\tselect powerpc64\n";
/nommu/ and $ret .= "\tselect NOMMU\n";
+ /mips16/ and $ret .= "\tselect HAS_MIPS16\n";
}
return $ret;
}
diff --git a/target/Config.in b/target/Config.in
index 31f3ced51..79a91b1af 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -66,6 +66,10 @@ config PROFILE_KCONFIG
config NOMMU
bool
+config HAS_MIPS16
+ depends (mips || mipsel || mips64 || mips64el)
+ bool
+
# Architecture selection
config arm