armv6-novfp and armv6-vfp and tune files
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.
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
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.incQuoted 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