qemu-devel
[Top][All Lists]
Advanced

[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

Attachment: patch.qemu_arm_forceret
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]