mirror of
https://github.com/shadergz/cosmic-station.git
synced 2024-11-26 15:50:22 +00:00
(Creeper, Fishron)
: Program executors have been reorganized
This commit is contained in:
parent
c6f99c9171
commit
6319ee9101
@ -42,18 +42,18 @@ target_sources(cosmic PRIVATE
|
||||
${COSMIC_DIR}/mio/blocks.cpp
|
||||
${COSMIC_DIR}/creeper/inst_operands.cpp
|
||||
${COSMIC_DIR}/creeper/fastmem.cpp
|
||||
${COSMIC_DIR}/creeper/psx/iop_interpreter.cpp
|
||||
${COSMIC_DIR}/creeper/psx/psx_ep1.cpp
|
||||
${COSMIC_DIR}/creeper/ee/addons_fpu.cpp
|
||||
${COSMIC_DIR}/creeper/ee/cached_blocks.cpp
|
||||
${COSMIC_DIR}/creeper/ee/more_mips.cpp
|
||||
${COSMIC_DIR}/creeper/ee/translate_opcodes.cpp
|
||||
${COSMIC_DIR}/creeper/ee/iv_special.cpp
|
||||
${COSMIC_DIR}/creeper/ee/iv_math.cpp
|
||||
${COSMIC_DIR}/creeper/ee/iv_cop.cpp
|
||||
${COSMIC_DIR}/creeper/micro/vum_code.cpp
|
||||
${COSMIC_DIR}/creeper/micro/int_lower1.cpp
|
||||
${COSMIC_DIR}/creeper/micro/float_vectorization.cpp
|
||||
${COSMIC_DIR}/creeper/iop_interpreter.cpp
|
||||
${COSMIC_DIR}/creeper/psx_ep1.cpp
|
||||
${COSMIC_DIR}/creeper/addons_fpu.cpp
|
||||
${COSMIC_DIR}/creeper/cached_blocks.cpp
|
||||
${COSMIC_DIR}/creeper/more_mips.cpp
|
||||
${COSMIC_DIR}/creeper/translate_opcodes.cpp
|
||||
${COSMIC_DIR}/creeper/iv_special.cpp
|
||||
${COSMIC_DIR}/creeper/iv_math.cpp
|
||||
${COSMIC_DIR}/creeper/iv_cop.cpp
|
||||
${COSMIC_DIR}/creeper/vum_code.cpp
|
||||
${COSMIC_DIR}/creeper/int_lower1.cpp
|
||||
${COSMIC_DIR}/creeper/float_vectorization.cpp
|
||||
${COSMIC_DIR}/gs/gs_tables.cpp
|
||||
${COSMIC_DIR}/gs/gs_engine.cpp
|
||||
${COSMIC_DIR}/gs/gif_bridge.cpp
|
||||
@ -91,7 +91,7 @@ target_sources(cosmic PRIVATE
|
||||
${COSMIC_DIR}/console/backdoor.cpp
|
||||
${COSMIC_DIR}/console/bios_loader.cpp
|
||||
${COSMIC_DIR}/fishron/emitter_common.cpp
|
||||
${COSMIC_DIR}/fishron/ee2arm/jitter_arm64_ee.cpp
|
||||
${COSMIC_DIR}/fishron/jitter_arm64_ee.cpp
|
||||
${COSMIC_DIR}/ipu/chrome_table.cpp
|
||||
${COSMIC_DIR}/ipu/ipu_core.cpp
|
||||
${COSMIC_DIR}/ipu/decoder_fifo.cpp
|
||||
|
@ -1,11 +1,12 @@
|
||||
// SPDX-short-identifier: MIT, Version N/A
|
||||
// This file is protected by the MIT license (please refer to LICENSE.md before making any changes, copying, or redistributing this software)
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <engine/ee_core.h>
|
||||
#include <common/global.h>
|
||||
|
||||
#define DSP_MATH_PARAMS 0
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
std::array<f32, 3> fpList;
|
||||
u8 dest;
|
||||
#define CHK_OVER_OR_UNDER(d)\
|
@ -2,12 +2,12 @@
|
||||
// This file is protected by the MIT license (please refer to LICENSE.md before making any changes, copying, or redistributing this software)
|
||||
#include <range/v3/algorithm.hpp>
|
||||
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <common/global.h>
|
||||
#include <vm/emu_vm.h>
|
||||
#include <engine/ee_core.h>
|
||||
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
static constexpr auto cleanPcBlock{
|
||||
(static_cast<u32>(-1) ^ (superBlockCount * 4 - 1))};
|
||||
static constexpr auto dangerousPipe{OutOfOrder::EffectivePipeline::Branch};
|
@ -3,8 +3,8 @@
|
||||
#include <vector>
|
||||
#include <boost/unordered_map.hpp>
|
||||
|
||||
#include <creeper/inst_operands.h>
|
||||
#include <engine/ee_info.h>
|
||||
#include "inst_operands.h"
|
||||
#include "cosmic/engine/ee_info.h"
|
||||
|
||||
#define RD_DW cpu->GPRs[ops.rd].dw[0]
|
||||
#define RT_DW cpu->GPRs[ops.rt].dw[0]
|
||||
@ -29,7 +29,7 @@ namespace cosmic {
|
||||
class CtrlCop;
|
||||
}
|
||||
}
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
|
||||
constexpr u32 superBlockCount{4096 / 4};
|
||||
struct OutOfOrder {
|
||||
@ -96,10 +96,9 @@ namespace cosmic::creeper::ee {
|
||||
u32 executeCode() override;
|
||||
void performInvalidation(u32 address) override;
|
||||
|
||||
#define DECLARE_INST_IV_FUNC(name) static void name(Operands)
|
||||
|
||||
DECLARE_INST_IV_FUNC(addi);
|
||||
DECLARE_INST_IV_FUNC(lui);
|
||||
static void addi(Operands);
|
||||
static void lui(Operands);
|
||||
static void slti(Operands ops);
|
||||
static void sw(Operands ops);
|
||||
static void sd(Operands ops);
|
||||
@ -145,18 +144,18 @@ namespace cosmic::creeper::ee {
|
||||
static void sub(Operands ops);
|
||||
static void subu(Operands ops);
|
||||
|
||||
DECLARE_INST_IV_FUNC(iAnd);
|
||||
DECLARE_INST_IV_FUNC(iOr);
|
||||
DECLARE_INST_IV_FUNC(iXor);
|
||||
DECLARE_INST_IV_FUNC(nor);
|
||||
static void iAnd(Operands);
|
||||
static void iOr(Operands);
|
||||
static void iXor(Operands);
|
||||
static void nor(Operands);
|
||||
|
||||
static void dsub(Operands ops);
|
||||
static void dsubu(Operands ops);
|
||||
|
||||
DECLARE_INST_IV_FUNC(slt);
|
||||
DECLARE_INST_IV_FUNC(ori);
|
||||
DECLARE_INST_IV_FUNC(xori);
|
||||
DECLARE_INST_IV_FUNC(jr);
|
||||
static void slt(Operands);
|
||||
static void ori(Operands);
|
||||
static void xori(Operands);
|
||||
static void jr(Operands);
|
||||
|
||||
static void bne(Operands ops);
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include <creeper/micro/vum_code.h>
|
||||
#include <creeper/vum_code.h>
|
||||
#include <vu/vecu.h>
|
||||
namespace cosmic::creeper::micro {
|
||||
namespace cosmic::creeper {
|
||||
void VuMicroInterpreter::mr32(VuMicroOperands& ops) {
|
||||
static const std::array<u8, 4> rotates{8, 4, 2, 1};
|
||||
f32 fsX{vu->VuGPRs[ops.fs].floats[0]};
|
@ -5,7 +5,7 @@
|
||||
namespace cosmic::creeper {
|
||||
using EeCore = engine::MipsIvOpcodes;
|
||||
|
||||
std::array<const char*, 3> EeOpcodeTranslator::interpreters{
|
||||
std::array<std::string, 3> EeOpcodeTranslator::interpreters{
|
||||
"Emotion Engine by Cached Interpreter",
|
||||
"IOP Interpreter",
|
||||
"VU (0, 1) Interpreter"
|
||||
@ -14,7 +14,7 @@ namespace cosmic::creeper {
|
||||
{EeCore::Ori, {"{} {},{},{}"}},
|
||||
};
|
||||
|
||||
std::array<const char*, 1> EeOpcodeTranslator::eeOps{""};
|
||||
std::array<const char*, 1> EeOpcodeTranslator::iopOps{""};
|
||||
std::array<const char*, 1> EeOpcodeTranslator::vuOps{""};
|
||||
std::array<std::string, 1> EeOpcodeTranslator::eeOps{""};
|
||||
std::array<std::string, 1> EeOpcodeTranslator::iopOps{""};
|
||||
std::array<std::string, 1> EeOpcodeTranslator::vuOps{""};
|
||||
}
|
||||
|
@ -53,19 +53,18 @@ namespace cosmic::creeper {
|
||||
};
|
||||
};
|
||||
};
|
||||
using OpcodeListAlternative = std::array<const char*, 3>;
|
||||
using OpcodeListAlternative = std::array<std::string, 3>;
|
||||
using OpcodeMapType = std::unordered_map<u64, OpcodeListAlternative>;
|
||||
|
||||
struct EeInstructionSet {
|
||||
std::string opcodeStr{"@@@"};
|
||||
bool extraParameter;
|
||||
std::string instruction{"xxx"};
|
||||
};
|
||||
class EeOpcodeTranslator{
|
||||
public:
|
||||
static std::array<const char*, 3> interpreters;
|
||||
static std::array<const char*, 1> eeOps;
|
||||
static std::array<const char*, 1> iopOps;
|
||||
static std::array<const char*, 1> vuOps;
|
||||
static std::array<std::string, 3> interpreters;
|
||||
static std::array<std::string, 1> eeOps;
|
||||
static std::array<std::string, 1> iopOps;
|
||||
static std::array<std::string, 1> vuOps;
|
||||
static OpcodeMapType eeMipsCoreFmt;
|
||||
|
||||
static auto getRegisters(u32 r9Inst) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <creeper/micro/vum_code.h>
|
||||
#include <creeper/vum_code.h>
|
||||
#include <vu/vecu.h>
|
||||
|
||||
namespace cosmic::creeper::micro {
|
||||
namespace cosmic::creeper {
|
||||
void VuMicroInterpreter::iddai(VuMicroOperands& ops) {
|
||||
vu->pushIntPipe(ops.ft & 0xf, ops.fs & 0xf);
|
||||
i16 imm{static_cast<i16>((ops.inst >> 6) & 0x1f)};
|
@ -1,10 +1,10 @@
|
||||
#include <range/v3/algorithm.hpp>
|
||||
#include <console/backdoor.h>
|
||||
#include <common/global.h>
|
||||
#include <creeper/psx/iop_interpreter.h>
|
||||
#include <creeper/iop_interpreter.h>
|
||||
#include <vm/emu_vm.h>
|
||||
|
||||
namespace cosmic::creeper::psx {
|
||||
namespace cosmic::creeper {
|
||||
using namespace iop;
|
||||
void IopInterpreter::bne(Operands ops) {
|
||||
cpu->takeBranchIf(cpu->ioGPRs[ops.rs] != cpu->ioGPRs[ops.rt],
|
@ -6,7 +6,7 @@
|
||||
namespace cosmic::vm {
|
||||
class EmuVm;
|
||||
}
|
||||
namespace cosmic::creeper::psx {
|
||||
namespace cosmic::creeper {
|
||||
class IopInterpreter : public iop::IopExecVe {
|
||||
public:
|
||||
IopInterpreter(Ref<iop::IoMipsCore> core);
|
@ -2,9 +2,9 @@
|
||||
// This file is protected by the MIT license (please refer to LICENSE.md before making any changes, copying, or redistributing this software)
|
||||
#include <range/v3/algorithm.hpp>
|
||||
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <engine/ee_core.h>
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
void MipsIvInterpreter::tlbr(Operands ops) {
|
||||
auto entry{cpu->fetchTlbFromCop(c0->GPRs.data())};
|
||||
c0->loadFromGprToTlb(*entry);
|
@ -1,8 +1,8 @@
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <engine/ee_core.h>
|
||||
#include <console/backdoor.h>
|
||||
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
void MipsIvInterpreter::mult(Operands ops) {
|
||||
auto fi{cpu->GPRs[ops.rs].swords[0]};
|
||||
auto se{cpu->GPRs[ops.rt].swords[0]};
|
@ -1,9 +1,9 @@
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <engine/ee_core.h>
|
||||
#include <console/backdoor.h>
|
||||
#include <vm/emu_vm.h>
|
||||
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
#define SPECIAL_IV_OP(op)\
|
||||
RD_SW = RS_SW op RT_SW
|
||||
#define SPECIAL_IV_OP_UNS(op)\
|
@ -1,8 +1,8 @@
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <engine/ee_core.h>
|
||||
#include <vm/emu_vm.h>
|
||||
|
||||
namespace cosmic::creeper::ee {
|
||||
namespace cosmic::creeper {
|
||||
void MipsIvInterpreter::addi(Operands ops) {
|
||||
cpu->GPRs[ops.rt].words[0] = ops.pa16[0] + cpu->GPRs[ops.rs].words[0];
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
#include <creeper/psx/iop_interpreter.h>
|
||||
#include <creeper/iop_interpreter.h>
|
||||
#include <iop/iop_core.h>
|
||||
|
||||
namespace cosmic::creeper::psx {
|
||||
namespace cosmic::creeper {
|
||||
void IopInterpreter::orMips(Operands ops) {
|
||||
cpu->ioGPRs[ops.rd] = cpu->ioGPRs[ops.rs] | cpu->ioGPRs[ops.rt];
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
// SPDX-short-identifier: MIT, Version N/A
|
||||
// This file is protected by the MIT license (please refer to LICENSE.md before making any changes, copying, or redistributing this software)
|
||||
#include <common/global.h>
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <creeper/cached_blocks.h>
|
||||
#include <engine/ee_core.h>
|
||||
namespace cosmic::creeper::ee {
|
||||
|
||||
namespace cosmic::creeper {
|
||||
using namespace engine;
|
||||
|
||||
EeMapSpecial MipsIvInterpreter::ivSpecial{
|
||||
@ -134,7 +135,7 @@ namespace cosmic::creeper::ee {
|
||||
std::array<u8, 3> operands{
|
||||
EeOpcodeTranslator::getRegisters(opcode)};
|
||||
EeInstructionSet set{};
|
||||
const u32 offsetOrBase{opcode & 0x0000ffff};
|
||||
// const u32 offsetOrBase{opcode & 0x0000ffff};
|
||||
|
||||
microCodes.ops = Operands{opcode, operands};
|
||||
switch (opcode >> 26) {
|
||||
@ -148,28 +149,25 @@ namespace cosmic::creeper::ee {
|
||||
decodeCop(opcode, microCodes, set);
|
||||
break;
|
||||
}
|
||||
std::array<std::string, 3> tagged{
|
||||
std::string{""} + eeAllGprIdentifier[operands.at(0)],
|
||||
std::string{""} + eeAllGprIdentifier[operands.at(1)],
|
||||
std::string{""} + eeAllGprIdentifier[operands.at(2)],
|
||||
};
|
||||
|
||||
const auto& first{eeAllGprIdentifier[operands.at(0)]};
|
||||
const auto& second{eeAllGprIdentifier[operands.at(1)]};
|
||||
// const auto& third{eeAllGprIdentifier[operands.at(2)]};
|
||||
|
||||
auto coreOps{static_cast<MipsIvOpcodes>(opcode >> 26)};
|
||||
getOpcodeHandler(ivCore, coreOps, microCodes, set);
|
||||
|
||||
const auto thirdArg{set.extraParameter ? tagged[2] : fmt::format("{:x}", offsetOrBase)};
|
||||
std::string decoded;
|
||||
if (set.extraParameter)
|
||||
decoded = fmt::format("{}\t{}, {}, {}", set.opcodeStr, tagged[0], tagged[1], thirdArg);
|
||||
else
|
||||
decoded = fmt::format("{}\t{}, {}", set.opcodeStr, tagged[0], tagged[1]);
|
||||
decoded = fmt::format("{}\t{}, {}", set.instruction, first, second);
|
||||
|
||||
if (microCodes.execute) {
|
||||
user->debug("(MIPS) Opcode value {} at PC address {} decoded to {}", opcode, *cpu->eePc, decoded);
|
||||
} else {
|
||||
if (!microCodes.execute) {
|
||||
microCodes.execute = [decoded](Operands& err) {
|
||||
throw AppErr("Currently, we cannot handle the operation {} at PC address {:x}", decoded, *cpu->eePc);
|
||||
};
|
||||
return;
|
||||
|
||||
}
|
||||
user->debug("(MIPS) Opcode value {} at PC address {} decoded to {}", opcode, *cpu->eePc, decoded);
|
||||
}
|
||||
void MipsIvInterpreter::getOpcodeHandler(auto opcodes, auto micro,
|
||||
InvokeOpInfo& info, EeInstructionSet& set) {
|
||||
@ -181,7 +179,7 @@ namespace cosmic::creeper::ee {
|
||||
|
||||
auto& handler{(opc->second).opcodeHandler};
|
||||
info.execute = handler;
|
||||
set.opcodeStr = std::string{""} + opc->second.opcodeName;
|
||||
set.instruction = opc->second.opcodeName;
|
||||
}
|
||||
|
||||
u32 MipsIvInterpreter::fetchPcInst(u32 pc) {
|
@ -1,6 +1,6 @@
|
||||
#include <creeper/micro/vum_code.h>
|
||||
#include <creeper/vum_code.h>
|
||||
#include <vu/vecu.h>
|
||||
namespace cosmic::creeper::micro {
|
||||
namespace cosmic::creeper {
|
||||
Ref<vu::VectorUnit> VuMicroInterpreter::vu;
|
||||
|
||||
u32 VuMicroInterpreter::executeCode() {
|
@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include <creeper/inst_operands.h>
|
||||
#include <vu/vu_info.h>
|
||||
namespace cosmic::creeper::micro {
|
||||
namespace cosmic::creeper {
|
||||
struct VuMicroOrder {
|
||||
// A VU, in microcode mode, executes more than one instruction,
|
||||
// but there may be a dependency between registers
|
@ -3,8 +3,8 @@
|
||||
#include <engine/ee_core.h>
|
||||
#include <engine/cop0.h>
|
||||
|
||||
#include <creeper/ee/cached_blocks.h>
|
||||
#include <fishron/ee2arm/jitter_arm64_ee.h>
|
||||
#include "cosmic/creeper/cached_blocks.h"
|
||||
#include "cosmic/fishron/jitter_arm64_ee.h"
|
||||
#include <console/virt_devices.h>
|
||||
namespace cosmic::engine {
|
||||
EeMipsCore::~EeMipsCore() {
|
||||
|
@ -102,5 +102,5 @@ namespace cosmic::engine {
|
||||
Nop = 0x33,
|
||||
Ld = 0x37,
|
||||
};
|
||||
extern const std::array<const char*, 32> eeAllGprIdentifier;
|
||||
extern const std::array<std::string, 32> eeAllGprIdentifier;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ namespace cosmic::engine {
|
||||
mulDivStorage[0] = val & 0xffffffff;
|
||||
mulDivStorage[1] = (val >> 32) & 0xffffffff;
|
||||
}
|
||||
const std::array<const char*, 32> eeAllGprIdentifier{
|
||||
const std::array<std::string, 32> eeAllGprIdentifier{
|
||||
"zero",
|
||||
"at", "v0", "v1", "a0", "a1", "a2", "a3",
|
||||
"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7",
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <fishron/ee2arm/jitter_arm64_ee.h>
|
||||
#include <fishron/jitter_arm64_ee.h>
|
||||
|
||||
namespace cosmic::fishron::ee2arm {
|
||||
u32 EeArm64Jitter::executeCode() {
|
@ -3,41 +3,135 @@
|
||||
#include <common/global.h>
|
||||
namespace cosmic::hle {
|
||||
// https://github.com/PCSX2/pcsx2/blob/8c94efd61a437263dc23853c7658053be3c8ba7d/pcsx2/R5900OpcodeImpl.cpp#L99C1-L99C7
|
||||
static const std::array<const char*, 256> mipsCustomCallsNames{
|
||||
"RFU000_FullReset", "ResetEE", "SetGsCrt", "RFU003", "Exit", "RFU005", "LoadExecPS2",
|
||||
"ExecPS2", "RFU008", "RFU009", "AddSbusIntcHandler", "RemoveSbusIntcHandler",
|
||||
"Interrupt2Iop", "SetVTLBRefillHandler", "SetVCommonHandler", "SetVInterruptHandler",
|
||||
"AddIntcHandler", "RemoveIntcHandler", "AddDmacHandler", "RemoveDmacHandler",
|
||||
"_EnableIntc", "_DisableIntc", "_EnableDmac", "_DisableDmac", "_SetAlarm", "_ReleaseAlarm",
|
||||
"_iEnableIntc", "_iDisableIntc", "_iEnableDmac", "_iDisableDmac", "_iSetAlarm",
|
||||
"_iReleaseAlarm", "CreateThread", "DeleteThread", "StartThread", "ExitThread",
|
||||
"ExitDeleteThread", "TerminateThread", "iTerminateThread", "DisableDispatchThread",
|
||||
"EnableDispatchThread", "ChangeThreadPriority", "iChangeThreadPriority",
|
||||
"RotateThreadReadyQueue", "iRotateThreadReadyQueue", "ReleaseWaitThread",
|
||||
"iReleaseWaitThread", "GetThreadId", "ReferThreadStatus", "iReferThreadStatus",
|
||||
"SleepThread", "WakeupThread", "_iWakeupThread", "CancelWakeupThread",
|
||||
"iCancelWakeupThread", "SuspendThread", "iSuspendThread", "ResumeThread", "iResumeThread",
|
||||
"JoinThread", "RFU060", "RFU061", "EndOfHeap", "RFU063", "CreateSema", "DeleteSema",
|
||||
"SignalSema", "iSignalSema", "WaitSema", "PollSema", "iPollSema", "ReferSemaStatus",
|
||||
"iReferSemaStatus", "RFU073", "SetOsdConfigParam", "GetOsdConfigParam", "GetGsHParam",
|
||||
"GetGsVParam", "SetGsHParam", "SetGsVParam",
|
||||
"RFU080_CreateEventFlag", "RFU081_DeleteEventFlag",
|
||||
"RFU082_SetEventFlag", "RFU083_iSetEventFlag",
|
||||
"RFU084_ClearEventFlag", "RFU085_iClearEventFlag",
|
||||
"RFU086_WaitEventFlag", "RFU087_PollEventFlag",
|
||||
"RFU088_iPollEventFlag", "RFU089_ReferEventFlagStatus",
|
||||
"RFU090_iReferEventFlagStatus", "RFU091_GetEntryAddress",
|
||||
static const std::array<std::string, 256> mipsCustomCallsNames{
|
||||
"RFU000_FullReset",
|
||||
"ResetEE",
|
||||
"SetGsCrt",
|
||||
"RFU003",
|
||||
"Exit",
|
||||
"RFU005",
|
||||
"LoadExecPS2",
|
||||
"ExecPS2",
|
||||
"RFU008",
|
||||
"RFU009",
|
||||
"AddSbusIntcHandler",
|
||||
"RemoveSbusIntcHandler",
|
||||
"Interrupt2Iop",
|
||||
"SetVTLBRefillHandler",
|
||||
"SetVCommonHandler",
|
||||
"SetVInterruptHandler",
|
||||
"AddIntcHandler",
|
||||
"RemoveIntcHandler",
|
||||
"AddDmacHandler",
|
||||
"RemoveDmacHandler",
|
||||
"_EnableIntc",
|
||||
"_DisableIntc",
|
||||
"_EnableDmac",
|
||||
"_DisableDmac",
|
||||
"_SetAlarm",
|
||||
"_ReleaseAlarm",
|
||||
"_iEnableIntc",
|
||||
"_iDisableIntc",
|
||||
"_iEnableDmac",
|
||||
"_iDisableDmac",
|
||||
"_iSetAlarm",
|
||||
"_iReleaseAlarm",
|
||||
"CreateThread",
|
||||
"DeleteThread",
|
||||
"StartThread",
|
||||
"ExitThread",
|
||||
"ExitDeleteThread",
|
||||
"TerminateThread",
|
||||
"iTerminateThread",
|
||||
"DisableDispatchThread",
|
||||
"EnableDispatchThread",
|
||||
"ChangeThreadPriority",
|
||||
"iChangeThreadPriority",
|
||||
"RotateThreadReadyQueue",
|
||||
"iRotateThreadReadyQueue",
|
||||
"ReleaseWaitThread",
|
||||
"iReleaseWaitThread",
|
||||
"GetThreadId",
|
||||
"ReferThreadStatus",
|
||||
"iReferThreadStatus",
|
||||
"SleepThread",
|
||||
"WakeupThread",
|
||||
"_iWakeupThread",
|
||||
"CancelWakeupThread",
|
||||
"iCancelWakeupThread",
|
||||
"SuspendThread",
|
||||
"iSuspendThread",
|
||||
"ResumeThread",
|
||||
"iResumeThread",
|
||||
"JoinThread",
|
||||
"RFU060",
|
||||
"RFU061",
|
||||
"EndOfHeap",
|
||||
"RFU063",
|
||||
"CreateSema",
|
||||
"DeleteSema",
|
||||
"SignalSema",
|
||||
"iSignalSema",
|
||||
"WaitSema",
|
||||
"PollSema",
|
||||
"iPollSema",
|
||||
"ReferSemaStatus",
|
||||
"iReferSemaStatus",
|
||||
"RFU073",
|
||||
"SetOsdConfigParam",
|
||||
"GetOsdConfigParam",
|
||||
"GetGsHParam",
|
||||
"GetGsVParam",
|
||||
"SetGsHParam",
|
||||
"SetGsVParam",
|
||||
"RFU080_CreateEventFlag",
|
||||
"RFU081_DeleteEventFlag",
|
||||
"RFU082_SetEventFlag",
|
||||
"RFU083_iSetEventFlag",
|
||||
"RFU084_ClearEventFlag",
|
||||
"RFU085_iClearEventFlag",
|
||||
"RFU086_WaitEventFlag",
|
||||
"RFU087_PollEventFlag",
|
||||
"RFU088_iPollEventFlag",
|
||||
"RFU089_ReferEventFlagStatus",
|
||||
"RFU090_iReferEventFlagStatus",
|
||||
"RFU091_GetEntryAddress",
|
||||
"EnableIntcHandler_iEnableIntcHandler",
|
||||
"DisableIntcHandler_iDisableIntcHandler",
|
||||
"EnableDmacHandler_iEnableDmacHandler",
|
||||
"DisableDmacHandler_iDisableDmacHandler",
|
||||
"KSeg0", "EnableCache", "DisableCache", "GetCop0", "FlushCache", "RFU101", "CpuConfig",
|
||||
"iGetCop0", "iFlushCache", "RFU105", "iCpuConfig", "sceSifStopDma", "SetCPUTimerHandler",
|
||||
"SetCPUTimer", "SetOsdConfigParam2", "GetOsdConfigParam2", "GsGetIMR_iGsGetIMR",
|
||||
"GsGetIMR_iGsPutIMR", "SetPgifHandler", "SetVSyncFlag", "RFU116", "print",
|
||||
"sceSifDmaStat_isceSifDmaStat", "sceSifSetDma_isceSifSetDma",
|
||||
"sceSifSetDChain_isceSifSetDChain", "sceSifSetReg", "sceSifGetReg", "ExecOSD", "Deci2Call",
|
||||
"PSMode", "MachineType", "GetMemorySize",
|
||||
"KSeg0",
|
||||
"EnableCache",
|
||||
"DisableCache",
|
||||
"GetCop0",
|
||||
"FlushCache",
|
||||
"RFU101",
|
||||
"CpuConfig",
|
||||
"iGetCop0",
|
||||
"iFlushCache",
|
||||
"RFU105",
|
||||
"iCpuConfig",
|
||||
"sceSifStopDma",
|
||||
"SetCPUTimerHandler",
|
||||
"SetCPUTimer",
|
||||
"SetOsdConfigParam2",
|
||||
"GetOsdConfigParam2",
|
||||
"GsGetIMR_iGsGetIMR",
|
||||
"GsGetIMR_iGsPutIMR",
|
||||
"SetPgifHandler",
|
||||
"SetVSyncFlag",
|
||||
"RFU116",
|
||||
"print",
|
||||
"sceSifDmaStat_isceSifDmaStat",
|
||||
"sceSifSetDma_isceSifSetDma",
|
||||
"sceSifSetDChain_isceSifSetDChain",
|
||||
"sceSifSetReg",
|
||||
"sceSifGetReg",
|
||||
"ExecOSD",
|
||||
"Deci2Call",
|
||||
"PSMode",
|
||||
"MachineType",
|
||||
"GetMemorySize",
|
||||
};
|
||||
void SyscallDealer::resetEe() {
|
||||
i32 resetParam{*vm->mips->gprAt<i32>(Param0)};
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <range/v3/algorithm.hpp>
|
||||
#include <common/global.h>
|
||||
#include <iop/iop_core.h>
|
||||
#include <creeper/psx/iop_interpreter.h>
|
||||
#include "cosmic/creeper/iop_interpreter.h"
|
||||
#include <pshook/hk_psx.h>
|
||||
|
||||
namespace cosmic::iop {
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <vm/emu_vm.h>
|
||||
#include <console/backdoor.h>
|
||||
#include <common/global.h>
|
||||
#include <creeper/micro/vum_code.h>
|
||||
#include "cosmic/creeper/vum_code.h"
|
||||
namespace cosmic::vu {
|
||||
VuIntPipeline::VuIntPipeline() {
|
||||
pipeline[0].clearEntry();
|
||||
|
Loading…
Reference in New Issue
Block a user