mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-20 16:07:53 -05:00
Merge remote-tracking branch 'upstream/master' into nx
# Conflicts: # src/core/CMakeLists.txt # src/core/arm/dynarmic/arm_dynarmic.cpp # src/core/arm/dyncom/arm_dyncom.cpp # src/core/hle/kernel/process.cpp # src/core/hle/kernel/thread.cpp # src/core/hle/kernel/thread.h # src/core/hle/kernel/vm_manager.cpp # src/core/loader/3dsx.cpp # src/core/loader/elf.cpp # src/core/loader/ncch.cpp # src/core/memory.cpp # src/core/memory.h # src/core/memory_setup.h
This commit is contained in:
@ -29,6 +29,10 @@ void ARM_DynCom::SetPC(u64 pc) {
|
||||
state->Reg[15] = pc;
|
||||
}
|
||||
|
||||
void ARM_DynCom::PageTableChanged() {
|
||||
ClearInstructionCache();
|
||||
}
|
||||
|
||||
u64 ARM_DynCom::GetPC() const {
|
||||
return state->Reg[15];
|
||||
}
|
||||
@ -41,6 +45,13 @@ void ARM_DynCom::SetReg(int index, u64 value) {
|
||||
state->Reg[index] = value;
|
||||
}
|
||||
|
||||
const u128& ARM_DynCom::GetExtReg(int index) const {
|
||||
return {};
|
||||
}
|
||||
|
||||
void ARM_DynCom::SetExtReg(int index, u128& value) {
|
||||
}
|
||||
|
||||
u32 ARM_DynCom::GetVFPReg(int index) const {
|
||||
return state->ExtReg[index];
|
||||
}
|
||||
@ -80,12 +91,6 @@ VAddr ARM_DynCom::GetTlsAddress() const {
|
||||
void ARM_DynCom::SetTlsAddress(VAddr /*address*/) {
|
||||
}
|
||||
|
||||
void ARM_DynCom::AddTicks(u64 ticks) {
|
||||
down_count -= ticks;
|
||||
if (down_count < 0)
|
||||
CoreTiming::Advance();
|
||||
}
|
||||
|
||||
void ARM_DynCom::ExecuteInstructions(int num_instructions) {
|
||||
state->NumInstrsToExecute = num_instructions;
|
||||
|
||||
@ -93,7 +98,7 @@ void ARM_DynCom::ExecuteInstructions(int num_instructions) {
|
||||
// executing one instruction at a time. Otherwise, if a block is being executed, more
|
||||
// instructions may actually be executed than specified.
|
||||
unsigned ticks_executed = InterpreterMainLoop(state.get());
|
||||
AddTicks(ticks_executed);
|
||||
CoreTiming::AddTicks(ticks_executed);
|
||||
}
|
||||
|
||||
void ARM_DynCom::SaveContext(ThreadContext& ctx) {
|
||||
|
@ -16,11 +16,14 @@ public:
|
||||
~ARM_DynCom();
|
||||
|
||||
void ClearInstructionCache() override;
|
||||
void PageTableChanged() override;
|
||||
|
||||
void SetPC(u64 pc) override;
|
||||
u64 GetPC() const override;
|
||||
u64 GetReg(int index) const override;
|
||||
void SetReg(int index, u64 value) override;
|
||||
const u128& GetExtReg(int index) const override;
|
||||
void SetExtReg(int index, u128& value) override;
|
||||
u32 GetVFPReg(int index) const override;
|
||||
void SetVFPReg(int index, u32 value) override;
|
||||
u32 GetVFPSystemReg(VFPSystemRegister reg) const override;
|
||||
@ -32,8 +35,6 @@ public:
|
||||
VAddr GetTlsAddress() const override;
|
||||
void SetTlsAddress(VAddr address) override;
|
||||
|
||||
void AddTicks(u64 ticks) override;
|
||||
|
||||
void SaveContext(ThreadContext& ctx) override;
|
||||
void LoadContext(const ThreadContext& ctx) override;
|
||||
|
||||
|
@ -759,7 +759,7 @@ static ThumbDecodeStatus DecodeThumbInstruction(u32 inst, u32 addr, u32* arm_ins
|
||||
ThumbDecodeStatus ret = TranslateThumbInstruction(addr, inst, arm_inst, inst_size);
|
||||
if (ret == ThumbDecodeStatus::BRANCH) {
|
||||
int inst_index;
|
||||
int table_length = arm_instruction_trans_len;
|
||||
int table_length = static_cast<int>(arm_instruction_trans_len);
|
||||
u32 tinstr = GetThumbInstruction(inst, addr);
|
||||
|
||||
switch ((tinstr & 0xF800) >> 11) {
|
||||
@ -838,7 +838,7 @@ static unsigned int InterpreterTranslateInstruction(const ARMul_State* cpu, cons
|
||||
return inst_size;
|
||||
}
|
||||
|
||||
static int InterpreterTranslateBlock(ARMul_State* cpu, int& bb_start, u32 addr) {
|
||||
static int InterpreterTranslateBlock(ARMul_State* cpu, std::size_t& bb_start, u32 addr) {
|
||||
MICROPROFILE_SCOPE(DynCom_Decode);
|
||||
|
||||
// Decode instruction, get index
|
||||
@ -871,7 +871,7 @@ static int InterpreterTranslateBlock(ARMul_State* cpu, int& bb_start, u32 addr)
|
||||
return KEEP_GOING;
|
||||
}
|
||||
|
||||
static int InterpreterTranslateSingle(ARMul_State* cpu, int& bb_start, u32 addr) {
|
||||
static int InterpreterTranslateSingle(ARMul_State* cpu, std::size_t& bb_start, u32 addr) {
|
||||
MICROPROFILE_SCOPE(DynCom_Decode);
|
||||
|
||||
ARM_INST_PTR inst_base = nullptr;
|
||||
@ -1620,7 +1620,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||
unsigned int addr;
|
||||
unsigned int num_instrs = 0;
|
||||
|
||||
int ptr;
|
||||
std::size_t ptr;
|
||||
|
||||
LOAD_NZCVT;
|
||||
DISPATCH : {
|
||||
|
Reference in New Issue
Block a user