On Monday 26 March 2007 01:44, you wrote:
Axel Zeuner wrote:
On Saturday 24 March 2007 21:15, Anthony Liguori wrote:
The tricky thing I still can't figure out is how to get ASM_SOFTMMU
working. The problem is GLUE(st, SUFFIX) function. First GCC cannot
deal with the register pressure. The problem I can't seem to fix
though is that GCC sticks %1 in %esi because we're only using an "r"
constraint, not a "q" constraint. This results in the generation of
%sib which is an invalid register. However, refactoring the code to
not require a "q" constraint doesn't seem to help either.
could you please try the attached patch for softmmu_header.h? Allows
compiling with gcc4 and ASM_SOFTMMU.
That did the trick. Could you explain what your changes did?
QEMU/i386 has only 3 three available registers if TARGET_I386 is selected
because ebx,ebp,esi,edi are used by the environment and T0, T1, T3( AKA
A0). This makes inline assembly really ugly. The called external C
functions in ASM_SOFTMMU are REGPARM(1,2), i.e. require their first
arguments in eax, edx.