Merge existing correctness fixes

Registered by Michael Hope

Gather the various ARM-related qemu code-correctness fixes, test and review them and submit them upstream.

Sources of these fixes:
 * the qemu-maemo tree
 * possibly other trees like android (to investigate)
 * upstream's mailing list
 * patches written to fix problems found by our testing

Blueprint information

Michael Hope
Peter Maydell
Needs approval
Peter Maydell
Series goal:
Accepted for 11.05
Milestone target:
milestone icon 11.05-final
Started by
Michael Hope
Completed by
Peter Maydell

Related branches



Some work items have prefixes:
meego - patches from meego tree
samsung - ditto, samsung platform emulator
neon-list - issues raised by internal ARM users, mostly neon
valgrind - issues found by running tests from valgrind's source tree
Note that items here are marked 'DONE' when a patch is submitted upstream, although it may then take up to a few weeks for it to actually be committed to qemu git. The queue of pending patches is tracked at

A few items removed from this blueprint:
 * meego - Cortex-A8r2 support -- this is really only (maybe) needed for omap3 and will be considered under omap3 upstreaming
 * meego - trustzone -- this is a missing feature, not a correctness issue; the plan is to do a proper implementation under its own blueprint next cycle
 * VCVT exception flags is postponed because it is tricky (requires fixing softfloat bugs) and not very important


Work Items

Work items:
compile list of non-upstreamed ARM correctness fixes in various qemu trees: DONE
identify best git workflow for linaro qemu: DONE
check linaro patch handling policy (x-post to linaro-dev? review?): DONE
set up a 'linaro qemu' tree to track "upstream + ARM goodness": DONE
fix & test user-mode ldrexd/strexd: DONE
take BKPT-vs-SMC fix from list: DONE
clean up and post VCVT patchset: DONE
clean up and post VFP-in-signal-handlers patchset: DONE
nak the mailing list patch about semihosting stderr? : DONE
ldrexd may have atomicity issues in user-mode: DONE
meego - break up the "lots of ARM TCG changes" commit: DONE
meego - fix vqshl/vqshlu: DONE
meego - fix vrsqrts: DONE
meego - fix vshll: DONE
meego - vifx vqdmlsl: DONE
meego - implement flush-to-zero: DONE
meego - implement vmull.p8: DONE
neon-list - UNZIP wrong decoding: DONE
neon-list - narrow sat signed to unsigned not taken into account: DONE
neon-list - missing VSLI: DONE
neon-list - missing polynomial VMULL: DONE
samsung - implement PLI (as a nop, for v7 only): DONE
samsung - interrupt-in-IT-block: DONE
review and test CL's v3 shift patchset: DONE
check for remaining shift fixes in meego tree: DONE
rework VZIP/VUZP patch which failed review: DONE
meego - neon_vldst helper patch: DONE
meego - fix vld1 single elt to all lanes: DONE
meego - temp leak patches: DONE
meego - test and upstream UNDEF handling patches: DONE
cp15 changes from maemo tree (?already posted upstream once by Matt?): DONE
cp15 debug reg patch: add debug status register, upstream: DONE
thumb load/store decoding - review bogus "case 8" code: DONE
thumb load/store decoding - should UNDEF on P=W=U=0: DONE
initrd loadaddr changes from maemo tree (cf list discussion previously): DONE
investigate, ack/nak fix suggestion for qemu bug 656285 SYS_HEAPINFO: DONE
neon-list - wrong register in VDUP: DONE
neon-list - missing handling of VLD1/VST1 with size 3: DONE
neon-list - VDUP not taking into account Q field: DONE
neon-list - fix narrow saturation for negative input: DONE
neon-list - fix handling of FP exception flags: DONE
neon-list - fix FP exception flags for VCVT: POSTPONED
neon-list - special casing of NaN->0 for float to int isn't setting IOC: DONE
neon-list - ARM should use float_tininess_before_rounding: DONE
valgrind - (neon64,neon128) vmax,vmin NaN handling: DONE
valgrind - (neon64,neon128) vrecps NaN handling: DONE
valgrind - (neon64,neon128) vcgt,vcge,vacgt,vacge NaN-NaN comparisons: DONE
valgrind - (neon64,neon128) vceq,vcgt,vcle comparisons with 1 and const-0: DONE
valgrind - (neon64) vld1 bugs: DONE
valgrind - (v6intThumb) orns, mvns carry bit inverted: DONE
valgrind - (v6media) sadd16,ssub16,sadd8,ssub8 GE bits wrong: DONE
valgrind - (v6media) sasx GE bits wrong: DONE
valgrind - (v6media) smuad,smuadx,smlad,smladx not setting Q bit: DONE
investigate Android qemu git tree for any missing fixes: DONE
VABAL - don't overflow for s32 case: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.


No subscribers.