X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=target-i386%2Fops_mem.h;h=7ec84dde8948c18ae8021b9624d1047e764af10e;hb=7385ac0ba2456159a52b9b2cbb5f6c71921d0c23;hp=284ab71af4ffe8a3ad9ba1d5c1387d2735ebc9e8;hpb=14ce26e755135e80f3726d42a5a887723d615291;p=qemu diff --git a/target-i386/ops_mem.h b/target-i386/ops_mem.h index 284ab71..7ec84dd 100644 --- a/target-i386/ops_mem.h +++ b/target-i386/ops_mem.h @@ -45,58 +45,78 @@ void OPPROTO glue(glue(op_ldsw, MEMSUFFIX), _T1_A0)(void) void OPPROTO glue(glue(op_ldl, MEMSUFFIX), _T1_A0)(void) { - T1 = glue(ldl, MEMSUFFIX)(A0); + T1 = (uint32_t)glue(ldl, MEMSUFFIX)(A0); } void OPPROTO glue(glue(op_stb, MEMSUFFIX), _T0_A0)(void) { glue(stb, MEMSUFFIX)(A0, T0); + FORCE_RET(); } void OPPROTO glue(glue(op_stw, MEMSUFFIX), _T0_A0)(void) { glue(stw, MEMSUFFIX)(A0, T0); + FORCE_RET(); } void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T0_A0)(void) { glue(stl, MEMSUFFIX)(A0, T0); + FORCE_RET(); } #if 0 void OPPROTO glue(glue(op_stb, MEMSUFFIX), _T1_A0)(void) { glue(stb, MEMSUFFIX)(A0, T1); + FORCE_RET(); } #endif void OPPROTO glue(glue(op_stw, MEMSUFFIX), _T1_A0)(void) { glue(stw, MEMSUFFIX)(A0, T1); + FORCE_RET(); } void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T1_A0)(void) { glue(stl, MEMSUFFIX)(A0, T1); + FORCE_RET(); +} + +/* SSE/MMX support */ +void OPPROTO glue(glue(op_ldq, MEMSUFFIX), _env_A0)(void) +{ + uint64_t *p; + p = (uint64_t *)((char *)env + PARAM1); + *p = glue(ldq, MEMSUFFIX)(A0); +} + +void OPPROTO glue(glue(op_stq, MEMSUFFIX), _env_A0)(void) +{ + uint64_t *p; + p = (uint64_t *)((char *)env + PARAM1); + glue(stq, MEMSUFFIX)(A0, *p); + FORCE_RET(); } -/* SSE support */ void OPPROTO glue(glue(op_ldo, MEMSUFFIX), _env_A0)(void) { XMMReg *p; p = (XMMReg *)((char *)env + PARAM1); - /* XXX: host endianness ? */ - p->u.q[0] = glue(ldq, MEMSUFFIX)(A0); - p->u.q[1] = glue(ldq, MEMSUFFIX)(A0 + 8); + p->XMM_Q(0) = glue(ldq, MEMSUFFIX)(A0); + p->XMM_Q(1) = glue(ldq, MEMSUFFIX)(A0 + 8); } void OPPROTO glue(glue(op_sto, MEMSUFFIX), _env_A0)(void) { XMMReg *p; p = (XMMReg *)((char *)env + PARAM1); - /* XXX: host endianness ? */ - glue(stq, MEMSUFFIX)(A0, p->u.q[0]); - glue(stq, MEMSUFFIX)(A0 + 8, p->u.q[1]); + glue(stq, MEMSUFFIX)(A0, p->XMM_Q(0)); + glue(stq, MEMSUFFIX)(A0 + 8, p->XMM_Q(1)); + FORCE_RET(); } #ifdef TARGET_X86_64 @@ -123,11 +143,13 @@ void OPPROTO glue(glue(op_ldq, MEMSUFFIX), _T1_A0)(void) void OPPROTO glue(glue(op_stq, MEMSUFFIX), _T0_A0)(void) { glue(stq, MEMSUFFIX)(A0, T0); + FORCE_RET(); } void OPPROTO glue(glue(op_stq, MEMSUFFIX), _T1_A0)(void) { glue(stq, MEMSUFFIX)(A0, T1); + FORCE_RET(); } #endif