diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-05-17 14:29:58 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-05-17 14:29:58 +0200 |
| commit | d7127ccc3dad1aab55676f31d26d5ec3799ca8f1 (patch) | |
| tree | 93db7fc23359c54a12a224efeba9f6a4822a779a /src/emu | |
| parent | 04e960b0dabc7f8bf77d532b57c1156ff10e2735 (diff) | |
| download | box64-d7127ccc3dad1aab55676f31d26d5ec3799ca8f1.tar.gz box64-d7127ccc3dad1aab55676f31d26d5ec3799ca8f1.zip | |
[ARM64_DYNAREC] Improved stability of RCL/RCR and added 32/64 bits with constant emiter
Diffstat (limited to 'src/emu')
| -rw-r--r-- | src/emu/x64run_private.c | 32 |
1 files changed, 1 insertions, 31 deletions
diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c index 016092b3..06f20118 100644 --- a/src/emu/x64run_private.c +++ b/src/emu/x64run_private.c @@ -1051,37 +1051,7 @@ void UpdateFlags(x64emu_t *emu) } CONDITIONAL_SET_FLAG(emu->res.u64 & (1L << 63), F_CF); break; - case d_rcl8: - cnt = emu->op2.u8%9; - CONDITIONAL_SET_FLAG(emu->op1.u8>>(9-cnt) & 1, F_CF); - // should for cnt==1 - CONDITIONAL_SET_FLAG(((emu->res.u8>>7) ^ ACCESS_FLAG(F_CF)) & 1, F_OF); - break; - case d_rcr8: - cnt = emu->op2.u8%9; - // should for cnt==1, using "before" CF - CONDITIONAL_SET_FLAG(((emu->res.u8>>7) ^ ACCESS_FLAG(F_CF)) & 1, F_OF); - // new CF - CONDITIONAL_SET_FLAG(((cnt==1)?emu->op1.u8:(emu->op1.u8>>(cnt-1))) & 1, F_CF); - break; - case d_rcl16: - cnt = emu->op2.u16%17; - CONDITIONAL_SET_FLAG(emu->op1.u16>>(17-cnt) & 1, F_CF); - // should for cnt==1 - CONDITIONAL_SET_FLAG(((emu->res.u16>>15) ^ ACCESS_FLAG(F_CF)) & 1, F_OF); - break; - case d_rcr16: - cnt = emu->op2.u16%17; - // should for cnt==1, using "before" CF - CONDITIONAL_SET_FLAG(((emu->res.u16>>15) ^ ACCESS_FLAG(F_CF)) & 1, F_OF); - // new CF - CONDITIONAL_SET_FLAG(((cnt==1)?emu->op1.u16:(emu->op1.u16>>(cnt-1))) & 1, F_CF); - break; - - case d_rcl32: - case d_rcl64: - case d_rcr32: - case d_rcr64: + case d_unknown: printf_log(LOG_NONE, "Box64: %p trying to evaluate Unknown deferred Flags\n", (void*)R_RIP); break; |