diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-02-25 14:34:59 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-02-25 14:34:59 +0100 |
| commit | ff6cc844821439a8f50b68b27e6f1ac5264579c8 (patch) | |
| tree | 70536275fb135002131b86d9db84c5167bd6f50b /src | |
| parent | 02caee0c02c75e035ce976d1ffdb29baa6e0a6c5 (diff) | |
| download | box64-ff6cc844821439a8f50b68b27e6f1ac5264579c8.tar.gz box64-ff6cc844821439a8f50b68b27e6f1ac5264579c8.zip | |
Added CA opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c index db7aabc3..7fd8e9bb 100644 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -1407,7 +1407,20 @@ x64emurun: R_RSP = R_RBP; R_RBP = rex.is32bits?Pop32(emu):Pop64(emu); break; - + case 0xCA: /* FAR RETN */ + tmp16u = F16; + if(rex.is32bits) { + addr = Pop32(emu); + emu->segs[_CS] = Pop32(emu); // no check, no use.... + } else { + addr = Pop64(emu); + emu->segs[_CS] = Pop64(emu); // no check, no use.... + } + emu->segs_serial[_CS] = 0; + R_RSP += tmp16u; + // need to check status of CS register! + STEP2; + break; case 0xCB: /* FAR RET */ if(rex.is32bits) { addr = Pop32(emu); |