diff options
| author | xctan <xctan@cirno.icu> | 2023-03-16 23:06:38 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-16 16:06:38 +0100 |
| commit | fa4584555d8d6bdc1ae7e16eff5bb40ffc07d124 (patch) | |
| tree | 3c37fbf43c9d5c6abde06cb7d55a97bde2dc23a7 /src | |
| parent | 4b2a340bc72293f9bb6b9c9093759ab6ec0710cb (diff) | |
| download | box64-fa4584555d8d6bdc1ae7e16eff5bb40ffc07d124.tar.gz box64-fa4584555d8d6bdc1ae7e16eff5bb40ffc07d124.zip | |
[RV64_DYNAREC] Added 68 PUSH opcode (#575)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_00.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00.c b/src/dynarec/rv64/dynarec_rv64_00.c index bcd59c0b..58811afa 100644 --- a/src/dynarec/rv64/dynarec_rv64_00.c +++ b/src/dynarec/rv64/dynarec_rv64_00.c @@ -130,6 +130,20 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni } break; + case 0x68: + INST_NAME("PUSH Id"); + i64 = F32S; + if(PK(0)==0xC3) { + MESSAGE(LOG_DUMP, "PUSH then RET, using indirect\n"); + TABLE64(x3, addr-4); + LW(x1, x3, 0); + PUSH1(x1); + } else { + MOV64x(x3, i64); + PUSH1(x3); + } + break; + #define GO(GETFLAGS, NO, YES, F) \ READFLAGS(F); \ i8 = F8S; \ @@ -159,7 +173,7 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni GOCOND(0x70, "J", "ib"); #undef GO - + case 0x80: nextop = F8; switch((nextop>>3)&7) { |