Skip to contentSkip to conversation

armv6-novfp and armv6-vfp and tune files

DISCUSSION Denis 'GNUtoo' Carikli 3 participants 3 messages Sep 17, 2011 – Sep 19, 2011

lore
Share & tools
lore
#0 lore raw

hi,
I've an HTC Dream, it has an armv6 CPU but lack a vfp unit. I want to add correct support for it in meta-smartphone/meta-htc. In order to have a correct machine config that works a tune inc file must be required in it.

In openembedded-core there is no tune file yet for an armv6 that lacks a vfp, but there are theses two files:
meta/conf/machine/include/tune-arm1136jf-s.inc meta/conf/machine/include/arm/arch-armv6.inc

tune-arm1136jf-s.inc requires arch-armv6.inc.

So I need to create an tune-arm1136ej-s.inc which requires an arch-armv6-novfp.inc(also to be created).

however I wonder how to create the armv6-novfp.inc:
arch-armv6.inc has things like that inside:
TUNE_FEATURES_tune-armv6 ?= "armv6 vfp"
or:
PACKAGE_EXTRA_ARCHS_tune-armv6 = "${PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp} armv6-vfp"
or:
TUNEVALID[armv6] = "Enable instructions for ARMv6"

in the recipes and in the feeds and in the workdir it's labeled as "armv6-vfp".

So the correct way would be to label an armv6 that lacks a vfp "armv6".

however, I fear that the armv6 override is already taken, and also maybe the arch-armv6.inc should be moved to arch-armv6-vfp.inc.

Denis.

#1 lore raw
Quoted 11 lines · Denis 'GNUtoo' Carikli

hi,
I've an HTC Dream, it has an armv6 CPU but lack a vfp unit. I want to add correct support for it in meta-smartphone/meta-htc. In order to have a correct machine config that works a tune inc file must be required in it.

In openembedded-core there is no tune file yet for an armv6 that lacks a vfp, but there are theses two files:
meta/conf/machine/include/tune-arm1136jf-s.inc meta/conf/machine/include/arm/arch-armv6.inc

Quoted 5 lines

tune-arm1136jf-s.inc requires arch-armv6.inc.

So I need to create an tune-arm1136ej-s.inc which requires an arch-armv6-novfp.inc(also to be created).

Is the arm1136ej-s the core in the HTC dream? Or is it a custom armv6 (w/o vfp)?

If it's the later you should add a new tune file for this htc dream's processor.

The arch-armv6 should be modified to include a novfp feature. Using the armv5 as an example, I suggest:

# Little Endian
-AVAILTUNES += "armv6 armv6t armv6hf armv6thf" +AVAILTUNES += "armv6-novfp armv6 armv6t armv6hf armv6thf"

+TUNE_FEATURES_tune-armv6-novfp ?= "armv6"

+PACKAGE_EXTRA_ARCHS_tune-armv6-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5e} armv6"

(if there is a thumb variant, add that as well...)

(...and... if there is a big endian variant add that as well...)

Then using tune-arm1136ej-s.inc as a model for a new htc-dream tune:

DEFAULTTUNE ?= "htcdream"

require conf/machine/include/arm/arch-armv6.inc

TUNEVALID[htcdream] = "Enable HTC dream specific processor optimizations" TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "htcdream", "-mtune=<something appropriate here>", "", d)}"

AVAILTUNES += "htcdream"
TUNE_FEATURES_tune-htcdream = "${TUNE_FEATURES_tune-armv6-novfp} htcdream" PACKAGE_EXTRA_ARCHS_tune-htcdream = "${PACKAGE_EXTRA_ARCHS_tune-armv6-novfp}"

If the htc-dream has an existing core, then you can simply add a "novfp" variant to that core.

Quoted 10 lines

however I wonder how to create the armv6-novfp.inc:
arch-armv6.inc has things like that inside:
TUNE_FEATURES_tune-armv6 ?= "armv6 vfp"
or:
PACKAGE_EXTRA_ARCHS_tune-armv6 = "${PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp} armv6-vfp"
or:
TUNEVALID[armv6] = "Enable instructions for ARMv6"

Quoted 7 lines

in the recipes and in the feeds and in the workdir it's labeled as "armv6-vfp".

So the correct way would be to label an armv6 that lacks a vfp "armv6".

however, I fear that the armv6 override is already taken, and also maybe the arch-armv6.inc should be moved to arch-armv6-vfp.inc.

Due to the way this was originally implemented, I was told no variants of the armv6 existed w/o VFP..... so the naming is what it is, I'm open to suggesting a change to make it more explicit that armv6 is w/o VFP and armv6-vfp is w/ VFP.
But it's up to the oe-core community if they'll accept that change to the core
tunings. It's more likely they will accept armv6-novfp (as in the examples above.)

--Mark

Quoted 7 lines

Denis.

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

#2 lore raw

Op 19 sep. 2011, om 16:18 heeft Mark Hatle het volgende geschreven:

Quoted 69 lines · Denis 'GNUtoo' Carikli
Quoted 11 lines

hi,
I've an HTC Dream, it has an armv6 CPU but lack a vfp unit. I want to add correct support for it in meta-smartphone/meta-htc. In order to have a correct machine config that works a tune inc file must be required in it.

In openembedded-core there is no tune file yet for an armv6 that lacks a vfp, but there are theses two files:
meta/conf/machine/include/tune-arm1136jf-s.inc meta/conf/machine/include/arm/arch-armv6.inc

Quoted 5 lines

tune-arm1136jf-s.inc requires arch-armv6.inc.

So I need to create an tune-arm1136ej-s.inc which requires an arch-armv6-novfp.inc(also to be created).

Is the arm1136ej-s the core in the HTC dream? Or is it a custom armv6 (w/o vfp)?

If it's the later you should add a new tune file for this htc dream's processor.

The arch-armv6 should be modified to include a novfp feature. Using the armv5 as an example, I suggest:

# Little Endian

(quoted diff) +3 -1
-AVAILTUNES += "armv6 armv6t armv6hf armv6thf"
+AVAILTUNES += "armv6-novfp armv6 armv6t armv6hf armv6thf"
 
+TUNE_FEATURES_tune-armv6-novfp ?= "armv6"
 
+PACKAGE_EXTRA_ARCHS_tune-armv6-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5e} armv6"

(if there is a thumb variant, add that as well...)

(...and... if there is a big endian variant add that as well...)

Then using tune-arm1136ej-s.inc as a model for a new htc-dream tune:

DEFAULTTUNE ?= "htcdream"

require conf/machine/include/arm/arch-armv6.inc

TUNEVALID[htcdream] = "Enable HTC dream specific processor optimizations" TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "htcdream", "-mtune=<something appropriate here>", "", d)}"

AVAILTUNES += "htcdream"
TUNE_FEATURES_tune-htcdream = "${TUNE_FEATURES_tune-armv6-novfp} htcdream" PACKAGE_EXTRA_ARCHS_tune-htcdream = "${PACKAGE_EXTRA_ARCHS_tune-armv6-novfp}"

If the htc-dream has an existing core, then you can simply add a "novfp" variant to that core.

Quoted 15 lines

however I wonder how to create the armv6-novfp.inc:
arch-armv6.inc has things like that inside:
TUNE_FEATURES_tune-armv6 ?= "armv6 vfp"
or:
PACKAGE_EXTRA_ARCHS_tune-armv6 = "${PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp} armv6-vfp"
or:
TUNEVALID[armv6] = "Enable instructions for ARMv6"

in the recipes and in the feeds and in the workdir it's labeled as "armv6-vfp".

So the correct way would be to label an armv6 that lacks a vfp "armv6".

Quoted 8 lines
Quoted 2 lines

however, I fear that the armv6 override is already taken, and also maybe the arch-armv6.inc should be moved to arch-armv6-vfp.inc.

Due to the way this was originally implemented, I was told no variants of the armv6 existed w/o VFP..... so the naming is what it is, I'm open to suggesting a change to make it more explicit that armv6 is w/o VFP and armv6-vfp is w/ VFP. But it's up to the oe-core community if they'll accept that change to the core tunings. It's more likely they will accept armv6-novfp (as in the examples above.)

It's called armv6-novfp in OE classic