From: Francois H. Theron <francois@ra...> - 2009-02-12 10:04:55
Has anyone seen this and perhaps have some comments?
Quickest explanation (svn diff):
@@ -5,7 +5,7 @@
MACHINE_FEATURES += "verdex"
MACHINE_FEATURES += "iwmmxt"
As you can see I am now building the verdex setup with iwmmxt support -
which is the whole point of the PXA27x vs PXA25x CPU. However, the
angstrom conf files also appear to do this (which is probably where the
gumstix version came from).
Having done that, I had to do this:
+++ com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc (working
@@ -1,6 +1,8 @@
# Configurations for the Intel PXA27x Appications Processor Family.
# Please use tune-xscale for PXA255/PXA26x based processors.
-TARGET_CC_ARCH = "-march=iwmmxt -mcpu=iwmmxt -mtune=iwmmxt"
+FEED_ARCH = "iwmmxt"
+TARGET_CC_ARCH = "-march=iwmmxt -mtune=iwmmxt"
+TARGET_CC_KERNEL_ARCH = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH = "iwmmxt"
PACKAGE_EXTRA_ARCHS += "iwmmxt"
Note that there is no -mcpu option: The kernel failed to build,
complaining about a switch conflict between -mcpu and -march... `man
gcc` claims that you can use both switches.
I also think that FEED_ARCH = "iwmmxt" will probably not find anything
if this refers to http://www.gumstix.net/feeds/current/glibc/ipk/
Regardless, I've built this and it works on the physical hardware. I've
not done any sort of benchmark to see if there is any benefit, but I
can't help but feel that to build the kernel for xscale (armv5te) only
is just not right.
On the other hand, since plain xscale builds should work on both old and
new PXAs, it does seem more useful to do only the xscale/armv5te one
(referring here to code not dependant on CPU type like some kernel
modules, just to gcc compile flags to usespace apps).
Lastly, building with the configs above works on hardware but not in
qemu emulator. It seems that, despite the -M verdex flag in qemu, it
only really emulates xscale. This got me worried that I might be missing
The last lines from qemu:
XScale iWMMXt coprocessor detected.
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 76K
pflash_write: Unimplemented flash cmd sequence (offset 00d20000, wcycle
0x1 cmd 0x20 value 0xd0
pflash_write: Unimplemented flash cmd sequence (offset 00d00000, wcycle
0x1 cmd 0x20 value 0xd0
(the pflash line has been present in all emulations I ran so far,
including basix rootfs and does not seem to be a problem)
(the pflash lines repeat 199 times and then nothing happens)
Well, my dev PC's CPU seems to think it is doing a lot:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6016 francois 20 0 338m 51m 1388 R 85.9 5.1 17:04.79 qemu-system-arm
In short, why would nobody be building a kernel with the proper flags or
at least not care about it?