Commit d15f74fb authored by Blue Swirl's avatar Blue Swirl Committed by Alexander Graf

ppc: Avoid AREG0 for integer and vector helpers

Add an explicit CPUPPCState parameter instead of relying on AREG0.
Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
[fix unwanted whitespace line in Makefile.target]
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
parent 64654ded
...@@ -6,5 +6,4 @@ obj-y += excp_helper.o ...@@ -6,5 +6,4 @@ obj-y += excp_helper.o
obj-y += fpu_helper.o obj-y += fpu_helper.o
obj-y += int_helper.o obj-y += int_helper.o
$(obj)/int_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS) $(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
...@@ -33,17 +33,17 @@ DEF_HELPER_4(lscbx, tl, tl, i32, i32, i32) ...@@ -33,17 +33,17 @@ DEF_HELPER_4(lscbx, tl, tl, i32, i32, i32)
#if defined(TARGET_PPC64) #if defined(TARGET_PPC64)
DEF_HELPER_FLAGS_2(mulhd, TCG_CALL_CONST | TCG_CALL_PURE, i64, i64, i64) DEF_HELPER_FLAGS_2(mulhd, TCG_CALL_CONST | TCG_CALL_PURE, i64, i64, i64)
DEF_HELPER_FLAGS_2(mulhdu, TCG_CALL_CONST | TCG_CALL_PURE, i64, i64, i64) DEF_HELPER_FLAGS_2(mulhdu, TCG_CALL_CONST | TCG_CALL_PURE, i64, i64, i64)
DEF_HELPER_2(mulldo, i64, i64, i64) DEF_HELPER_3(mulldo, i64, env, i64, i64)
#endif #endif
DEF_HELPER_FLAGS_1(cntlzw, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl) DEF_HELPER_FLAGS_1(cntlzw, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl)
DEF_HELPER_FLAGS_1(popcntb, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl) DEF_HELPER_FLAGS_1(popcntb, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl)
DEF_HELPER_FLAGS_1(popcntw, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl) DEF_HELPER_FLAGS_1(popcntw, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl)
DEF_HELPER_2(sraw, tl, tl, tl) DEF_HELPER_3(sraw, tl, env, tl, tl)
#if defined(TARGET_PPC64) #if defined(TARGET_PPC64)
DEF_HELPER_FLAGS_1(cntlzd, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl) DEF_HELPER_FLAGS_1(cntlzd, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl)
DEF_HELPER_FLAGS_1(popcntd, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl) DEF_HELPER_FLAGS_1(popcntd, TCG_CALL_CONST | TCG_CALL_PURE, tl, tl)
DEF_HELPER_2(srad, tl, tl, tl) DEF_HELPER_3(srad, tl, env, tl, tl)
#endif #endif
DEF_HELPER_FLAGS_1(cntlsw32, TCG_CALL_CONST | TCG_CALL_PURE, i32, i32) DEF_HELPER_FLAGS_1(cntlsw32, TCG_CALL_CONST | TCG_CALL_PURE, i32, i32)
...@@ -120,32 +120,32 @@ DEF_HELPER_3(vminuw, void, avr, avr, avr) ...@@ -120,32 +120,32 @@ DEF_HELPER_3(vminuw, void, avr, avr, avr)
DEF_HELPER_3(vmaxub, void, avr, avr, avr) DEF_HELPER_3(vmaxub, void, avr, avr, avr)
DEF_HELPER_3(vmaxuh, void, avr, avr, avr) DEF_HELPER_3(vmaxuh, void, avr, avr, avr)
DEF_HELPER_3(vmaxuw, void, avr, avr, avr) DEF_HELPER_3(vmaxuw, void, avr, avr, avr)
DEF_HELPER_3(vcmpequb, void, avr, avr, avr) DEF_HELPER_4(vcmpequb, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpequh, void, avr, avr, avr) DEF_HELPER_4(vcmpequh, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpequw, void, avr, avr, avr) DEF_HELPER_4(vcmpequw, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtub, void, avr, avr, avr) DEF_HELPER_4(vcmpgtub, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtuh, void, avr, avr, avr) DEF_HELPER_4(vcmpgtuh, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtuw, void, avr, avr, avr) DEF_HELPER_4(vcmpgtuw, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtsb, void, avr, avr, avr) DEF_HELPER_4(vcmpgtsb, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtsh, void, avr, avr, avr) DEF_HELPER_4(vcmpgtsh, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtsw, void, avr, avr, avr) DEF_HELPER_4(vcmpgtsw, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpeqfp, void, avr, avr, avr) DEF_HELPER_4(vcmpeqfp, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgefp, void, avr, avr, avr) DEF_HELPER_4(vcmpgefp, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtfp, void, avr, avr, avr) DEF_HELPER_4(vcmpgtfp, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpbfp, void, avr, avr, avr) DEF_HELPER_4(vcmpbfp, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpequb_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpequb_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpequh_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpequh_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpequw_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpequw_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtub_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtub_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtuh_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtuh_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtuw_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtuw_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtsb_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtsb_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtsh_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtsh_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtsw_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtsw_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpeqfp_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpeqfp_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgefp_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgefp_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpgtfp_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpgtfp_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vcmpbfp_dot, void, avr, avr, avr) DEF_HELPER_4(vcmpbfp_dot, void, env, avr, avr, avr)
DEF_HELPER_3(vmrglb, void, avr, avr, avr) DEF_HELPER_3(vmrglb, void, avr, avr, avr)
DEF_HELPER_3(vmrglh, void, avr, avr, avr) DEF_HELPER_3(vmrglh, void, avr, avr, avr)
DEF_HELPER_3(vmrglw, void, avr, avr, avr) DEF_HELPER_3(vmrglw, void, avr, avr, avr)
...@@ -175,18 +175,18 @@ DEF_HELPER_3(vaddcuw, void, avr, avr, avr) ...@@ -175,18 +175,18 @@ DEF_HELPER_3(vaddcuw, void, avr, avr, avr)
DEF_HELPER_3(vsubcuw, void, avr, avr, avr) DEF_HELPER_3(vsubcuw, void, avr, avr, avr)
DEF_HELPER_2(lvsl, void, avr, tl); DEF_HELPER_2(lvsl, void, avr, tl);
DEF_HELPER_2(lvsr, void, avr, tl); DEF_HELPER_2(lvsr, void, avr, tl);
DEF_HELPER_3(vaddsbs, void, avr, avr, avr) DEF_HELPER_4(vaddsbs, void, env, avr, avr, avr)
DEF_HELPER_3(vaddshs, void, avr, avr, avr) DEF_HELPER_4(vaddshs, void, env, avr, avr, avr)
DEF_HELPER_3(vaddsws, void, avr, avr, avr) DEF_HELPER_4(vaddsws, void, env, avr, avr, avr)
DEF_HELPER_3(vsubsbs, void, avr, avr, avr) DEF_HELPER_4(vsubsbs, void, env, avr, avr, avr)
DEF_HELPER_3(vsubshs, void, avr, avr, avr) DEF_HELPER_4(vsubshs, void, env, avr, avr, avr)
DEF_HELPER_3(vsubsws, void, avr, avr, avr) DEF_HELPER_4(vsubsws, void, env, avr, avr, avr)
DEF_HELPER_3(vaddubs, void, avr, avr, avr) DEF_HELPER_4(vaddubs, void, env, avr, avr, avr)
DEF_HELPER_3(vadduhs, void, avr, avr, avr) DEF_HELPER_4(vadduhs, void, env, avr, avr, avr)
DEF_HELPER_3(vadduws, void, avr, avr, avr) DEF_HELPER_4(vadduws, void, env, avr, avr, avr)
DEF_HELPER_3(vsububs, void, avr, avr, avr) DEF_HELPER_4(vsububs, void, env, avr, avr, avr)
DEF_HELPER_3(vsubuhs, void, avr, avr, avr) DEF_HELPER_4(vsubuhs, void, env, avr, avr, avr)
DEF_HELPER_3(vsubuws, void, avr, avr, avr) DEF_HELPER_4(vsubuws, void, env, avr, avr, avr)
DEF_HELPER_3(vrlb, void, avr, avr, avr) DEF_HELPER_3(vrlb, void, avr, avr, avr)
DEF_HELPER_3(vrlh, void, avr, avr, avr) DEF_HELPER_3(vrlh, void, avr, avr, avr)
DEF_HELPER_3(vrlw, void, avr, avr, avr) DEF_HELPER_3(vrlw, void, avr, avr, avr)
...@@ -205,56 +205,56 @@ DEF_HELPER_2(vupkhsb, void, avr, avr) ...@@ -205,56 +205,56 @@ DEF_HELPER_2(vupkhsb, void, avr, avr)
DEF_HELPER_2(vupkhsh, void, avr, avr) DEF_HELPER_2(vupkhsh, void, avr, avr)
DEF_HELPER_2(vupklsb, void, avr, avr) DEF_HELPER_2(vupklsb, void, avr, avr)
DEF_HELPER_2(vupklsh, void, avr, avr) DEF_HELPER_2(vupklsh, void, avr, avr)
DEF_HELPER_4(vmsumubm, void, avr, avr, avr, avr) DEF_HELPER_5(vmsumubm, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmsummbm, void, avr, avr, avr, avr) DEF_HELPER_5(vmsummbm, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vsel, void, avr, avr, avr, avr) DEF_HELPER_5(vsel, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vperm, void, avr, avr, avr, avr) DEF_HELPER_5(vperm, void, env, avr, avr, avr, avr)
DEF_HELPER_3(vpkshss, void, avr, avr, avr) DEF_HELPER_4(vpkshss, void, env, avr, avr, avr)
DEF_HELPER_3(vpkshus, void, avr, avr, avr) DEF_HELPER_4(vpkshus, void, env, avr, avr, avr)
DEF_HELPER_3(vpkswss, void, avr, avr, avr) DEF_HELPER_4(vpkswss, void, env, avr, avr, avr)
DEF_HELPER_3(vpkswus, void, avr, avr, avr) DEF_HELPER_4(vpkswus, void, env, avr, avr, avr)
DEF_HELPER_3(vpkuhus, void, avr, avr, avr) DEF_HELPER_4(vpkuhus, void, env, avr, avr, avr)
DEF_HELPER_3(vpkuwus, void, avr, avr, avr) DEF_HELPER_4(vpkuwus, void, env, avr, avr, avr)
DEF_HELPER_3(vpkuhum, void, avr, avr, avr) DEF_HELPER_4(vpkuhum, void, env, avr, avr, avr)
DEF_HELPER_3(vpkuwum, void, avr, avr, avr) DEF_HELPER_4(vpkuwum, void, env, avr, avr, avr)
DEF_HELPER_3(vpkpx, void, avr, avr, avr) DEF_HELPER_3(vpkpx, void, avr, avr, avr)
DEF_HELPER_4(vmhaddshs, void, avr, avr, avr, avr) DEF_HELPER_5(vmhaddshs, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmhraddshs, void, avr, avr, avr, avr) DEF_HELPER_5(vmhraddshs, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmsumuhm, void, avr, avr, avr, avr) DEF_HELPER_5(vmsumuhm, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmsumuhs, void, avr, avr, avr, avr) DEF_HELPER_5(vmsumuhs, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmsumshm, void, avr, avr, avr, avr) DEF_HELPER_5(vmsumshm, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmsumshs, void, avr, avr, avr, avr) DEF_HELPER_5(vmsumshs, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vmladduhm, void, avr, avr, avr, avr) DEF_HELPER_4(vmladduhm, void, avr, avr, avr, avr)
DEF_HELPER_1(mtvscr, void, avr); DEF_HELPER_2(mtvscr, void, env, avr);
DEF_HELPER_2(lvebx, void, avr, tl) DEF_HELPER_2(lvebx, void, avr, tl)
DEF_HELPER_2(lvehx, void, avr, tl) DEF_HELPER_2(lvehx, void, avr, tl)
DEF_HELPER_2(lvewx, void, avr, tl) DEF_HELPER_2(lvewx, void, avr, tl)
DEF_HELPER_2(stvebx, void, avr, tl) DEF_HELPER_2(stvebx, void, avr, tl)
DEF_HELPER_2(stvehx, void, avr, tl) DEF_HELPER_2(stvehx, void, avr, tl)
DEF_HELPER_2(stvewx, void, avr, tl) DEF_HELPER_2(stvewx, void, avr, tl)
DEF_HELPER_3(vsumsws, void, avr, avr, avr) DEF_HELPER_4(vsumsws, void, env, avr, avr, avr)
DEF_HELPER_3(vsum2sws, void, avr, avr, avr) DEF_HELPER_4(vsum2sws, void, env, avr, avr, avr)
DEF_HELPER_3(vsum4sbs, void, avr, avr, avr) DEF_HELPER_4(vsum4sbs, void, env, avr, avr, avr)
DEF_HELPER_3(vsum4shs, void, avr, avr, avr) DEF_HELPER_4(vsum4shs, void, env, avr, avr, avr)
DEF_HELPER_3(vsum4ubs, void, avr, avr, avr) DEF_HELPER_4(vsum4ubs, void, env, avr, avr, avr)
DEF_HELPER_3(vaddfp, void, avr, avr, avr) DEF_HELPER_4(vaddfp, void, env, avr, avr, avr)
DEF_HELPER_3(vsubfp, void, avr, avr, avr) DEF_HELPER_4(vsubfp, void, env, avr, avr, avr)
DEF_HELPER_3(vmaxfp, void, avr, avr, avr) DEF_HELPER_4(vmaxfp, void, env, avr, avr, avr)
DEF_HELPER_3(vminfp, void, avr, avr, avr) DEF_HELPER_4(vminfp, void, env, avr, avr, avr)
DEF_HELPER_2(vrefp, void, avr, avr) DEF_HELPER_3(vrefp, void, env, avr, avr)
DEF_HELPER_2(vrsqrtefp, void, avr, avr) DEF_HELPER_3(vrsqrtefp, void, env, avr, avr)
DEF_HELPER_4(vmaddfp, void, avr, avr, avr, avr) DEF_HELPER_5(vmaddfp, void, env, avr, avr, avr, avr)
DEF_HELPER_4(vnmsubfp, void, avr, avr, avr, avr) DEF_HELPER_5(vnmsubfp, void, env, avr, avr, avr, avr)
DEF_HELPER_2(vexptefp, void, avr, avr) DEF_HELPER_3(vexptefp, void, env, avr, avr)
DEF_HELPER_2(vlogefp, void, avr, avr) DEF_HELPER_3(vlogefp, void, env, avr, avr)
DEF_HELPER_2(vrfim, void, avr, avr) DEF_HELPER_3(vrfim, void, env, avr, avr)
DEF_HELPER_2(vrfin, void, avr, avr) DEF_HELPER_3(vrfin, void, env, avr, avr)
DEF_HELPER_2(vrfip, void, avr, avr) DEF_HELPER_3(vrfip, void, env, avr, avr)
DEF_HELPER_2(vrfiz, void, avr, avr) DEF_HELPER_3(vrfiz, void, env, avr, avr)
DEF_HELPER_3(vcfux, void, avr, avr, i32) DEF_HELPER_4(vcfux, void, env, avr, avr, i32)
DEF_HELPER_3(vcfsx, void, avr, avr, i32) DEF_HELPER_4(vcfsx, void, env, avr, avr, i32)
DEF_HELPER_3(vctuxs, void, avr, avr, i32) DEF_HELPER_4(vctuxs, void, env, avr, avr, i32)
DEF_HELPER_3(vctsxs, void, avr, avr, i32) DEF_HELPER_4(vctsxs, void, env, avr, avr, i32)
DEF_HELPER_2(efscfsi, i32, env, i32) DEF_HELPER_2(efscfsi, i32, env, i32)
DEF_HELPER_2(efscfui, i32, env, i32) DEF_HELPER_2(efscfui, i32, env, i32)
...@@ -362,15 +362,15 @@ DEF_HELPER_1(msgsnd, void, tl) ...@@ -362,15 +362,15 @@ DEF_HELPER_1(msgsnd, void, tl)
DEF_HELPER_2(msgclr, void, env, tl) DEF_HELPER_2(msgclr, void, env, tl)
#endif #endif
DEF_HELPER_3(dlmzb, tl, tl, tl, i32) DEF_HELPER_4(dlmzb, tl, env, tl, tl, i32)
DEF_HELPER_FLAGS_1(clcs, TCG_CALL_CONST | TCG_CALL_PURE, tl, i32) DEF_HELPER_FLAGS_1(clcs, TCG_CALL_CONST | TCG_CALL_PURE, tl, i32)
#if !defined(CONFIG_USER_ONLY) #if !defined(CONFIG_USER_ONLY)
DEF_HELPER_1(rac, tl, tl) DEF_HELPER_1(rac, tl, tl)
#endif #endif
DEF_HELPER_2(div, tl, tl, tl) DEF_HELPER_3(div, tl, env, tl, tl)
DEF_HELPER_2(divo, tl, tl, tl) DEF_HELPER_3(divo, tl, env, tl, tl)
DEF_HELPER_2(divs, tl, tl, tl) DEF_HELPER_3(divs, tl, env, tl, tl)
DEF_HELPER_2(divso, tl, tl, tl) DEF_HELPER_3(divso, tl, env, tl, tl)
DEF_HELPER_1(load_dcr, tl, tl); DEF_HELPER_1(load_dcr, tl, tl);
DEF_HELPER_2(store_dcr, void, tl, tl) DEF_HELPER_2(store_dcr, void, tl, tl)
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
* License along with this library; if not, see <http://www.gnu.org/licenses/>. * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/ */
#include "cpu.h" #include "cpu.h"
#include "dyngen-exec.h"
#include "host-utils.h" #include "host-utils.h"
#include "helper.h" #include "helper.h"
...@@ -44,7 +43,7 @@ uint64_t helper_mulhdu(uint64_t arg1, uint64_t arg2) ...@@ -44,7 +43,7 @@ uint64_t helper_mulhdu(uint64_t arg1, uint64_t arg2)
return th; return th;
} }
uint64_t helper_mulldo(uint64_t arg1, uint64_t arg2) uint64_t helper_mulldo(CPUPPCState *env, uint64_t arg1, uint64_t arg2)
{ {
int64_t th; int64_t th;
uint64_t tl; uint64_t tl;
...@@ -73,7 +72,8 @@ target_ulong helper_cntlzd(target_ulong t) ...@@ -73,7 +72,8 @@ target_ulong helper_cntlzd(target_ulong t)
#endif #endif
/* shift right arithmetic helper */ /* shift right arithmetic helper */
target_ulong helper_sraw(target_ulong value, target_ulong shift) target_ulong helper_sraw(CPUPPCState *env, target_ulong value,
target_ulong shift)
{ {
int32_t ret; int32_t ret;
...@@ -102,7 +102,8 @@ target_ulong helper_sraw(target_ulong value, target_ulong shift) ...@@ -102,7 +102,8 @@ target_ulong helper_sraw(target_ulong value, target_ulong shift)
} }
#if defined(TARGET_PPC64) #if defined(TARGET_PPC64)
target_ulong helper_srad(target_ulong value, target_ulong shift) target_ulong helper_srad(CPUPPCState *env, target_ulong value,
target_ulong shift)
{ {
int64_t ret; int64_t ret;
...@@ -184,7 +185,7 @@ target_ulong helper_popcntw(target_ulong val) ...@@ -184,7 +185,7 @@ target_ulong helper_popcntw(target_ulong val)
/*****************************************************************************/ /*****************************************************************************/
/* PowerPC 601 specific instructions (POWER bridge) */ /* PowerPC 601 specific instructions (POWER bridge) */
target_ulong helper_div(target_ulong arg1, target_ulong arg2) target_ulong helper_div(CPUPPCState *env, target_ulong arg1, target_ulong arg2)
{ {
uint64_t tmp = (uint64_t)arg1 << 32 | env->spr[SPR_MQ]; uint64_t tmp = (uint64_t)arg1 << 32 | env->spr[SPR_MQ];
...@@ -198,7 +199,8 @@ target_ulong helper_div(target_ulong arg1, target_ulong arg2) ...@@ -198,7 +199,8 @@ target_ulong helper_div(target_ulong arg1, target_ulong arg2)
} }
} }
target_ulong helper_divo(target_ulong arg1, target_ulong arg2) target_ulong helper_divo(CPUPPCState *env, target_ulong arg1,
target_ulong arg2)
{ {
uint64_t tmp = (uint64_t)arg1 << 32 | env->spr[SPR_MQ]; uint64_t tmp = (uint64_t)arg1 << 32 | env->spr[SPR_MQ];
...@@ -219,7 +221,8 @@ target_ulong helper_divo(target_ulong arg1, target_ulong arg2) ...@@ -219,7 +221,8 @@ target_ulong helper_divo(target_ulong arg1, target_ulong arg2)
} }
} }
target_ulong helper_divs(target_ulong arg1, target_ulong arg2) target_ulong helper_divs(CPUPPCState *env, target_ulong arg1,
target_ulong arg2)
{ {
if (((int32_t)arg1 == INT32_MIN && (int32_t)arg2 == (int32_t)-1) || if (((int32_t)arg1 == INT32_MIN && (int32_t)arg2 == (int32_t)-1) ||
(int32_t)arg2 == 0) { (int32_t)arg2 == 0) {
...@@ -231,7 +234,8 @@ target_ulong helper_divs(target_ulong arg1, target_ulong arg2) ...@@ -231,7 +234,8 @@ target_ulong helper_divs(target_ulong arg1, target_ulong arg2)
} }
} }
target_ulong helper_divso(target_ulong arg1, target_ulong arg2) target_ulong helper_divso(CPUPPCState *env, target_ulong arg1,
target_ulong arg2)
{ {
if (((int32_t)arg1 == INT32_MIN && (int32_t)arg2 == (int32_t)-1) || if (((int32_t)arg1 == INT32_MIN && (int32_t)arg2 == (int32_t)-1) ||
(int32_t)arg2 == 0) { (int32_t)arg2 == 0) {
...@@ -361,7 +365,7 @@ void helper_lvsr(ppc_avr_t *r, target_ulong sh) ...@@ -361,7 +365,7 @@ void helper_lvsr(ppc_avr_t *r, target_ulong sh)
} }
} }
void helper_mtvscr(ppc_avr_t *r) void helper_mtvscr(CPUPPCState *env, ppc_avr_t *r)
{ {
#if defined(HOST_WORDS_BIGENDIAN) #if defined(HOST_WORDS_BIGENDIAN)
env->vscr = r->u32[3]; env->vscr = r->u32[3];
...@@ -399,7 +403,8 @@ VARITH(uwm, u32) ...@@ -399,7 +403,8 @@ VARITH(uwm, u32)
#undef VARITH #undef VARITH
#define VARITHFP(suffix, func) \ #define VARITHFP(suffix, func) \
void helper_v##suffix(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ void helper_v##suffix(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, \
ppc_avr_t *b) \
{ \ { \
int i; \ int i; \
\ \
...@@ -420,7 +425,8 @@ VARITHFP(subfp, float32_sub) ...@@ -420,7 +425,8 @@ VARITHFP(subfp, float32_sub)
} }
#define VARITHSAT_DO(name, op, optype, cvt, element) \ #define VARITHSAT_DO(name, op, optype, cvt, element) \
void helper_v##name(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ void helper_v##name(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, \
ppc_avr_t *b) \
{ \ { \
int sat = 0; \ int sat = 0; \
int i; \ int i; \
...@@ -481,7 +487,8 @@ VAVG(w, s32, int64_t, u32, uint64_t) ...@@ -481,7 +487,8 @@ VAVG(w, s32, int64_t, u32, uint64_t)
#undef VAVG #undef VAVG
#define VCF(suffix, cvt, element) \ #define VCF(suffix, cvt, element) \
void helper_vcf##suffix(ppc_avr_t *r, ppc_avr_t *b, uint32_t uim) \ void helper_vcf##suffix(CPUPPCState *env, ppc_avr_t *r, \
ppc_avr_t *b, uint32_t uim) \
{ \ { \
int i; \ int i; \
\ \
...@@ -495,7 +502,8 @@ VCF(sx, int32_to_float32, s32) ...@@ -495,7 +502,8 @@ VCF(sx, int32_to_float32, s32)
#undef VCF #undef VCF
#define VCMP_DO(suffix, compare, element, record) \ #define VCMP_DO(suffix, compare, element, record) \
void helper_vcmp##suffix(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ void helper_vcmp##suffix(CPUPPCState *env, ppc_avr_t *r, \
ppc_avr_t *a, ppc_avr_t *b) \
{ \ { \
uint32_t ones = (uint32_t)-1; \ uint32_t ones = (uint32_t)-1; \
uint32_t all = ones; \ uint32_t all = ones; \
...@@ -539,7 +547,8 @@ VCMP(gtsw, >, s32) ...@@ -539,7 +547,8 @@ VCMP(gtsw, >, s32)
#undef VCMP #undef VCMP
#define VCMPFP_DO(suffix, compare, order, record) \ #define VCMPFP_DO(suffix, compare, order, record) \
void helper_vcmp##suffix(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ void helper_vcmp##suffix(CPUPPCState *env, ppc_avr_t *r, \
ppc_avr_t *a, ppc_avr_t *b) \
{ \ { \
uint32_t ones = (uint32_t)-1; \ uint32_t ones = (uint32_t)-1; \
uint32_t all = ones; \ uint32_t all = ones; \
...@@ -574,8 +583,8 @@ VCMPFP(gtfp, ==, float_relation_greater) ...@@ -574,8 +583,8 @@ VCMPFP(gtfp, ==, float_relation_greater)
#undef VCMPFP_DO #undef VCMPFP_DO
#undef VCMPFP #undef VCMPFP
static inline void vcmpbfp_internal(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, static inline void vcmpbfp_internal(CPUPPCState *env, ppc_avr_t *r,
int record) ppc_avr_t *a, ppc_avr_t *b, int record)
{ {
int i; int i;
int all_in = 0; int all_in = 0;
...@@ -600,18 +609,20 @@ static inline void vcmpbfp_internal(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ...@@ -600,18 +609,20 @@ static inline void vcmpbfp_internal(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b,
} }
} }
void helper_vcmpbfp(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) void helper_vcmpbfp(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
{ {
vcmpbfp_internal(r, a, b, 0); vcmpbfp_internal(env, r, a, b, 0);
} }
void helper_vcmpbfp_dot(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) void helper_vcmpbfp_dot(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a,
ppc_avr_t *b)
{ {
vcmpbfp_internal(r, a, b, 1); vcmpbfp_internal(env, r, a, b, 1);
} }
#define VCT(suffix, satcvt, element) \ #define VCT(suffix, satcvt, element) \
void helper_vct##suffix(ppc_avr_t *r, ppc_avr_t *b, uint32_t uim) \ void helper_vct##suffix(CPUPPCState *env, ppc_avr_t *r, \
ppc_avr_t *b, uint32_t uim) \
{ \ { \
int i; \ int i; \
int sat = 0; \ int sat = 0; \
...@@ -638,7 +649,8 @@ VCT(uxs, cvtsduw, u32) ...@@ -638,7 +649,8 @@ VCT(uxs, cvtsduw, u32)
VCT(sxs, cvtsdsw, s32) VCT(sxs, cvtsdsw, s32)
#undef VCT #undef VCT
void helper_vmaddfp(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) void helper_vmaddfp(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b,
ppc_avr_t *c)
{ {
int i; int i;
...@@ -658,7 +670,8 @@ void helper_vmaddfp(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) ...@@ -658,7 +670,8 @@ void helper_vmaddfp(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c)
} }
} }
void helper_vmhaddshs(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) void helper_vmhaddshs(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a,
ppc_avr_t *b, ppc_avr_t *c)
{ {
int sat = 0; int sat = 0;
int i; int i;
...@@ -675,7 +688,8 @@ void helper_vmhaddshs(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) ...@@ -675,7 +688,8 @@ void helper_vmhaddshs(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c)
} }
} }
void helper_vmhraddshs(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) void helper_vmhraddshs(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a,
ppc_avr_t *b, ppc_avr_t *c)
{ {
int sat = 0; int sat = 0;
int i; int i;
...@@ -717,7 +731,8 @@ VMINMAX(uw, u32) ...@@ -717,7 +731,8 @@ VMINMAX(uw, u32)
#undef VMINMAX #undef VMINMAX
#define VMINMAXFP(suffix, rT, rF) \ #define VMINMAXFP(suffix, rT, rF) \
void helper_v##suffix(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ void helper_v##suffix(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, \
ppc_avr_t *b) \
{ \ { \
int i; \ int i; \
\ \
...@@ -784,7 +799,8 @@ VMRG(w, u32) ...@@ -784,7 +799,8 @@ VMRG(w, u32)
#undef MRGHI #undef MRGHI
#undef MRGLO #undef MRGLO
void helper_vmsummbm(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) void helper_vmsummbm(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a,
ppc_avr_t *b, ppc_avr_t *c)
{ {
int32_t prod[16]; int32_t prod[16];
int i; int i;
...@@ -799,7 +815,8 @@ void helper_vmsummbm(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) ...@@ -799,7 +815,8 @@ void helper_vmsummbm(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c)
} }
} }
void helper_vmsumshm(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) void helper_vmsumshm(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a,
ppc_avr_t *b, ppc_avr_t *c)
{ {
int32_t prod[8]; int32_t prod[8];
int i;