mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-09 00:25:35 +00:00
support for YMM registers ymm8-ymm15 (#1079)
Backports 55d8d073bd80935e807289ae2ff6161145a2afb6 from qemu
This commit is contained in:
parent
5de5b69344
commit
4b94a8cc44
|
@ -341,7 +341,7 @@ class Uc(object):
|
||||||
if status != uc.UC_ERR_OK:
|
if status != uc.UC_ERR_OK:
|
||||||
raise UcError(status)
|
raise UcError(status)
|
||||||
return reg.low_qword | (reg.high_qword << 64)
|
return reg.low_qword | (reg.high_qword << 64)
|
||||||
if reg_id in range(x86_const.UC_X86_REG_YMM0, x86_const.UC_X86_REG_YMM0+8):
|
if reg_id in range(x86_const.UC_X86_REG_YMM0, x86_const.UC_X86_REG_YMM0+16):
|
||||||
reg = uc_x86_ymm()
|
reg = uc_x86_ymm()
|
||||||
status = _uc.uc_reg_read(self._uch, reg_id, ctypes.byref(reg))
|
status = _uc.uc_reg_read(self._uch, reg_id, ctypes.byref(reg))
|
||||||
if status != uc.UC_ERR_OK:
|
if status != uc.UC_ERR_OK:
|
||||||
|
@ -392,7 +392,7 @@ class Uc(object):
|
||||||
reg = uc_x86_xmm()
|
reg = uc_x86_xmm()
|
||||||
reg.low_qword = value & 0xffffffffffffffff
|
reg.low_qword = value & 0xffffffffffffffff
|
||||||
reg.high_qword = value >> 64
|
reg.high_qword = value >> 64
|
||||||
if reg_id in range(x86_const.UC_X86_REG_YMM0, x86_const.UC_X86_REG_YMM0+8):
|
if reg_id in range(x86_const.UC_X86_REG_YMM0, x86_const.UC_X86_REG_YMM0+16):
|
||||||
reg = uc_x86_ymm()
|
reg = uc_x86_ymm()
|
||||||
reg.first_qword = value & 0xffffffffffffffff
|
reg.first_qword = value & 0xffffffffffffffff
|
||||||
reg.second_qword = (value >> 64) & 0xffffffffffffffff
|
reg.second_qword = (value >> 64) & 0xffffffffffffffff
|
||||||
|
|
|
@ -296,6 +296,14 @@ int x86_reg_read(struct uc_struct *uc, unsigned int *regs, void **vals, int coun
|
||||||
case UC_X86_REG_YMM5:
|
case UC_X86_REG_YMM5:
|
||||||
case UC_X86_REG_YMM6:
|
case UC_X86_REG_YMM6:
|
||||||
case UC_X86_REG_YMM7:
|
case UC_X86_REG_YMM7:
|
||||||
|
case UC_X86_REG_YMM8:
|
||||||
|
case UC_X86_REG_YMM9:
|
||||||
|
case UC_X86_REG_YMM10:
|
||||||
|
case UC_X86_REG_YMM11:
|
||||||
|
case UC_X86_REG_YMM12:
|
||||||
|
case UC_X86_REG_YMM13:
|
||||||
|
case UC_X86_REG_YMM14:
|
||||||
|
case UC_X86_REG_YMM15:
|
||||||
{
|
{
|
||||||
float64 *dst = (float64*)value;
|
float64 *dst = (float64*)value;
|
||||||
ZMMReg *reg = &state->xmm_regs[regid - UC_X86_REG_XMM0];
|
ZMMReg *reg = &state->xmm_regs[regid - UC_X86_REG_XMM0];
|
||||||
|
@ -841,6 +849,14 @@ int x86_reg_write(struct uc_struct *uc, unsigned int *regs, void *const *vals, i
|
||||||
case UC_X86_REG_YMM5:
|
case UC_X86_REG_YMM5:
|
||||||
case UC_X86_REG_YMM6:
|
case UC_X86_REG_YMM6:
|
||||||
case UC_X86_REG_YMM7:
|
case UC_X86_REG_YMM7:
|
||||||
|
case UC_X86_REG_YMM8:
|
||||||
|
case UC_X86_REG_YMM9:
|
||||||
|
case UC_X86_REG_YMM10:
|
||||||
|
case UC_X86_REG_YMM11:
|
||||||
|
case UC_X86_REG_YMM12:
|
||||||
|
case UC_X86_REG_YMM13:
|
||||||
|
case UC_X86_REG_YMM14:
|
||||||
|
case UC_X86_REG_YMM15:
|
||||||
{
|
{
|
||||||
float64 *src = (float64*)value;
|
float64 *src = (float64*)value;
|
||||||
ZMMReg *reg = &state->xmm_regs[regid - UC_X86_REG_XMM0];
|
ZMMReg *reg = &state->xmm_regs[regid - UC_X86_REG_XMM0];
|
||||||
|
|
Loading…
Reference in a new issue