[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch] Missing FORCE_RET on store ops
From: |
Paul Brook |
Subject: |
[Qemu-devel] [patch] Missing FORCE_RET on store ops |
Date: |
Wed, 9 Mar 2005 23:59:53 +0000 |
User-agent: |
KMail/1.7.2 |
It is quite common for the arm function prologue and return sequence to be a
single instruction. This combined with their conditional execution
capabilities makes them particularly sensitive to missing FORCE_RET()
markers.
The i386 store-to-memory macro in softmmu-header.h ends in an if..else block,
so is triggers this problem.
Attached patch adds the necessary FORCE_RET markers to store operations. I
can't put the FORCE_RET in softmmu-header.h because that file is used
elsewhere.
In case anyone is interested I used the following commands to check for ops
with multiple exit points:
objdump -dr op.o | \
sed -e '/>:$\|ldmdb/!d'-e 's/.*<\(.*\)>:/~\1:/' -e 's/.*ldmdb.*/!/' | \
sed -e ':1;N;s/\n//;t1' | sed -e's/~/\n/g' | grep '!!'
Where "ldmdb" is the arm return instruction. This triggers in one other place,
but I've verified that this is a false alarm (ldmdb also has other uses).
Paul
patch.qemu_arm_forceret
Description: Text Data
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [patch] Missing FORCE_RET on store ops,
Paul Brook <=