From 5eb5ea621c3341624889589037b787f18948e903 Mon Sep 17 00:00:00 2001 From: Paul Beeler Date: Thu, 19 Feb 2015 12:31:05 -0700 Subject: [PATCH] arm: compile all thumb with -mthumb-interwork and cleanup -O3 To enable this option use ENABLE_ARM_THUMB_INTERWORK := true This may slightly increase binary size but will include more arm instructions for increased performance. https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html Change-Id: I0ba0a2d34b84e34309c20ce0cbb85ea3ee6dda15 Signed-off-by: Paul Beeler --- core/binary.mk | 7 +++++++ core/thumb_interwork.mk | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 core/thumb_interwork.mk diff --git a/core/binary.mk b/core/binary.mk index 2fda72a8bc5..ce899bbe816 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -114,6 +114,13 @@ endif # Include custom gcc flags. Seperate them so they can be easily managed. +# arm thumb +ifeq ($(strip $(ENABLE_ARM_THUMB_INTERWORK)),true) + ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),true) + include $(BUILD_SYSTEM)/thumb_interwork.mk + endif +endif + # O3 ifeq ($(strip $(O3_OPTIMIZATIONS)),true) include $(BUILD_SYSTEM)/O3.mk diff --git a/core/thumb_interwork.mk b/core/thumb_interwork.mk new file mode 100644 index 00000000000..1008033922e --- /dev/null +++ b/core/thumb_interwork.mk @@ -0,0 +1,41 @@ +# Copyright (C) 2014-2015 The SaberMod Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Copyright (C) 2014-2015 The SaberMod Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +ifeq ($(strip (TARGET_ARCH)),arm) + ifneq (1,$(words $(filter $(LOCAL_DISABLE_THUMB_INTERWORK),$(LOCAL_MODULE)))) + ifdef LOCAL_CFLAGS + LOCAL_CFLAGS += \ + -mthumb-interwork + else + LOCAL_CFLAGS := \ + -mthumb-interwork + endif + endif +endif