jak-project/game/mips2c/jak3_functions/nav_engine.cpp
water111 807ca7465f
fix c++ compiler warnings, extract_merc assert (#3488)
Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com>
2024-05-03 17:29:18 +01:00

539 lines
27 KiB
C++

//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace method_21_nav_engine {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
c->lwu(v1, 80, a0); // lwu v1, 80(a0)
c->lwu(v1, 4, v1); // lwu v1, 4(v1)
c->lwu(a2, 8, a0); // lwu a2, 8(a0)
c->lwu(a2, 4, a2); // lwu a2, 4(a2)
c->dsubu(v1, v1, a2); // dsubu v1, v1, a2
c->addiu(a2, r0, 0); // addiu a2, r0, 0
//beq r0, r0, L30 // beq r0, r0, L30
// nop // sll r0, r0, 0
goto block_4; // branch always
block_1:
c->lwu(a3, 4, a1); // lwu a3, 4(a1)
c->addiu(t0, r0, 288); // addiu t0, r0, 288
c->mult3(t0, t0, a2); // mult3 t0, t0, a2
c->daddu(a3, a3, t0); // daddu a3, a3, t0
c->daddiu(t0, a3, 112); // daddiu t0, a3, 112
c->lwu(t1, 8, a3); // lwu t1, 8(a3)
bc = c->sgpr64(s7) == c->sgpr64(t1); // beq s7, t1, L29
c->mov64(t1, s7); // or t1, s7, r0
if (bc) {goto block_3;} // branch non-likely
c->lwu(t1, 76, a0); // lwu t1, 76(a0)
c->daddiu(t1, t1, 32); // daddiu t1, t1, 32
c->sw(t1, 56, a3); // sw t1, 56(a3)
c->lwu(t1, 80, a0); // lwu t1, 80(a0)
c->sw(t1, 124, a3); // sw t1, 124(a3)
c->lwu(t1, 0, a1); // lwu t1, 0(a1)
c->addiu(t2, r0, 288); // addiu t2, r0, 288
c->mult3(t2, t2, a2); // mult3 t2, t2, a2
c->daddu(t1, t1, t2); // daddu t1, t1, t2
c->sw(t1, 4, t0); // sw t1, 4(t0)
c->mov64(t1, v1); // or t1, v1, r0
c->lw(t2, 16, t0); // lw t2, 16(t0)
c->daddu(t3, t2, t1); // daddu t3, t2, t1
c->xor_(t4, t2, s7); // xor t4, t2, s7
c->sltiu(t4, t4, 1); // sltiu t4, t4, 1
c->movz(t2, t3, t4); // movz t2, t3, t4
c->sw(t2, 16, t0); // sw t2, 16(t0)
c->lw(t2, 28, t0); // lw t2, 28(t0)
c->daddu(t3, t2, t1); // daddu t3, t2, t1
c->xor_(t4, t2, s7); // xor t4, t2, s7
c->sltiu(t4, t4, 1); // sltiu t4, t4, 1
c->movz(t2, t3, t4); // movz t2, t3, t4
c->sw(t2, 28, t0); // sw t2, 28(t0)
c->lw(t2, 24, t0); // lw t2, 24(t0)
c->daddu(t3, t2, t1); // daddu t3, t2, t1
c->xor_(t4, t2, s7); // xor t4, t2, s7
c->sltiu(t4, t4, 1); // sltiu t4, t4, 1
c->movz(t2, t3, t4); // movz t2, t3, t4
c->sw(t2, 24, t0); // sw t2, 24(t0)
c->lw(t2, 20, t0); // lw t2, 20(t0)
c->daddu(t1, t2, t1); // daddu t1, t2, t1
c->xor_(t3, t2, s7); // xor t3, t2, s7
c->sltiu(t3, t3, 1); // sltiu t3, t3, 1
c->movz(t2, t1, t3); // movz t2, t1, t3
c->sw(t2, 20, t0); // sw t2, 20(t0)
c->gprs[t0].du64[0] = 0; // or t0, r0, r0
c->lwu(t0, 0, a1); // lwu t0, 0(a1)
c->addiu(t1, r0, 288); // addiu t1, r0, 288
c->mult3(t1, t1, a2); // mult3 t1, t1, a2
c->daddu(t1, t0, t1); // daddu t1, t0, t1
c->lwu(a3, 8, a3); // lwu a3, 8(a3)
c->sw(t1, 140, a3); // sw t1, 140(a3)
block_3:
c->daddiu(a2, a2, 1); // daddiu a2, a2, 1
block_4:
c->lb(a3, 14, a1); // lb a3, 14(a1)
c->slt(a3, a2, a3); // slt a3, a2, a3
bc = c->sgpr64(a3) != 0; // bne a3, r0, L28
// nop // sll r0, r0, 0
if (bc) {goto block_1;} // branch non-likely
c->mov64(v1, s7); // or v1, s7, r0
c->mov64(v1, s7); // or v1, s7, r0
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
gLinkedFunctionTable.reg("(method 21 nav-engine)", execute, 0);
}
} // namespace method_21_nav_engine
} // namespace Mips2C
//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace method_20_nav_engine {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
c->lwu(v1, 8, a0); // lwu v1, 8(a0)
c->lwu(v1, 4, v1); // lwu v1, 4(v1)
c->lwu(a2, 80, a0); // lwu a2, 80(a0)
c->lwu(a2, 4, a2); // lwu a2, 4(a2)
c->dsubu(v1, v1, a2); // dsubu v1, v1, a2
c->addiu(a2, r0, 0); // addiu a2, r0, 0
//beq r0, r0, L35 // beq r0, r0, L35
// nop // sll r0, r0, 0
goto block_6; // branch always
block_1:
c->lwu(a3, 4, a1); // lwu a3, 4(a1)
c->addiu(t0, r0, 288); // addiu t0, r0, 288
c->mult3(t0, t0, a2); // mult3 t0, t0, a2
c->daddu(a3, a3, t0); // daddu a3, a3, t0
c->daddiu(t0, a3, 112); // daddiu t0, a3, 112
c->lwu(t1, 8, a3); // lwu t1, 8(a3)
bc = c->sgpr64(s7) == c->sgpr64(t1); // beq s7, t1, L34
c->mov64(t1, s7); // or t1, s7, r0
if (bc) {goto block_5;} // branch non-likely
c->addiu(t1, r0, -257); // addiu t1, r0, -257
c->lwu(t2, 0, a3); // lwu t2, 0(a3)
c->and_(t1, t1, t2); // and t1, t1, t2
c->sw(t1, 0, a3); // sw t1, 0(a3)
c->lwu(t1, 8, a3); // lwu t1, 8(a3)
c->lwu(t1, 4, t1); // lwu t1, 4(t1)
c->andi(t1, t1, 2048); // andi t1, t1, 2048
bc = c->sgpr64(t1) == 0; // beq t1, r0, L33
c->mov64(t1, s7); // or t1, s7, r0
if (bc) {goto block_4;} // branch non-likely
c->lwu(t1, 0, a3); // lwu t1, 0(a3)
c->ori(t1, t1, 256); // ori t1, t1, 256
c->sw(t1, 0, a3); // sw t1, 0(a3)
block_4:
c->lwu(t1, 4, a0); // lwu t1, 4(a0)
c->daddiu(t1, t1, 32); // daddiu t1, t1, 32
c->sw(t1, 56, a3); // sw t1, 56(a3)
c->lwu(t1, 8, a0); // lwu t1, 8(a0)
c->sw(t1, 124, a3); // sw t1, 124(a3)
c->mov64(t1, v1); // or t1, v1, r0
c->lw(t2, 16, t0); // lw t2, 16(t0)
c->daddu(t3, t2, t1); // daddu t3, t2, t1
c->xor_(t4, t2, s7); // xor t4, t2, s7
c->slti(t4, t4, 1); // sltiu t4, t4, 1
c->movz(t2, t3, t4); // movz t2, t3, t4
c->sw(t2, 16, t0); // sw t2, 16(t0)
c->lw(t2, 28, t0); // lw t2, 28(t0)
c->daddu(t3, t2, t1); // daddu t3, t2, t1
c->xor_(t4, t2, s7); // xor t4, t2, s7
c->slti(t4, t4, 1); // sltiu t4, t4, 1
c->movz(t2, t3, t4); // movz t2, t3, t4
c->sw(t2, 28, t0); // sw t2, 28(t0)
c->lw(t2, 24, t0); // lw t2, 24(t0)
c->daddu(t3, t2, t1); // daddu t3, t2, t1
c->xor_(t4, t2, s7); // xor t4, t2, s7
c->slti(t4, t4, 1); // sltiu t4, t4, 1
c->movz(t2, t3, t4); // movz t2, t3, t4
c->sw(t2, 24, t0); // sw t2, 24(t0)
c->lw(t2, 20, t0); // lw t2, 20(t0)
c->daddu(t1, t2, t1); // daddu t1, t2, t1
c->xor_(t3, t2, s7); // xor t3, t2, s7
c->slti(t3, t3, 1); // sltiu t3, t3, 1
c->movz(t2, t1, t3); // movz t2, t1, t3
c->sw(t2, 20, t0); // sw t2, 20(t0)
c->gprs[t0].du64[0] = 0; // or t0, r0, r0
c->lwu(a3, 8, a3); // lwu a3, 8(a3)
c->sw(s7, 140, a3); // sw s7, 140(a3)
c->mov64(t1, s7); // or t1, s7, r0
block_5:
c->daddiu(a2, a2, 1); // daddiu a2, a2, 1
block_6:
c->lb(a3, 14, a1); // lb a3, 14(a1)
c->slt(a3, a2, a3); // slt a3, a2, a3
bc = c->sgpr64(a3) != 0; // bne a3, r0, L32
// nop // sll r0, r0, 0
if (bc) {goto block_1;} // branch non-likely
c->mov64(v1, s7); // or v1, s7, r0
c->mov64(v1, s7); // or v1, s7, r0
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
gLinkedFunctionTable.reg("(method 20 nav-engine)", execute, 0);
}
} // namespace method_20_nav_engine
} // namespace Mips2C
//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace method_18_nav_engine {
struct Cache {
void* fake_scratchpad_data; // *fake-scratchpad-data*
} cache;
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
// bool bc = false;
c->lwu(a2, 0, a1); // lwu a2, 0(a1)
c->lwu(v1, 4, a1); // lwu v1, 4(a1)
c->lwu(a0, 8, a1); // lwu a0, 8(a1)
c->lui(a1, 4096); // lui a1, 4096
c->ori(a1, a1, 53248); // ori a1, a1, 53248
c->addiu(a3, r0, 0); // addiu a3, r0, 0
// block_1:
// c->lw(a3, 0, a1); // lw a3, 0(a1)
// c->andi(a3, a3, 256); // andi a3, a3, 256
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// bc = c->sgpr64(a3) != 0; // bne a3, r0, L43
// // nop // sll r0, r0, 0
// if (bc) {goto block_1;} // branch non-likely
// Unknown instr: sync.l
c->lui(a3, 4095); // lui a3, 4095
c->ori(a3, a3, 65535); // ori a3, a3, 65535
c->and_(a2, a3, a2); // and a2, a3, a2
// c->sw(a2, 16, a1); // sw a2, 16(a1)
u32 madr = c->sgpr64(a2);
c->lui(a2, 4095); // lui a2, 4095
c->ori(a2, a2, 65535); // ori a2, a2, 65535
c->and_(v1, a2, v1); // and v1, a2, v1
// c->sw(v1, 128, a1); // sw v1, 128(a1)
u32 sadr = c->sgpr64(v1);
// c->sw(a0, 32, a1); // sw a0, 32(a1)
u32 qwc = c->sgpr64(a0);
// Unknown instr: sync.l
c->addiu(v1, r0, 256); // addiu v1, r0, 256
// c->sw(v1, 0, a1); // sw v1, 0(a1)
spad_from_dma(cache.fake_scratchpad_data, madr, sadr, qwc);
// Unknown instr: sync.l
c->gprs[v1].du64[0] = 0; // or v1, r0, r0
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
gLinkedFunctionTable.reg("(method 18 nav-engine)", execute, 0);
cache.fake_scratchpad_data = intern_from_c(-1, 0, "*fake-scratchpad-data*").c();
}
} // namespace method_18_nav_engine
} // namespace Mips2C
//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace method_17_nav_engine {
struct Cache {
void* fake_scratchpad_data; // *fake-scratchpad-data*
} cache;
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
c->lwu(v1, 4, a1); // lwu v1, 4(a1)
c->lwu(a2, 0, a1); // lwu a2, 0(a1)
c->lwu(a0, 8, a1); // lwu a0, 8(a1)
c->lui(a1, 4096); // lui a1, 4096
c->ori(a1, a1, 54272); // ori a1, a1, 54272
c->addiu(a3, r0, 0); // addiu a3, r0, 0
// block_1:
// c->lw(a3, 0, a1); // lw a3, 0(a1)
// c->andi(a3, a3, 256); // andi a3, a3, 256
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// bc = c->sgpr64(a3) != 0; // bne a3, r0, L45
// // nop // sll r0, r0, 0
// if (bc) {goto block_1;} // branch non-likely
// Unknown instr: sync.l
c->lui(a3, 4095); // lui a3, 4095
c->ori(a3, a3, 65535); // ori a3, a3, 65535
c->and_(a2, a3, a2); // and a2, a3, a2
// c->sw(a2, 16, a1); // sw a2, 16(a1)
u32 madr = c->sgpr64(a2);
c->lui(a2, 4095); // lui a2, 4095
c->ori(a2, a2, 65535); // ori a2, a2, 65535
c->and_(v1, a2, v1); // and v1, a2, v1
// c->sw(v1, 128, a1); // sw v1, 128(a1)
u32 sadr = c->sgpr64(v1);
// c->sw(a0, 32, a1); // sw a0, 32(a1)
u32 qwc = c->sgpr64(a0);
// Unknown instr: sync.l
c->addiu(v1, r0, 256); // addiu v1, r0, 256
// c->sw(v1, 0, a1); // sw v1, 0(a1)
spad_to_dma(cache.fake_scratchpad_data, madr, sadr, qwc);
// Unknown instr: sync.l
c->gprs[v1].du64[0] = 0; // or v1, r0, r0
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
gLinkedFunctionTable.reg("(method 17 nav-engine)", execute, 0);
cache.fake_scratchpad_data = intern_from_c(-1, 0, "*fake-scratchpad-data*").c();
}
} // namespace method_17_nav_engine
} // namespace Mips2C
//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace nav_state_patch_pointers {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
c->lw(v1, 16, a0); // lw v1, 16(a0)
c->daddu(a2, v1, a1); // daddu a2, v1, a1
c->xor_(a3, v1, s7); // xor a3, v1, s7
c->sltiu(a3, a3, 1); // sltiu a3, a3, 1
c->movz(v1, a2, a3); // movz v1, a2, a3
c->sw(v1, 16, a0); // sw v1, 16(a0)
c->lw(v1, 28, a0); // lw v1, 28(a0)
c->daddu(a2, v1, a1); // daddu a2, v1, a1
c->xor_(a3, v1, s7); // xor a3, v1, s7
c->sltiu(a3, a3, 1); // sltiu a3, a3, 1
c->movz(v1, a2, a3); // movz v1, a2, a3
c->sw(v1, 28, a0); // sw v1, 28(a0)
c->lw(v1, 24, a0); // lw v1, 24(a0)
c->daddu(a2, v1, a1); // daddu a2, v1, a1
c->xor_(a3, v1, s7); // xor a3, v1, s7
c->sltiu(a3, a3, 1); // sltiu a3, a3, 1
c->movz(v1, a2, a3); // movz v1, a2, a3
c->sw(v1, 24, a0); // sw v1, 24(a0)
c->lw(v1, 20, a0); // lw v1, 20(a0)
c->daddu(a1, v1, a1); // daddu a1, v1, a1
c->xor_(a2, v1, s7); // xor a2, v1, s7
c->sltiu(a2, a2, 1); // sltiu a2, a2, 1
c->movz(v1, a1, a2); // movz v1, a1, a2
c->sw(v1, 20, a0); // sw v1, 20(a0)
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
gLinkedFunctionTable.reg("nav-state-patch-pointers", execute, 0);
}
} // namespace nav_state_patch_pointers
} // namespace Mips2C
//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace nav_dma_send_from_spr_no_flush {
struct Cache {
void* fake_scratchpad_data; // *fake-scratchpad-data*
} cache;
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
c->lui(v1, 4096); // lui v1, 4096
c->ori(v1, v1, 53248); // ori v1, v1, 53248
c->addiu(a3, r0, 0); // addiu a3, r0, 0
// block_1:
// c->lw(a3, 0, v1); // lw a3, 0(v1)
// c->andi(a3, a3, 256); // andi a3, a3, 256
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// bc = c->sgpr64(a3) != 0; // bne a3, r0, L49
// // nop // sll r0, r0, 0
// if (bc) {goto block_1;} // branch non-likely
// Unknown instr: sync.l
c->lui(a3, 4095); // lui a3, 4095
c->ori(a3, a3, 65535); // ori a3, a3, 65535
c->and_(a0, a3, a0); // and a0, a3, a0
// c->sw(a0, 16, v1); // sw a0, 16(v1)
u32 madr = c->sgpr64(a0);
c->lui(a0, 4095); // lui a0, 4095
c->ori(a0, a0, 65535); // ori a0, a0, 65535
c->and_(a0, a0, a1); // and a0, a0, a1
// c->sw(a0, 128, v1); // sw a0, 128(v1)
u32 sadr = c->sgpr64(a0);
// c->sw(a2, 32, v1); // sw a2, 32(v1)
u32 qwc = c->sgpr64(a2);
// Unknown instr: sync.l
c->addiu(a0, r0, 256); // addiu a0, r0, 256
// c->sw(a0, 0, v1); // sw a0, 0(v1)
spad_from_dma(cache.fake_scratchpad_data, madr, sadr, qwc);
// Unknown instr: sync.l
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
cache.fake_scratchpad_data = intern_from_c(-1, 0, "*fake-scratchpad-data*").c();
gLinkedFunctionTable.reg("nav-dma-send-from-spr-no-flush", execute, 0);
}
} // namespace nav_dma_send_from_spr_no_flush
} // namespace Mips2C
//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak3/kscheme.h"
using ::jak3::intern_from_c;
namespace Mips2C::jak3 {
namespace nav_dma_send_to_spr_no_flush {
struct Cache {
void* fake_scratchpad_data; // *fake-scratchpad-data*
} cache;
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
c->lui(v1, 4096); // lui v1, 4096
c->ori(v1, v1, 54272); // ori v1, v1, 54272
c->addiu(a3, r0, 0); // addiu a3, r0, 0
// block_1:
// c->lw(a3, 0, v1); // lw a3, 0(v1)
// c->andi(a3, a3, 256); // andi a3, a3, 256
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// // nop // sll r0, r0, 0
// bc = c->sgpr64(a3) != 0; // bne a3, r0, L51
// // nop // sll r0, r0, 0
// if (bc) {goto block_1;} // branch non-likely
// Unknown instr: sync.l
c->lui(a3, 4095); // lui a3, 4095
c->ori(a3, a3, 65535); // ori a3, a3, 65535
c->and_(a1, a3, a1); // and a1, a3, a1
// c->sw(a1, 16, v1); // sw a1, 16(v1)
u32 madr = c->sgpr64(a1);
c->lui(a1, 4095); // lui a1, 4095
c->ori(a1, a1, 65535); // ori a1, a1, 65535
c->and_(a0, a1, a0); // and a0, a1, a0
// c->sw(a0, 128, v1); // sw a0, 128(v1)
u32 sadr = c->sgpr64(a0);
// c->sw(a2, 32, v1); // sw a2, 32(v1)
u32 qwc = c->sgpr64(a2);
// Unknown instr: sync.l
c->addiu(a0, r0, 256); // addiu a0, r0, 256
// c->sw(a0, 0, v1); // sw a0, 0(v1)
spad_to_dma(cache.fake_scratchpad_data, madr, sadr, qwc);
// Unknown instr: sync.l
c->gprs[v0].du64[0] = 0; // or v0, r0, r0
//jr ra // jr ra
c->daddu(sp, sp, r0); // daddu sp, sp, r0
goto end_of_function; // return
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
end_of_function:
return c->gprs[v0].du64[0];
}
void link() {
cache.fake_scratchpad_data = intern_from_c(-1, 0, "*fake-scratchpad-data*").c();
gLinkedFunctionTable.reg("nav-dma-send-to-spr-no-flush", execute, 0);
}
} // namespace nav_dma_send_to_spr_no_flush
} // namespace Mips2C