Bug #75
closedWhy doesn't xorg omap driver build with --enable-neon
100%
Description
Compiling the xorg omap driver with --enable-neon fails with the following message:
{standard input}: Assembler messages:
{standard input}:105: Error: bad instruction `vld1.u8 {d0},[r1]!'
{standard input}:108: Error: bad instruction `vld1.u8 {d1},[r4]!'
{standard input}:109: Error: bad instruction `vld1.u8 {q1},[r7]!'
{standard input}:110: Error: bad instruction `vzip.u8 d0,d1'
{standard input}:111: Error: bad instruction `vld1.u8 {q2},[r6]!'
{standard input}:112: Error: bad instruction `vst2.u8 {q0,q1},[r5]!'
{standard input}:113: Error: bad instruction `vmov.u8 q1,q2'
{standard input}:114: Error: bad instruction `vst2.u8 {q0,q1},[sl]!'
make5: *** [image-format-conversions.lo] Error 1
CC sw-exa.lo
This appears to mean that the cross-compiler is not properly enabled for neon capabilities. But the Crosstool-NG config file includes the following two entries:
CT_ARCH_FPU="neon"
CT_CC_CORE_EXTRA_CONFIG="--with-fpu=neon"
This seems to be all that is required, but I'll need to check with the Crosstool-NG list to be certain.
Updated by Hammel over 13 years ago
Emailed Crosstool-NG list to ask about this issue.
Updated by Hammel over 13 years ago
Verified today that the updated xcc (with specified options under Details) does not build the driver.
Updated by Hammel over 13 years ago
Some info on using the driver under Ubuntu might shed some light:
http://elinux.org/BeagleBoardUbuntu#Xorg_omapfb_Drivers
Updated by Hammel over 13 years ago
Maybe this helps a little:
http://forums.arm.com/index.php?/topic/14273-vectorizing-compiler/
Updated by Hammel over 13 years ago
I found three URLs that helped me solve this problem today:
Linaro's native GCC toolchain working group: https://wiki.linaro.org/WorkingGroups/ToolChain/Using/GCCNative
This lead to the config they use to build gcc:
http://bazaar.launchpad.net/~linaro-toolchain-dev/cbuild/trunk/view/head:/config/cortexa8r1.mk
And when mixed with the info from the Ubuntu Hard Float for ARM page:
http://wiki.debian.org/ArmHardFloatPort
I managed to come up with a cross toolchain configuration for Crosstool-NG that supports building the omap xorg driver with --enable-neon included in the configure options.
The differences (see attached file) from my original configuration are the following:
1. Switch from GCC 4.4.3 to 4.4.1 to keep in line with Linaro's suggested build
2. Enable Thumb internetworking
3. Tuned for Cortex-A9 which apparently will also support A8.
4. Added --with-float=softfp to --with-fpu=neon in both CT_CC_CORE_EXTRA_CONFIG and CT_CC_EXTRA_CONFIG.
I think the one that made the real difference is #4 but the rest (I believe) keeps me inline with the Linaro and Ubuntu suggested cross compiler configurations. Time to rebuild everything with the new toolchain.