The first non-register argument isn't placed at offset 0. Cc: Stefan Weil <s...@weilnetz.de> Signed-off-by: Richard Henderson <r...@twiddle.net> --- tcg/i386/tcg-target.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ---
You were right, Stefan. Naturally, this bug really manifest until paging is enabled, thus all the rom boot tests are false. Please give this a go. r~ diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index d910233..4133dcf 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -1407,7 +1407,8 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *l) } else { retaddr = TCG_REG_RAX; tcg_out_movi(s, TCG_TYPE_PTR, retaddr, (uintptr_t)l->raddr); - tcg_out_st(s, TCG_TYPE_PTR, retaddr, TCG_REG_ESP, 0); + tcg_out_st(s, TCG_TYPE_PTR, retaddr, TCG_REG_ESP, + TCG_TARGET_CALL_STACK_OFFSET); } } -- 1.9.3