diff --git a/core/hw/aica/dsp_arm64.cpp b/core/hw/aica/dsp_arm64.cpp index 6328f75de..508c5e246 100644 --- a/core/hw/aica/dsp_arm64.cpp +++ b/core/hw/aica/dsp_arm64.cpp @@ -32,7 +32,7 @@ extern void Arm64CacheFlush(void* start, void* end); class DSPAssembler : public MacroAssembler { public: - DSPAssembler(u8 *code_buffer, size_t size) : MacroAssembler(code_buffer, size), aica_ram_lit(&aica_ram[0], GetLiteralPool()) {} + DSPAssembler(u8 *code_buffer, size_t size) : MacroAssembler(code_buffer, size), aica_ram_lit(NULL) {} void Compile(struct dsp_t *DSP) { @@ -307,7 +307,7 @@ public: { //MEMVAL[(step + 2) & 3] = UNPACK(*(u16 *)&aica_ram[ADDR & ARAM_MASK]); CalculateADDR(ADDR, op, ADRS_REG, MDEC_CT); - Ldr(x1, &aica_ram_lit); + Ldr(x1, GetAicaRam()); MemOperand aram_op(x1, Register::GetXRegFromCode(ADDR.GetCode())); Ldrh(w0, aram_op); GenCallRuntime(UNPACK); @@ -321,7 +321,7 @@ public: GenCallRuntime(PACK); CalculateADDR(ADDR, op, ADRS_REG, MDEC_CT); - Ldr(x1, &aica_ram_lit); + Ldr(x1, GetAicaRam()); MemOperand aram_op(x1, Register::GetXRegFromCode(ADDR.GetCode())); Strh(w0, aram_op); } @@ -462,6 +462,13 @@ private: die("Unsupported ARAM_SIZE"); } + Literal *GetAicaRam() + { + if (aica_ram_lit == NULL) + aica_ram_lit = new Literal(&aica_ram[0], GetLiteralPool(), RawLiteral::kDeletedOnPoolDestruction); + return aica_ram_lit; + } + void Disassemble(Instruction* instr_start, Instruction* instr_end) { Decoder decoder; @@ -477,7 +484,7 @@ private: } struct dsp_t *DSP; - Literal aica_ram_lit; + Literal *aica_ram_lit; }; void dsp_recompile() diff --git a/core/rec-ARM/rec_arm.cpp b/core/rec-ARM/rec_arm.cpp index 60cb03b47..9e61af8ac 100644 --- a/core/rec-ARM/rec_arm.cpp +++ b/core/rec-ARM/rec_arm.cpp @@ -2247,6 +2247,7 @@ void ngen_ResetBlocks() */ void ngen_init() { + printf("Initializing the ARM32 dynarec\n"); verify(FPCB_OFFSET == -0x2100000 || FPCB_OFFSET == -0x4100000); verify(rcb_noffs(p_sh4rcb->fpcb) == FPCB_OFFSET); diff --git a/core/rec-ARM64/rec_arm64.cpp b/core/rec-ARM64/rec_arm64.cpp index b17ab3027..ca5d96b4c 100644 --- a/core/rec-ARM64/rec_arm64.cpp +++ b/core/rec-ARM64/rec_arm64.cpp @@ -246,6 +246,7 @@ void ngen_mainloop(void* v_cntx) void ngen_init() { + printf("Initializing the ARM64 dynarec\n"); ngen_FailedToFindBlock = &ngen_FailedToFindBlock_; }