diff options
Diffstat (limited to 'src/dynarec/la64/dynarec_la64_0f.c')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_0f.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c index 8c0e633c..0c40f766 100644 --- a/src/dynarec/la64/dynarec_la64_0f.c +++ b/src/dynarec/la64/dynarec_la64_0f.c @@ -708,6 +708,19 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni } else switch ((nextop >> 3) & 7) { + case 0: + INST_NAME("FXSAVE Ed"); + MESSAGE(LOG_DUMP, "Need Optimization\n"); + SKIPTEST(x1); + fpu_purgecache(dyn, ninst, 0, x1, x2, x3); + if (MODREG) { + DEFAULT; + } else { + addr = geted(dyn, addr, ninst, nextop, &ed, x1, x3, &fixedaddress, rex, NULL, 0, 0); + if (ed != x1) { MV(x1, ed); } + CALL(rex.w ? ((void*)fpu_fxsave64) : ((void*)fpu_fxsave32), -1); + } + break; case 2: INST_NAME("LDMXCSR Md"); GETED(0); |