From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43439) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bRIta-000490-Lg for qemu-devel@nongnu.org; Sun, 24 Jul 2016 08:52:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bRItW-0001QN-Hv for qemu-devel@nongnu.org; Sun, 24 Jul 2016 08:52:37 -0400 Received: from gate.crashing.org ([63.228.1.57]:47575) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bRItW-0001QI-8X for qemu-devel@nongnu.org; Sun, 24 Jul 2016 08:52:34 -0400 Message-ID: <1469364745.8568.254.camel@kernel.crashing.org> From: Benjamin Herrenschmidt Date: Sun, 24 Jul 2016 22:52:25 +1000 In-Reply-To: <1469364697.8568.253.camel@kernel.crashing.org> References: <1469364141.8568.251.camel@kernel.crashing.org> <1469364697.8568.253.camel@kernel.crashing.org> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] TCG problem with cpu_{st,ld}x_data ? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Richard Henderson , Christian Borntraeger On Sun, 2016-07-24 at 22:51 +1000, Benjamin Herrenschmidt wrote: >=C2=A0 > FYI: This probably completely wrong patch (but it was easier than > hacking all the helpers) fixed the problem for me. With this (and the > video driver I wrote that I will publish asap), I can now reliably > boot > various versions of MacOS X in qemu ppc using a 7400 CPU. And here's the patch: diff --git a/include/exec/cpu_ldst_template.h b/include/exec/cpu_ldst_tem= plate.h index eaf69a1..13e8881 100644 --- a/include/exec/cpu_ldst_template.h +++ b/include/exec/cpu_ldst_template.h @@ -111,7 +111,7 @@ glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX), _ra)(CPU= ArchState *env, static inline RES_TYPE glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong p= tr) { - return glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX), _ra)(env, ptr, 0= ); + return glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX), _ra)(env, ptr, G= ETPC()); } =20 #if DATA_SIZE <=3D 2 @@ -149,7 +149,7 @@ glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX), _ra)(CPU= ArchState *env, static inline int glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong p= tr) { - return glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX), _ra)(env, ptr, 0= ); + return glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX), _ra)(env, ptr, G= ETPC()); } #endif =20 @@ -191,7 +191,7 @@ static inline void glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong pt= r, RES_TYPE v) { - glue(glue(glue(cpu_st, SUFFIX), MEMSUFFIX), _ra)(env, ptr, v, 0); + glue(glue(glue(cpu_st, SUFFIX), MEMSUFFIX), _ra)(env, ptr, v, GETPC(= )); } =20 #endif /* !SOFTMMU_CODE_ACCESS */