about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index 8544d805..1c1c2c98 100644
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -2337,7 +2337,8 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xC7:

             // rep has no impact here

             nextop = F8;

-            switch((nextop>>3)&7) {

+            if(MODREG) { DEFAULT; }

+            else switch((nextop>>3)&7) {

             case 1:

                 INST_NAME("CMPXCHG8B Gq, Eq");

                 SETFLAGS(X_ZF, SF_SUBSET);

@@ -2370,10 +2371,10 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 UDF(0);

                 break;

             case 6:

-                INST_NAME("RNDR Ed");

+                INST_NAME("RDRAND Ed");

                 SETFLAGS(X_ALL, SF_SET_DF);

                 SET_DFNONE(x1);

-                IFX(F_OF|F_SF|F_ZF|F_PF|F_AF) {

+                IFX(X_OF|X_SF|X_ZF|X_PF|X_AF) {

                     MOV32w(x1, (1<<F_OF)|(1<<F_SF)|(1<<F_ZF)|(1<<F_PF)|(1<<F_AF));

                     BICw(xFlags, xFlags, x1);

                 }