[4/5] tune-cortexm3.inc: Cortex-M3 doesn't support ARM instructions

Submitted by Martin Jansa on April 25, 2014, 4:40 p.m.

Details

Message ID 3284a4ff6415bb88ec8aee87c5fc098a30156c51.1398443925.git.Martin.Jansa@gmail.com
State New
Headers show

Commit Message

Martin Jansa April 25, 2014, 4:40 p.m.
From: Andrei Gherzan <andrei@gherzan.ro>

Use thumb instructions for Cortex-M3 to avoid this gcc error:
'error: target CPU does not support ARM mode'.

Extracted from "Cortex-M3 Technical Reference Manual":
"The processor implements the ARM v7-M architecture. This includes the entire
16-bit Thumb instruction set and the base Thumb-2 32-bit instruction set
architecture. The processor cannot execute ARM instructions."

Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/conf/machine/include/tune-cortexm3.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/meta/conf/machine/include/tune-cortexm3.inc b/meta/conf/machine/include/tune-cortexm3.inc
index cbc4c0d..780baf4 100644
--- a/meta/conf/machine/include/tune-cortexm3.inc
+++ b/meta/conf/machine/include/tune-cortexm3.inc
@@ -10,5 +10,5 @@  TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "armv7m", " -march=armv7-m
 
 AVAILTUNES += "cortexm3"
 ARMPKGARCH_tune-cortexm3 = "armv7m"
-TUNE_FEATURES_tune-cortexm3 = "armv7m vfp cortexm3"
+TUNE_FEATURES_tune-cortexm3 = "armv7m vfp cortexm3 thumb"
 PACKAGE_EXTRA_ARCHS_tune-cortexm3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7m-vfp"

Comments

Phil Blundell April 27, 2014, 3:22 p.m.
On Fri, 2014-04-25 at 18:40 +0200, Martin Jansa wrote:
> Extracted from "Cortex-M3 Technical Reference Manual":
> "The processor implements the ARM v7-M architecture. This includes the entire
> 16-bit Thumb instruction set and the base Thumb-2 32-bit instruction set
> architecture. The processor cannot execute ARM instructions."

This is true, though it's worth noting that the Thumb-only restriction
is generic to ARMv7-M and not specific to Cortex-M3.  This tune file
seems to conflate the architecture and the particular CPU slightly and
it seems like some refactoring might be desirable, though obviously that
doesn't make your patch wrong.  Also...

>  PACKAGE_EXTRA_ARCHS_tune-cortexm3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7m-vfp"

... this seems a bit bogus.  Presumably
${PACKAGE_EXTRA_ARCHS_tune-armv7at} will include "arm" and a bunch of
other architectures, some of which (e.g. armv4) are more or less
guaranteed to be 32-bit code.  Without a wholesale rethink of the way
that PACKAGE_ARCHs are done on arm, it doesn't seem very safe for armv7m
machines to admit any earlier architecture at all in their
PACKAGE_EXTRA_ARCHS.

p.