mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 11:36:13 +00:00
Fix conflicts
This commit is contained in:
commit
a671c43862
59 changed files with 3754 additions and 372 deletions
|
@ -708,7 +708,7 @@ class to_be_t
|
|||
|
||||
public:
|
||||
//true if need swap endianes for be
|
||||
static const bool value = (sizeof(T2) > 1) && (std::is_arithmetic<T>::value || std::is_enum<T>::value);
|
||||
static const bool value = std::is_arithmetic<T>::value || std::is_enum<T>::value;
|
||||
|
||||
//be_t<T, size> if need swap endianes, T otherwise
|
||||
typedef typename _be_type_selector< T, T2, value >::type type;
|
||||
|
@ -716,26 +716,58 @@ public:
|
|||
typedef typename _be_type_selector< T, T2, !is_be_t<T, T2>::value >::type forced_type;
|
||||
};
|
||||
|
||||
template<typename T, typename T2>
|
||||
class to_be_t<T, const T2>
|
||||
{
|
||||
public:
|
||||
static const bool value = to_be_t<T, T2>::value;
|
||||
typedef const typename to_be_t<T, T2>::type type;
|
||||
typedef const typename to_be_t<T, T2>::forced_type forced_type;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class to_be_t<T, void>
|
||||
{
|
||||
public:
|
||||
//true if need swap endianes for be
|
||||
static const bool value = false;
|
||||
|
||||
//be_t<T, size> if need swap endianes, T otherwise
|
||||
typedef void type;
|
||||
typedef void forced_type;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class to_be_t<T, const void>
|
||||
class to_be_t<T, u8>
|
||||
{
|
||||
public:
|
||||
//true if need swap endianes for be
|
||||
static const bool value = false;
|
||||
typedef u8 type;
|
||||
typedef u8 forced_type;
|
||||
};
|
||||
|
||||
//be_t<T, size> if need swap endianes, T otherwise
|
||||
typedef const void type;
|
||||
template<typename T>
|
||||
class to_be_t<T, s8>
|
||||
{
|
||||
public:
|
||||
static const bool value = false;
|
||||
typedef s8 type;
|
||||
typedef s8 forced_type;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class to_be_t<T, char>
|
||||
{
|
||||
public:
|
||||
static const bool value = false;
|
||||
typedef char type;
|
||||
typedef char forced_type;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class to_be_t<T, bool>
|
||||
{
|
||||
public:
|
||||
static const bool value = false;
|
||||
typedef bool type;
|
||||
typedef bool forced_type;
|
||||
};
|
||||
|
||||
template<typename T, typename T2 = T>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
namespace vm
|
||||
{
|
||||
template<typename AT, typename RT, typename... T>
|
||||
__forceinline RT _ptr_base<RT(*)(T...), 1, AT>::operator()(ARMv7Context& context, T... args) const
|
||||
__forceinline RT _ptr_base<RT(T...), 1, AT>::operator()(ARMv7Context& context, T... args) const
|
||||
{
|
||||
return psv_func_detail::func_caller<RT, T...>::call(context, vm::cast(this->addr()), args...);
|
||||
}
|
||||
|
@ -15,4 +15,4 @@ template<typename RT, typename... T>
|
|||
__forceinline RT cb_call(ARMv7Context& context, u32 addr, T... args)
|
||||
{
|
||||
return psv_func_detail::func_caller<RT, T...>::call(context, addr, args...);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,20 +79,26 @@ struct ARMv7Context
|
|||
{
|
||||
struct
|
||||
{
|
||||
u8 cond : 3;
|
||||
u8 state : 5;
|
||||
u8 shift_state : 5;
|
||||
u8 cond_base : 3;
|
||||
};
|
||||
|
||||
struct
|
||||
{
|
||||
u8 check_state : 4;
|
||||
u8 condition : 4;
|
||||
};
|
||||
|
||||
u8 IT;
|
||||
|
||||
u32 advance()
|
||||
{
|
||||
const u32 res = (state & 0xf) ? (cond << 1 | state >> 4) : 0xe /* true */;
|
||||
const u32 res = check_state ? condition : 0xe /* always true */;
|
||||
|
||||
state <<= 1;
|
||||
if ((state & 0xf) == 0) // if no d
|
||||
shift_state <<= 1;
|
||||
if (!check_state)
|
||||
{
|
||||
IT = 0; // clear ITSTATE
|
||||
IT = 0; // clear
|
||||
}
|
||||
|
||||
return res;
|
||||
|
@ -100,7 +106,7 @@ struct ARMv7Context
|
|||
|
||||
operator bool() const
|
||||
{
|
||||
return (state & 0xf) != 0;
|
||||
return check_state;
|
||||
}
|
||||
|
||||
} ITSTATE;
|
||||
|
@ -260,7 +266,7 @@ struct cast_armv7_gpr<bool, false>
|
|||
return value;
|
||||
}
|
||||
|
||||
__forceinline static bool from_gpr(const u32 reg)
|
||||
__forceinline static bool from_gpr(const u32& reg)
|
||||
{
|
||||
return reinterpret_cast<const bool&>(reg);
|
||||
}
|
||||
|
|
|
@ -44,20 +44,20 @@ const ARMv7_opcode_t ARMv7_opcode_table[] =
|
|||
ARMv7_OP2(0xfe00, 0x1c00, T1, ADD_IMM),
|
||||
ARMv7_OP2(0xf800, 0x3000, T2, ADD_IMM),
|
||||
ARMv7_OP4(0xfbe0, 0x8000, 0xf100, 0x0000, T3, ADD_IMM, SKIP_IF( (BF(8, 11) == 15 && BT(20)) || BF(16, 19) == 13 )),
|
||||
ARMv7_OP4(0xfbf0, 0x8000, 0xf200, 0x0000, T4, ADD_IMM),
|
||||
ARMv7_OP4(0xfbf0, 0x8000, 0xf200, 0x0000, T4, ADD_IMM, SKIP_IF( (BF(16, 19) & 13) == 13 )),
|
||||
ARMv7_OP4(0x0fe0, 0x0000, 0x0280, 0x0000, A1, ADD_IMM),
|
||||
ARMv7_OP2(0xfe00, 0x1800, T1, ADD_REG),
|
||||
ARMv7_OP2(0xff00, 0x4400, T2, ADD_REG, SKIP_IF( (c & 0x87) == 0x85 || BF(3, 6) == 13 )),
|
||||
ARMv7_OP4(0xffe0, 0x8000, 0xeb00, 0x0000, T3, ADD_REG),
|
||||
ARMv7_OP4(0xffe0, 0x8000, 0xeb00, 0x0000, T3, ADD_REG, SKIP_IF( (BF(8, 11) == 15 && BT(20)) || BF(16, 19) == 13 )),
|
||||
ARMv7_OP4(0x0fe0, 0x0010, 0x0080, 0x0000, A1, ADD_REG),
|
||||
ARMv7_OP4(0x0fe0, 0x0090, 0x0080, 0x0010, A1, ADD_RSR),
|
||||
ARMv7_OP2(0xf800, 0xa800, T1, ADD_SPI),
|
||||
ARMv7_OP2(0xff80, 0xb000, T2, ADD_SPI),
|
||||
ARMv7_OP4(0xfbef, 0x8000, 0xf10d, 0x0000, T3, ADD_SPI),
|
||||
ARMv7_OP4(0xfbef, 0x8000, 0xf10d, 0x0000, T3, ADD_SPI, SKIP_IF( BF(8, 11) == 15 && BT(20) )),
|
||||
ARMv7_OP4(0xfbff, 0x8000, 0xf20d, 0x0000, T4, ADD_SPI),
|
||||
ARMv7_OP4(0x0fef, 0x0000, 0x028d, 0x0000, A1, ADD_SPI),
|
||||
ARMv7_OP2(0xff78, 0x4468, T1, ADD_SPR),
|
||||
ARMv7_OP2(0xff87, 0x4485, T2, ADD_SPR),
|
||||
ARMv7_OP2(0xff87, 0x4485, T2, ADD_SPR, SKIP_IF( BF(3, 6) == 13 )),
|
||||
ARMv7_OP4(0xffef, 0x8000, 0xeb0d, 0x0000, T3, ADD_SPR),
|
||||
ARMv7_OP4(0x0fef, 0x0010, 0x008d, 0x0000, A1, ADD_SPR),
|
||||
|
||||
|
@ -140,7 +140,7 @@ const ARMv7_opcode_t ARMv7_opcode_table[] =
|
|||
ARMv7_OP4(0x0fe0, 0x0010, 0x0020, 0x0000, A1, EOR_REG),
|
||||
ARMv7_OP4(0x0fe0, 0x0090, 0x0020, 0x0010, A1, EOR_RSR),
|
||||
|
||||
ARMv7_OP2(0xff00, 0xbf00, T1, IT),
|
||||
ARMv7_OP2(0xff00, 0xbf00, T1, IT, SKIP_IF( BF(0, 3) == 0 )),
|
||||
|
||||
ARMv7_OP2(0xf800, 0xc800, T1, LDM),
|
||||
ARMv7_OP4(0xffd0, 0x2000, 0xe890, 0x0000, T2, LDM),
|
||||
|
@ -1208,10 +1208,14 @@ void armv7_decoder_initialize(u32 addr, u32 end_addr, bool dump)
|
|||
{
|
||||
LOG_ERROR(ARMv7, "Unknown instruction found at address 0x%08x: %04x %04x", addr, code.code1, code.code0);
|
||||
addr += 4;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
||||
// Proceed with found:
|
||||
|
||||
if (dump)
|
||||
{
|
||||
if (dump) if (found->length == 2)
|
||||
if (found->length == 2)
|
||||
{
|
||||
LOG_NOTICE(ARMv7, "0x%08x: %04x %s", addr, code.code0, found->name);
|
||||
}
|
||||
|
@ -1219,34 +1223,39 @@ void armv7_decoder_initialize(u32 addr, u32 end_addr, bool dump)
|
|||
{
|
||||
LOG_NOTICE(ARMv7, "0x%08x: %04x %04x %s", addr, code.code1, code.code0, found->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (found->func == ARMv7_instrs::BLX && found->type == T2)
|
||||
if (found->func == ARMv7_instrs::BLX && found->type == T2)
|
||||
{
|
||||
const u32 s = (code.data >> 26) & 0x1;
|
||||
const u32 i1 = (code.data >> 13) & 0x1 ^ s ^ 1;
|
||||
const u32 i2 = (code.data >> 11) & 0x1 ^ s ^ 1;
|
||||
const u32 target = (addr + 4 & ~3) + sign<25, u32>(s << 24 | i2 << 23 | i1 << 22 | (code.data & 0x3ff0000) >> 4 | (code.data & 0x7ff) << 1);
|
||||
|
||||
// possibly a call to imported function:
|
||||
if (target >= end_addr && ((target - end_addr) % 16) == 0 && vm::psv::read16(target) == 0xf870)
|
||||
{
|
||||
const u32 s = (code.data >> 26) & 0x1;
|
||||
const u32 i1 = (code.data >> 13) & 0x1 ^ s ^ 1;
|
||||
const u32 i2 = (code.data >> 11) & 0x1 ^ s ^ 1;
|
||||
const u32 target = (addr + 4 & ~3) + sign<25, u32>(s << 24 | i2 << 23 | i1 << 22 | (code.data & 0x3ff0000) >> 4 | (code.data & 0x7ff) << 1);
|
||||
const u32 instr = vm::psv::read32(target);
|
||||
|
||||
// possibly a call to imported function:
|
||||
if (target >= end_addr && ((target - end_addr) % 16) == 0 && vm::psv::read16(target) == 0xf870)
|
||||
// check if not "unimplemented"
|
||||
if (instr >> 16)
|
||||
{
|
||||
const u32 instr = vm::psv::read32(target);
|
||||
|
||||
// check if not "unimplemented"
|
||||
if (instr >> 16)
|
||||
{
|
||||
// replace BLX with "hack" instruction directly, it can help to see where it was called from
|
||||
vm::psv::write32(addr, instr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR(ARMv7, "Unrecognized BLX call found at adddress 0x%08x (target=0x%08x)", addr, target);
|
||||
// replace BLX with "hack" instruction directly, it can help to see where it was called from
|
||||
vm::psv::write32(addr, instr);
|
||||
}
|
||||
}
|
||||
|
||||
addr += found->length;
|
||||
else
|
||||
{
|
||||
LOG_ERROR(ARMv7, "Unrecognized BLX call found at adddress 0x%08x (target=0x%08x)", addr, target);
|
||||
}
|
||||
}
|
||||
|
||||
//if (found->func == ARMv7_instrs::IT)
|
||||
//{
|
||||
// LOG_ERROR(ARMv7, "IT instruction found at address 0x%08x", addr);
|
||||
//}
|
||||
|
||||
addr += found->length;
|
||||
}
|
||||
|
||||
while (vm::psv::read16(addr) == 0xf870)
|
||||
|
|
|
@ -965,7 +965,7 @@ void ARMv7_instrs::BLX(ARMv7Context& context, const ARMv7Code code, const ARMv7_
|
|||
}
|
||||
case A2:
|
||||
{
|
||||
cond = 15;
|
||||
cond = 0xe; // always true
|
||||
newLR = (context.thread.PC + 4) - 4;
|
||||
target = (context.thread.PC + 4 | 1) + sign<25, u32>((code.data & 0xffffff) << 2 | (code.data & 0x1000000) >> 23);
|
||||
break;
|
||||
|
@ -1355,6 +1355,7 @@ void ARMv7_instrs::LDR_IMM(ARMv7Context& context, const ARMv7Code code, const AR
|
|||
reject((wback && n == t) || (t == 15 && context.ITSTATE), "UNPREDICTABLE");
|
||||
break;
|
||||
}
|
||||
case A1: throw __FUNCTION__;
|
||||
default: throw __FUNCTION__;
|
||||
}
|
||||
|
||||
|
@ -1441,11 +1442,70 @@ void ARMv7_instrs::LDR_REG(ARMv7Context& context, const ARMv7Code code, const AR
|
|||
|
||||
void ARMv7_instrs::LDRB_IMM(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type)
|
||||
{
|
||||
u32 cond, t, n, imm32;
|
||||
bool index, add, wback;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case T1:
|
||||
{
|
||||
cond = context.ITSTATE.advance();
|
||||
t = (code.data & 0x7);
|
||||
n = (code.data & 0x38) >> 3;
|
||||
imm32 = (code.data & 0x7c0) >> 4;
|
||||
index = true;
|
||||
add = true;
|
||||
wback = false;
|
||||
break;
|
||||
}
|
||||
case T2:
|
||||
{
|
||||
cond = context.ITSTATE.advance();
|
||||
t = (code.data & 0xf000) >> 12;
|
||||
n = (code.data & 0xf0000) >> 16;
|
||||
imm32 = (code.data & 0xfff);
|
||||
index = true;
|
||||
add = true;
|
||||
wback = false;
|
||||
|
||||
reject(t == 15, "PLD");
|
||||
reject(n == 15, "LDRB (literal)");
|
||||
reject(t == 13, "UNPREDICTABLE");
|
||||
break;
|
||||
}
|
||||
case T3:
|
||||
{
|
||||
cond = context.ITSTATE.advance();
|
||||
t = (code.data & 0xf000) >> 12;
|
||||
n = (code.data & 0xf0000) >> 16;
|
||||
imm32 = (code.data & 0xff);
|
||||
index = (code.data & 0x400);
|
||||
add = (code.data & 0x200);
|
||||
wback = (code.data & 0x100);
|
||||
|
||||
reject(t == 15 && index && !add && !wback, "PLD");
|
||||
reject(n == 15, "LDRB (literal)");
|
||||
reject(index && add && !wback, "LDRBT");
|
||||
reject(!index && !wback, "UNDEFINED");
|
||||
reject(t == 13 || t == 15 || (wback && n == t), "UNPREDICTABLE");
|
||||
break;
|
||||
}
|
||||
case A1: throw __FUNCTION__;
|
||||
default: throw __FUNCTION__;
|
||||
}
|
||||
|
||||
if (ConditionPassed(context, cond))
|
||||
{
|
||||
const u32 offset_addr = add ? context.read_gpr(n) + imm32 : context.read_gpr(n) - imm32;
|
||||
const u32 addr = index ? offset_addr : context.read_gpr(n);
|
||||
|
||||
context.write_gpr(t, vm::psv::read8(addr));
|
||||
|
||||
if (wback)
|
||||
{
|
||||
context.write_gpr(n, offset_addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ARMv7_instrs::LDRB_LIT(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type)
|
||||
|
@ -1871,7 +1931,7 @@ void ARMv7_instrs::MOV_REG(ARMv7Context& context, const ARMv7Code code, const AR
|
|||
}
|
||||
case T2:
|
||||
{
|
||||
cond = 15;
|
||||
cond = 0xe; // always true
|
||||
d = (code.data & 0x7);
|
||||
m = (code.data & 0x38) >> 3;
|
||||
set_flags = true;
|
||||
|
@ -2999,11 +3059,67 @@ void ARMv7_instrs::STR_REG(ARMv7Context& context, const ARMv7Code code, const AR
|
|||
|
||||
void ARMv7_instrs::STRB_IMM(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type)
|
||||
{
|
||||
u32 cond, t, n, imm32;
|
||||
bool index, add, wback;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case T1:
|
||||
{
|
||||
cond = context.ITSTATE.advance();
|
||||
t = (code.data & 0x7);
|
||||
n = (code.data & 0x38) >> 3;
|
||||
imm32 = (code.data & 0x7c0) >> 4;
|
||||
index = true;
|
||||
add = true;
|
||||
wback = false;
|
||||
break;
|
||||
}
|
||||
case T2:
|
||||
{
|
||||
cond = context.ITSTATE.advance();
|
||||
t = (code.data & 0xf000) >> 12;
|
||||
n = (code.data & 0xf0000) >> 16;
|
||||
imm32 = (code.data & 0xfff);
|
||||
index = true;
|
||||
add = true;
|
||||
wback = false;
|
||||
|
||||
reject(n == 15, "UNDEFINED");
|
||||
reject(t == 13 || t == 15, "UNPREDICTABLE");
|
||||
break;
|
||||
}
|
||||
case T3:
|
||||
{
|
||||
cond = context.ITSTATE.advance();
|
||||
t = (code.data & 0xf000) >> 12;
|
||||
n = (code.data & 0xf0000) >> 16;
|
||||
imm32 = (code.data & 0xff);
|
||||
index = (code.data & 0x400);
|
||||
add = (code.data & 0x200);
|
||||
wback = (code.data & 0x100);
|
||||
|
||||
reject(index && add && !wback, "STRBT");
|
||||
reject(n == 15 || (!index && !wback), "UNDEFINED");
|
||||
reject(t == 13 || t == 15 || (wback && n == t), "UNPREDICTABLE");
|
||||
break;
|
||||
}
|
||||
case A1: throw __FUNCTION__;
|
||||
default: throw __FUNCTION__;
|
||||
}
|
||||
|
||||
if (ConditionPassed(context, cond))
|
||||
{
|
||||
const u32 offset_addr = add ? context.read_gpr(n) + imm32 : context.read_gpr(n) - imm32;
|
||||
const u32 addr = index ? offset_addr : context.read_gpr(n);
|
||||
|
||||
vm::psv::write8(addr, (u8)context.read_gpr(t));
|
||||
|
||||
if (wback)
|
||||
{
|
||||
context.write_gpr(n, offset_addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ARMv7_instrs::STRB_REG(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type)
|
||||
|
|
13
rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp
Normal file
13
rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
#include "Emu/ARMv7/PSVObjectList.h"
|
||||
#include "sceLibKernel.h"
|
||||
#include "psv_event_flag.h"
|
||||
|
||||
psv_event_flag_t::psv_event_flag_t(const char* name, u32 attr, u32 pattern)
|
||||
: attr(attr)
|
||||
, pattern(pattern)
|
||||
{
|
||||
strcpy_trunc(this->name, name);
|
||||
}
|
21
rpcs3/Emu/ARMv7/Modules/psv_event_flag.h
Normal file
21
rpcs3/Emu/ARMv7/Modules/psv_event_flag.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
struct psv_event_flag_t
|
||||
{
|
||||
char name[32];
|
||||
u32 attr;
|
||||
u32 pattern;
|
||||
|
||||
private:
|
||||
psv_event_flag_t() = delete;
|
||||
psv_event_flag_t(const psv_event_flag_t&) = delete;
|
||||
psv_event_flag_t(psv_event_flag_t&&) = delete;
|
||||
|
||||
psv_event_flag_t& operator =(const psv_event_flag_t&) = delete;
|
||||
psv_event_flag_t& operator =(psv_event_flag_t&&) = delete;
|
||||
|
||||
public:
|
||||
psv_event_flag_t(const char* name, u32 attr, u32 pattern);
|
||||
};
|
||||
|
||||
extern psv_object_list_t<psv_event_flag_t, SCE_KERNEL_THREADMGR_UID_CLASS_EVENT_FLAG> g_psv_ef_list;
|
14
rpcs3/Emu/ARMv7/Modules/psv_sema.cpp
Normal file
14
rpcs3/Emu/ARMv7/Modules/psv_sema.cpp
Normal file
|
@ -0,0 +1,14 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
#include "Emu/ARMv7/PSVObjectList.h"
|
||||
#include "sceLibKernel.h"
|
||||
#include "psv_sema.h"
|
||||
|
||||
psv_sema_t::psv_sema_t(const char* name, u32 attr, s32 init_value, s32 max_value)
|
||||
: attr(attr)
|
||||
, value(init_value)
|
||||
, max(max_value)
|
||||
{
|
||||
strcpy_trunc(this->name, name);
|
||||
}
|
23
rpcs3/Emu/ARMv7/Modules/psv_sema.h
Normal file
23
rpcs3/Emu/ARMv7/Modules/psv_sema.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
struct psv_sema_t
|
||||
{
|
||||
char name[32];
|
||||
u32 attr;
|
||||
s32 value;
|
||||
s32 max;
|
||||
|
||||
private:
|
||||
psv_sema_t() = delete;
|
||||
psv_sema_t(const psv_sema_t&) = delete;
|
||||
psv_sema_t(psv_sema_t&&) = delete;
|
||||
|
||||
psv_sema_t& operator =(const psv_sema_t&) = delete;
|
||||
psv_sema_t& operator =(psv_sema_t&&) = delete;
|
||||
|
||||
public:
|
||||
psv_sema_t(const char* name, u32 attr, s32 init_value, s32 max_value);
|
||||
|
||||
};
|
||||
|
||||
extern psv_object_list_t<psv_sema_t, SCE_KERNEL_THREADMGR_UID_CLASS_SEMA> g_psv_sema_list;
|
85
rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp
Normal file
85
rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp
Normal file
|
@ -0,0 +1,85 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
|
||||
extern psv_log_base sceCtrl;
|
||||
|
||||
struct SceCtrlData
|
||||
{
|
||||
u64 timeStamp;
|
||||
u32 buttons;
|
||||
u8 lx;
|
||||
u8 ly;
|
||||
u8 rx;
|
||||
u8 ry;
|
||||
u8 rsrv[16];
|
||||
};
|
||||
|
||||
struct SceCtrlRapidFireRule
|
||||
{
|
||||
u32 uiMask;
|
||||
u32 uiTrigger;
|
||||
u32 uiTarget;
|
||||
u32 uiDelay;
|
||||
u32 uiMake;
|
||||
u32 uiBreak;
|
||||
};
|
||||
|
||||
s32 sceCtrlSetSamplingMode(u32 uiMode)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlGetSamplingMode(vm::psv::ptr<u32> puiMode)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlPeekBufferPositive(s32 port, vm::psv::ptr<SceCtrlData> pData, s32 nBufs)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlPeekBufferNegative(s32 port, vm::psv::ptr<SceCtrlData> pData, s32 nBufs)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlReadBufferPositive(s32 port, vm::psv::ptr<SceCtrlData> pData, s32 nBufs)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlReadBufferNegative(s32 port, vm::psv::ptr<SceCtrlData> pData, s32 nBufs)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlSetRapidFire(s32 port, s32 idx, vm::psv::ptr<const SceCtrlRapidFireRule> pRule)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceCtrlClearRapidFire(s32 port, s32 idx)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
|
||||
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceCtrl, #name, name)
|
||||
|
||||
psv_log_base sceCtrl("SceCtrl", []()
|
||||
{
|
||||
sceCtrl.on_load = nullptr;
|
||||
sceCtrl.on_unload = nullptr;
|
||||
sceCtrl.on_stop = nullptr;
|
||||
|
||||
REG_FUNC(0xA497B150, sceCtrlSetSamplingMode);
|
||||
REG_FUNC(0xEC752AAF, sceCtrlGetSamplingMode);
|
||||
REG_FUNC(0xA9C3CED6, sceCtrlPeekBufferPositive);
|
||||
REG_FUNC(0x104ED1A7, sceCtrlPeekBufferNegative);
|
||||
REG_FUNC(0x67E7AB83, sceCtrlReadBufferPositive);
|
||||
REG_FUNC(0x15F96FB0, sceCtrlReadBufferNegative);
|
||||
REG_FUNC(0xE9CB69C8, sceCtrlSetRapidFire);
|
||||
REG_FUNC(0xD8294C9C, sceCtrlClearRapidFire);
|
||||
});
|
48
rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp
Normal file
48
rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp
Normal file
|
@ -0,0 +1,48 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
|
||||
extern psv_log_base sceDeci4p;
|
||||
|
||||
typedef s32(*SceKernelDeci4pCallback)(s32 notifyId, s32 notifyCount, s32 notifyArg, vm::psv::ptr<void> pCommon);
|
||||
|
||||
s32 sceKernelDeci4pOpen(vm::psv::ptr<const char> protoname, u32 protonum, u32 bufsize)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceKernelDeci4pClose(s32 socketid)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceKernelDeci4pRead(s32 socketid, vm::psv::ptr<void> buffer, u32 size, u32 reserved)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceKernelDeci4pWrite(s32 socketid, vm::psv::ptr<const void> buffer, u32 size, u32 reserved)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceKernelDeci4pRegisterCallback(s32 socketid, s32 cbid)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
|
||||
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceDeci4p, #name, name)
|
||||
|
||||
psv_log_base sceDeci4p("SceDeci4pUserp", []()
|
||||
{
|
||||
sceDeci4p.on_load = nullptr;
|
||||
sceDeci4p.on_unload = nullptr;
|
||||
sceDeci4p.on_stop = nullptr;
|
||||
|
||||
REG_FUNC(0x28578FE8, sceKernelDeci4pOpen);
|
||||
REG_FUNC(0x63B0C50F, sceKernelDeci4pClose);
|
||||
REG_FUNC(0x971E1C66, sceKernelDeci4pRead);
|
||||
REG_FUNC(0xCDA3AAAC, sceKernelDeci4pWrite);
|
||||
REG_FUNC(0x73371F35, sceKernelDeci4pRegisterCallback);
|
||||
});
|
113
rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp
Normal file
113
rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp
Normal file
|
@ -0,0 +1,113 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
|
||||
extern psv_log_base sceDisplay;
|
||||
|
||||
struct SceDisplayFrameBuf
|
||||
{
|
||||
u32 size;
|
||||
vm::psv::ptr<void> base;
|
||||
u32 pitch;
|
||||
u32 pixelformat;
|
||||
u32 width;
|
||||
u32 height;
|
||||
};
|
||||
|
||||
s32 sceDisplayGetRefreshRate(vm::psv::ptr<float> pFps)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplaySetFrameBuf(vm::psv::ptr<const SceDisplayFrameBuf> pFrameBuf, s32 iUpdateTimingMode)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayGetFrameBuf(vm::psv::ptr<SceDisplayFrameBuf> pFrameBuf, s32 iUpdateTimingMode)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayGetVcount()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitVblankStart()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitVblankStartCB()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitVblankStartMulti(u32 vcount)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitVblankStartMultiCB(u32 vcount)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitSetFrameBuf()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitSetFrameBufCB()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitSetFrameBufMulti(u32 vcount)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayWaitSetFrameBufMultiCB(u32 vcount)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayRegisterVblankStartCallback(s32 uid)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceDisplayUnregisterVblankStartCallback(s32 uid)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
|
||||
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceDisplay, #name, name)
|
||||
|
||||
psv_log_base sceDisplay("SceDisplay", []()
|
||||
{
|
||||
sceDisplay.on_load = nullptr;
|
||||
sceDisplay.on_unload = nullptr;
|
||||
sceDisplay.on_stop = nullptr;
|
||||
|
||||
// SceDisplayUser
|
||||
REG_FUNC(0x7A410B64, sceDisplaySetFrameBuf);
|
||||
REG_FUNC(0x42AE6BBC, sceDisplayGetFrameBuf);
|
||||
|
||||
// SceDisplay
|
||||
REG_FUNC(0xA08CA60D, sceDisplayGetRefreshRate);
|
||||
REG_FUNC(0xB6FDE0BA, sceDisplayGetVcount);
|
||||
REG_FUNC(0x5795E898, sceDisplayWaitVblankStart);
|
||||
REG_FUNC(0x78B41B92, sceDisplayWaitVblankStartCB);
|
||||
REG_FUNC(0xDD0A13B8, sceDisplayWaitVblankStartMulti);
|
||||
REG_FUNC(0x05F27764, sceDisplayWaitVblankStartMultiCB);
|
||||
REG_FUNC(0x9423560C, sceDisplayWaitSetFrameBuf);
|
||||
REG_FUNC(0x814C90AF, sceDisplayWaitSetFrameBufCB);
|
||||
REG_FUNC(0x7D9864A8, sceDisplayWaitSetFrameBufMulti);
|
||||
REG_FUNC(0x3E796EF5, sceDisplayWaitSetFrameBufMultiCB);
|
||||
REG_FUNC(0x6BDF4C4D, sceDisplayRegisterVblankStartCallback);
|
||||
REG_FUNC(0x98436A80, sceDisplayUnregisterVblankStartCallback);
|
||||
});
|
1290
rpcs3/Emu/ARMv7/Modules/sceGxm.cpp
Normal file
1290
rpcs3/Emu/ARMv7/Modules/sceGxm.cpp
Normal file
File diff suppressed because it is too large
Load diff
1244
rpcs3/Emu/ARMv7/Modules/sceGxm.h
Normal file
1244
rpcs3/Emu/ARMv7/Modules/sceGxm.h
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,12 +1,15 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
#include "Emu/ARMv7/PSVObjectList.h"
|
||||
|
||||
#include "Emu/CPU/CPUThreadManager.h"
|
||||
#include "Emu/SysCalls/Callback.h"
|
||||
#include "Emu/ARMv7/ARMv7Thread.h"
|
||||
|
||||
#include "sceLibKernel.h"
|
||||
#include "psv_sema.h"
|
||||
#include "psv_event_flag.h"
|
||||
|
||||
#define RETURN_ERROR(code) { Emu.Pause(); sceLibKernel.Error("%s() failed: %s", __FUNCTION__, #code); return code; }
|
||||
|
||||
|
@ -391,7 +394,13 @@ s32 sceKernelWaitMultipleEventsCB(vm::psv::ptr<SceKernelWaitEvent> pWaitEventLis
|
|||
|
||||
s32 sceKernelCreateEventFlag(vm::psv::ptr<const char> pName, u32 attr, u32 initPattern, vm::psv::ptr<const SceKernelEventFlagOptParam> pOptParam)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
sceLibKernel.Error("sceKernelCreateEventFlag(pName=0x%x, attr=0x%x, initPattern=0x%x, pOptParam=0x%x)", pName, attr, initPattern, pOptParam);
|
||||
|
||||
std::shared_ptr<psv_event_flag_t> ef(new psv_event_flag_t(pName.get_ptr(), attr, initPattern));
|
||||
|
||||
const s32 id = g_psv_ef_list.add(ef);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
s32 sceKernelDeleteEventFlag(s32 evfId)
|
||||
|
@ -450,12 +459,23 @@ s32 sceKernelCreateSema(vm::psv::ptr<const char> pName, u32 attr, s32 initCount,
|
|||
{
|
||||
sceLibKernel.Error("sceKernelCreateSema(pName=0x%x, attr=0x%x, initCount=%d, maxCount=%d, pOptParam=0x%x)", pName, attr, initCount, maxCount, pOptParam);
|
||||
|
||||
throw __FUNCTION__;
|
||||
std::shared_ptr<psv_sema_t> sema(new psv_sema_t(pName.get_ptr(), attr, initCount, maxCount));
|
||||
|
||||
const s32 id = g_psv_sema_list.add(sema);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
s32 sceKernelDeleteSema(s32 semaId)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
sceLibKernel.Error("sceKernelDeleteSema(semaId=0x%x)", semaId);
|
||||
|
||||
if (!g_psv_sema_list.remove(semaId))
|
||||
{
|
||||
RETURN_ERROR(SCE_KERNEL_ERROR_INVALID_UID);
|
||||
}
|
||||
|
||||
throw SCE_OK;
|
||||
}
|
||||
|
||||
s32 sceKernelOpenSema(vm::psv::ptr<const char> pName)
|
||||
|
@ -970,7 +990,7 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
|
||||
// REG_FUNC(???, sceKernelGetEventInfo);
|
||||
|
||||
//REG_FUNC(0x23EAA62, sceKernelPuts);
|
||||
//REG_FUNC(0x023EAA62, sceKernelPuts);
|
||||
//REG_FUNC(0xB0335388, sceClibToupper);
|
||||
//REG_FUNC(0x4C5471BC, sceClibTolower);
|
||||
//REG_FUNC(0xD8EBBB7E, sceClibLookCtypeTable);
|
||||
|
@ -1027,11 +1047,11 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
//REG_FUNC(0x4AE9C8E6, sceKernelAtomicGetAndSub64);
|
||||
//REG_FUNC(0x99E1796E, sceKernelAtomicSubAndGet8);
|
||||
//REG_FUNC(0xC26BBBB1, sceKernelAtomicSubAndGet16);
|
||||
//REG_FUNC(0x1C9CD92, sceKernelAtomicSubAndGet32);
|
||||
//REG_FUNC(0x01C9CD92, sceKernelAtomicSubAndGet32);
|
||||
//REG_FUNC(0x9BB4A94B, sceKernelAtomicSubAndGet64);
|
||||
//REG_FUNC(0x53DCA02B, sceKernelAtomicGetAndAnd8);
|
||||
//REG_FUNC(0x7A0CB056, sceKernelAtomicGetAndAnd16);
|
||||
//REG_FUNC(0x8266595, sceKernelAtomicGetAndAnd32);
|
||||
//REG_FUNC(0x08266595, sceKernelAtomicGetAndAnd32);
|
||||
//REG_FUNC(0x4828BC43, sceKernelAtomicGetAndAnd64);
|
||||
//REG_FUNC(0x86B9170F, sceKernelAtomicAndAndGet8);
|
||||
//REG_FUNC(0xF9890F7E, sceKernelAtomicAndAndGet16);
|
||||
|
@ -1083,9 +1103,9 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
//REG_FUNC(0x4C7AD128, sceKernelPowerLock);
|
||||
//REG_FUNC(0xAF8E9C11, sceKernelPowerUnlock);
|
||||
//REG_FUNC(0xB295EB61, sceKernelGetTLSAddr);
|
||||
REG_FUNC(0xFB972F9, sceKernelGetThreadId);
|
||||
REG_FUNC(0x0FB972F9, sceKernelGetThreadId);
|
||||
REG_FUNC(0xA37A6057, sceKernelGetCurrentThreadVfpException);
|
||||
//REG_FUNC(0xCA71EA2, sceKernelSendMsgPipe);
|
||||
//REG_FUNC(0x0CA71EA2, sceKernelSendMsgPipe);
|
||||
//REG_FUNC(0xA5CA74AC, sceKernelSendMsgPipeCB);
|
||||
//REG_FUNC(0xDFC670E0, sceKernelTrySendMsgPipe);
|
||||
//REG_FUNC(0x4E81DD5C, sceKernelReceiveMsgPipe);
|
||||
|
@ -1143,7 +1163,7 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
REG_FUNC(0xC08F5BC5, sceKernelDeleteSema);
|
||||
REG_FUNC(0xB028AB78, sceKernelOpenSema);
|
||||
REG_FUNC(0x817707AB, sceKernelCloseSema);
|
||||
REG_FUNC(0xC7B834B, sceKernelWaitSema);
|
||||
REG_FUNC(0x0C7B834B, sceKernelWaitSema);
|
||||
REG_FUNC(0x174692B4, sceKernelWaitSemaCB);
|
||||
REG_FUNC(0x66D6BF05, sceKernelCancelSema);
|
||||
REG_FUNC(0x595D3FA6, sceKernelGetSemaInfo);
|
||||
|
@ -1168,8 +1188,8 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
REG_FUNC(0x6864DCE2, sceKernelGetCondInfo);
|
||||
REG_FUNC(0x10A4976F, sceKernelSignalCond);
|
||||
REG_FUNC(0x2EB86929, sceKernelSignalCondAll);
|
||||
REG_FUNC(0x87629E6, sceKernelSignalCondTo);
|
||||
//REG_FUNC(0xA10C1C8, sceKernelCreateMsgPipe);
|
||||
REG_FUNC(0x087629E6, sceKernelSignalCondTo);
|
||||
//REG_FUNC(0x0A10C1C8, sceKernelCreateMsgPipe);
|
||||
//REG_FUNC(0x69F6575D, sceKernelDeleteMsgPipe);
|
||||
//REG_FUNC(0x230691DA, sceKernelOpenMsgPipe);
|
||||
//REG_FUNC(0x7E5C0C16, sceKernelCloseMsgPipe);
|
||||
|
@ -1198,7 +1218,7 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
REG_FUNC(0x2F3D35A3, sceKernelOpenTimer);
|
||||
REG_FUNC(0x17283DE6, sceKernelCloseTimer);
|
||||
REG_FUNC(0x1478249B, sceKernelStartTimer);
|
||||
REG_FUNC(0x75B1329, sceKernelStopTimer);
|
||||
REG_FUNC(0x075B1329, sceKernelStopTimer);
|
||||
REG_FUNC(0x1F59E04D, sceKernelGetTimerBase);
|
||||
REG_FUNC(0x3223CCD1, sceKernelGetTimerBaseWide);
|
||||
REG_FUNC(0x381DC300, sceKernelGetTimerTime);
|
||||
|
@ -1221,7 +1241,7 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
REG_FUNC(0x597D4607, sceKernelTryLockWriteRWLock);
|
||||
REG_FUNC(0xD9369DF2, sceKernelUnlockWriteRWLock);
|
||||
REG_FUNC(0x190CA94B, sceKernelCancelRWLock);
|
||||
REG_FUNC(0x79A573B, sceKernelGetRWLockInfo);
|
||||
REG_FUNC(0x079A573B, sceKernelGetRWLockInfo);
|
||||
REG_FUNC(0x8AF15B5F, sceKernelGetSystemTime);
|
||||
//REG_FUNC(0x99B2BF15, sceKernelPMonThreadGetCounter);
|
||||
//REG_FUNC(0x7C21C961, sceKernelPMonCpuGetCounter);
|
||||
|
@ -1245,14 +1265,14 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
REG_FUNC(0xBCA5B623, sceIoGetstat);
|
||||
REG_FUNC(0x29482F7F, sceIoChstat);
|
||||
REG_FUNC(0x98ACED6D, sceIoSync);
|
||||
REG_FUNC(0x4B30CB2, sceIoDevctl);
|
||||
REG_FUNC(0x04B30CB2, sceIoDevctl);
|
||||
REG_FUNC(0x54ABACFA, sceIoIoctl);
|
||||
//REG_FUNC(0x6A7EA9FD, sceIoOpenAsync);
|
||||
//REG_FUNC(0x84201C9B, sceIoCloseAsync);
|
||||
//REG_FUNC(0x7B3BE857, sceIoReadAsync);
|
||||
//REG_FUNC(0x21329B20, sceIoWriteAsync);
|
||||
//REG_FUNC(0xCAC5D672, sceIoLseekAsync);
|
||||
//REG_FUNC(0x99C54B9, sceIoIoctlAsync);
|
||||
//REG_FUNC(0x099C54B9, sceIoIoctlAsync);
|
||||
//REG_FUNC(0x446A60AC, sceIoRemoveAsync);
|
||||
//REG_FUNC(0x73FC184B, sceIoDopenAsync);
|
||||
//REG_FUNC(0x4D0597D7, sceIoDcloseAsync);
|
||||
|
@ -1285,7 +1305,7 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
//REG_FUNC(0xCD248267, sceKernelGetCurrentProcess);
|
||||
//REG_FUNC(0x2252890C, sceKernelPowerTick);
|
||||
//REG_FUNC(0x9E45DA09, sceKernelLibcClock);
|
||||
//REG_FUNC(0x39BE45, sceKernelLibcTime);
|
||||
//REG_FUNC(0x0039BE45, sceKernelLibcTime);
|
||||
//REG_FUNC(0x4B879059, sceKernelLibcGettimeofday);
|
||||
//REG_FUNC(0xC1727F59, sceKernelGetStdin);
|
||||
//REG_FUNC(0xE5AA625C, sceKernelGetStdout);
|
||||
|
@ -1318,12 +1338,12 @@ psv_log_base sceLibKernel("sceLibKernel", []()
|
|||
//REG_FUNC(0x800EDCC1, sceKernelClearDipsw);
|
||||
|
||||
/* SceThreadmgr */
|
||||
REG_FUNC(0xC8A38E1, sceKernelExitThread);
|
||||
REG_FUNC(0x0C8A38E1, sceKernelExitThread);
|
||||
REG_FUNC(0x1D17DECF, sceKernelExitDeleteThread);
|
||||
REG_FUNC(0x4B675D05, sceKernelDelayThread);
|
||||
REG_FUNC(0x9C0180E1, sceKernelDelayThreadCB);
|
||||
//REG_FUNC(0x1173F8, sceKernelChangeActiveCpuMask);
|
||||
REG_FUNC(0x1414F0B, sceKernelGetThreadCurrentPriority);
|
||||
//REG_FUNC(0x001173F8, sceKernelChangeActiveCpuMask);
|
||||
REG_FUNC(0x01414F0B, sceKernelGetThreadCurrentPriority);
|
||||
REG_FUNC(0x751C9B7A, sceKernelChangeCurrentThreadAttr);
|
||||
REG_FUNC(0xD9BD74EB, sceKernelCheckWaitableStatus);
|
||||
REG_FUNC(0x9DCB4B7A, sceKernelGetProcessId);
|
||||
|
|
|
@ -251,6 +251,20 @@ enum
|
|||
SCE_KERNEL_ERROR_NO_AUTH = 0x8002F001,
|
||||
};
|
||||
|
||||
enum psv_object_class_t : u32
|
||||
{
|
||||
SCE_KERNEL_UID_CLASS_PROCESS = 0,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_THREAD = 1,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_SEMA = 2,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_EVENT_FLAG = 3,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_MUTEX = 4,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_COND = 5,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_TIMER = 6,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_MSG_PIPE = 7,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_CALLBACK = 8,
|
||||
SCE_KERNEL_THREADMGR_UID_CLASS_THREAD_EVENT = 9,
|
||||
};
|
||||
|
||||
union SceKernelSysClock
|
||||
{
|
||||
struct
|
||||
|
@ -292,7 +306,7 @@ struct SceKernelAllocMemBlockOpt
|
|||
|
||||
// Thread Manager definitions (threads)
|
||||
|
||||
typedef s32(*SceKernelThreadEntry)(u32 argSize, vm::psv::ptr<void> pArgBlock);
|
||||
typedef s32(SceKernelThreadEntry)(u32 argSize, vm::psv::ptr<void> pArgBlock);
|
||||
|
||||
struct SceKernelThreadOptParam
|
||||
{
|
||||
|
@ -357,7 +371,7 @@ struct SceKernelSystemInfo
|
|||
|
||||
// Thread Manager definitions (callbacks)
|
||||
|
||||
typedef s32(*SceKernelCallbackFunction)(s32 notifyId, s32 notifyCount, s32 notifyArg, vm::psv::ptr<void> pCommon);
|
||||
typedef s32(SceKernelCallbackFunction)(s32 notifyId, s32 notifyCount, s32 notifyArg, vm::psv::ptr<void> pCommon);
|
||||
|
||||
struct SceKernelCallbackInfo
|
||||
{
|
||||
|
@ -375,7 +389,7 @@ struct SceKernelCallbackInfo
|
|||
|
||||
// Thread Manager definitions (events)
|
||||
|
||||
typedef s32(*SceKernelThreadEventHandler)(s32 type, s32 threadId, s32 arg, vm::psv::ptr<void> pCommon);
|
||||
typedef s32(SceKernelThreadEventHandler)(s32 type, s32 threadId, s32 arg, vm::psv::ptr<void> pCommon);
|
||||
|
||||
struct SceKernelEventInfo
|
||||
{
|
||||
|
|
|
@ -8,7 +8,7 @@ extern psv_log_base sceLibc;
|
|||
|
||||
vm::psv::ptr<void> g_dso;
|
||||
|
||||
typedef void(*atexit_func_t)(vm::psv::ptr<void>);
|
||||
typedef void(atexit_func_t)(vm::psv::ptr<void>);
|
||||
|
||||
std::vector<std::function<void(ARMv7Context&)>> g_atexit;
|
||||
|
||||
|
|
|
@ -47,10 +47,10 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0x63F05BD6, ceil);
|
||||
//REG_FUNC(0x6BBFEC89, ceilf);
|
||||
//REG_FUNC(0x48082D81, ceill);
|
||||
//REG_FUNC(0xB918D13, copysign);
|
||||
//REG_FUNC(0x0B918D13, copysign);
|
||||
//REG_FUNC(0x16EB9E63, copysignf);
|
||||
//REG_FUNC(0x19DFC0AA, copysignl);
|
||||
//REG_FUNC(0x61D0244, cos);
|
||||
//REG_FUNC(0x061D0244, cos);
|
||||
//REG_FUNC(0x127F8302, cosf);
|
||||
//REG_FUNC(0x89B9BE1F, cosl);
|
||||
//REG_FUNC(0x110195E7, cosh);
|
||||
|
@ -59,7 +59,7 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0x4B84C012, _Cosh);
|
||||
//REG_FUNC(0x15993458, erf);
|
||||
//REG_FUNC(0x524AEBFE, erfc);
|
||||
//REG_FUNC(0x301F113, erfcf);
|
||||
//REG_FUNC(0x0301F113, erfcf);
|
||||
//REG_FUNC(0xD4C92471, erfcl);
|
||||
//REG_FUNC(0x41DD1AB8, erff);
|
||||
//REG_FUNC(0xFD431619, erfl);
|
||||
|
@ -74,7 +74,7 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0x8BF1866C, expm1l);
|
||||
//REG_FUNC(0x3E672BE3, fabs);
|
||||
//REG_FUNC(0x75348906, fabsf);
|
||||
//REG_FUNC(0x3ECA514, fabsl);
|
||||
//REG_FUNC(0x03ECA514, fabsl);
|
||||
//REG_FUNC(0xA278B20D, _FCosh);
|
||||
//REG_FUNC(0xD6FD5A2E, fdim);
|
||||
//REG_FUNC(0x8B6CC137, fdimf);
|
||||
|
@ -96,19 +96,19 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0x1CD8F88E, fmodf);
|
||||
//REG_FUNC(0x986011B4, fmodl);
|
||||
//REG_FUNC(0x59197427, frexp);
|
||||
//REG_FUNC(0xA6879AC, frexpf);
|
||||
//REG_FUNC(0x0A6879AC, frexpf);
|
||||
//REG_FUNC(0x6DC8D877, frexpl);
|
||||
//REG_FUNC(0x4A496BC0, _FSin);
|
||||
//REG_FUNC(0x7FBB4C55, _FSinh);
|
||||
//REG_FUNC(0x2D2CD795, hypot);
|
||||
//REG_FUNC(0xA397B929, hypotf);
|
||||
//REG_FUNC(0x5BFBEE8, hypotl);
|
||||
//REG_FUNC(0x05BFBEE8, hypotl);
|
||||
//REG_FUNC(0x667EE864, ilogb);
|
||||
//REG_FUNC(0x80050A43, ilogbf);
|
||||
//REG_FUNC(0x91298DCA, ilogbl);
|
||||
//REG_FUNC(0x197C9D5, _LCosh);
|
||||
//REG_FUNC(0x56061B, ldexp);
|
||||
//REG_FUNC(0xE61E016, ldexpf);
|
||||
//REG_FUNC(0x0197C9D5, _LCosh);
|
||||
//REG_FUNC(0x0056061B, ldexp);
|
||||
//REG_FUNC(0x0E61E016, ldexpf);
|
||||
//REG_FUNC(0x8280A7B1, ldexpl);
|
||||
//REG_FUNC(0x2480AA54, lgamma);
|
||||
//REG_FUNC(0x2D9556D5, lgammaf);
|
||||
|
@ -118,7 +118,7 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0xC1F6135B, llrintf);
|
||||
//REG_FUNC(0x80558247, llrintl);
|
||||
//REG_FUNC(0xD1251A18, llround);
|
||||
//REG_FUNC(0x4595A04, llroundf);
|
||||
//REG_FUNC(0x04595A04, llroundf);
|
||||
//REG_FUNC(0x9AB5C7AF, llroundl);
|
||||
//REG_FUNC(0x6037C48F, log);
|
||||
//REG_FUNC(0x811ED68B, logf);
|
||||
|
@ -134,7 +134,7 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0x4095DBDB, log2f);
|
||||
//REG_FUNC(0x720021A9, log2l);
|
||||
//REG_FUNC(0x5EAE8AD4, logb);
|
||||
//REG_FUNC(0x25F51CE, logbf);
|
||||
//REG_FUNC(0x025F51CE, logbf);
|
||||
//REG_FUNC(0x86C4B75F, logbl);
|
||||
//REG_FUNC(0x207307D0, lrint);
|
||||
//REG_FUNC(0xDA903135, lrintf);
|
||||
|
@ -200,8 +200,8 @@ psv_log_base sceLibm("SceLibm", []()
|
|||
//REG_FUNC(0x3A7FE686, tgamma);
|
||||
//REG_FUNC(0xE6067AC0, tgammaf);
|
||||
//REG_FUNC(0x2949109F, tgammal);
|
||||
//REG_FUNC(0x212323E, trunc);
|
||||
//REG_FUNC(0x90B899F, truncf);
|
||||
//REG_FUNC(0x0212323E, trunc);
|
||||
//REG_FUNC(0x090B899F, truncf);
|
||||
//REG_FUNC(0xBC0F1B1A, truncl);
|
||||
//REG_FUNC(0x98BBDAE0, _Dclass);
|
||||
//REG_FUNC(0xBD8EF217, _FDclass);
|
||||
|
|
|
@ -25,7 +25,8 @@ namespace sce_libstdcxx_func
|
|||
}
|
||||
}
|
||||
|
||||
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceLibstdcxx, #name, &sce_libstdcxx_func::name)
|
||||
// Attention: find and set correct original mangled name in third parameter, for example: REG_FUNC(0xAE71DC3, operator_new_nothrow, "_ZnwjRKSt9nothrow_t");
|
||||
#define REG_FUNC(nid, name, orig_name) reg_psv_func(nid, &sceLibstdcxx, orig_name, &sce_libstdcxx_func::name)
|
||||
|
||||
psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
||||
{
|
||||
|
@ -55,14 +56,14 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x16F56E8D, std::invalid_argument::_Doraise() const);
|
||||
//REG_FUNC(0x6C568D20, std::_ctype<char>::do_tolower(char*, char const*) const);
|
||||
//REG_FUNC(0xC334DE66, std::_ctype<char>::do_tolower(char) const);
|
||||
//REG_FUNC(0x2DD808E, std::_ctype<char>::do_toupper(char*, char const*) const);
|
||||
//REG_FUNC(0x02DD808E, std::_ctype<char>::do_toupper(char*, char const*) const);
|
||||
//REG_FUNC(0xF6AF33EA, std::_ctype<char>::do_toupper(char) const);
|
||||
//REG_FUNC(0x1B81D726, std::_ctype<char>::do_widen(char const*, char const*, char*) const);
|
||||
//REG_FUNC(0x6471CC01, std::_ctype<char>::do_widen(char) const);
|
||||
//REG_FUNC(0x9CFA56E5, std::_ctype<char>::do_narrow(char const*, char const*, char, char*) const);
|
||||
//REG_FUNC(0x718669AB, std::_ctype<char>::do_narrow(char, char) const);
|
||||
//REG_FUNC(0x759F105D, std::_ctype<wchar_t>::do_scan_is(short, wchar_t const*, wchar_t const*) const);
|
||||
//REG_FUNC(0x56443F, std::_ctype<wchar_t>::do_tolower(wchar_t*, wchar_t const*) const);
|
||||
//REG_FUNC(0x0056443F, std::_ctype<wchar_t>::do_tolower(wchar_t*, wchar_t const*) const);
|
||||
//REG_FUNC(0x33E9ECDD, std::_ctype<wchar_t>::do_tolower(wchar_t) const);
|
||||
//REG_FUNC(0x1256E6A5, std::_ctype<wchar_t>::do_toupper(wchar_t*, wchar_t const*) const);
|
||||
//REG_FUNC(0x64072C2E, std::_ctype<wchar_t>::do_toupper(wchar_t) const);
|
||||
|
@ -90,7 +91,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x664750EE, std::bad_alloc::what() const);
|
||||
//REG_FUNC(0xBA89FBE7, std::bad_alloc::_Doraise() const);
|
||||
//REG_FUNC(0xC133E331, std::exception::what() const);
|
||||
//REG_FUNC(0x656BE32, std::exception::_Raise() const);
|
||||
//REG_FUNC(0x0656BE32, std::exception::_Raise() const);
|
||||
//REG_FUNC(0x47A5CDA2, std::exception::_Doraise() const);
|
||||
//REG_FUNC(0xBAE38DF9, std::type_info::name() const);
|
||||
//REG_FUNC(0x1F260F10, std::type_info::before(std::type_info const&) const);
|
||||
|
@ -118,10 +119,10 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x9CF31703, std::istrstream::~istrstream());
|
||||
//REG_FUNC(0x71D13A36, std::istrstream::~istrstream());
|
||||
//REG_FUNC(0xAF5DF8C3, std::istrstream::~istrstream());
|
||||
//REG_FUNC(0xC1E7C7A, std::ostrstream::ostrstream(char*, int, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0xC09B290, std::ostrstream::ostrstream(char*, int, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x0C1E7C7A, std::ostrstream::ostrstream(char*, int, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x0C09B290, std::ostrstream::ostrstream(char*, int, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x4B8BA644, std::ostrstream::~ostrstream());
|
||||
//REG_FUNC(0xE463FB3, std::ostrstream::~ostrstream());
|
||||
//REG_FUNC(0x0E463FB3, std::ostrstream::~ostrstream());
|
||||
//REG_FUNC(0xA0A34FEF, std::ostrstream::~ostrstream());
|
||||
//REG_FUNC(0xC9F632FF, std::logic_error::logic_error(std::logic_error const&));
|
||||
//REG_FUNC(0xE6356C5C, std::logic_error::logic_error(std::string const&));
|
||||
|
@ -135,12 +136,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x7D5412EF, std::domain_error::domain_error(std::domain_error const&));
|
||||
//REG_FUNC(0x803A7D3E, std::domain_error::~domain_error());
|
||||
//REG_FUNC(0xA6BCA2AD, std::domain_error::~domain_error());
|
||||
//REG_FUNC(0x36F9D2A, std::domain_error::~domain_error());
|
||||
//REG_FUNC(0x036F9D2A, std::domain_error::~domain_error());
|
||||
//REG_FUNC(0x5F3428AD, std::length_error::length_error(std::length_error const&));
|
||||
//REG_FUNC(0xF6FB801D, std::length_error::length_error(std::string const&));
|
||||
//REG_FUNC(0xF83AA7DA, std::length_error::~length_error());
|
||||
//REG_FUNC(0xA873D7F9, std::length_error::~length_error());
|
||||
//REG_FUNC(0xBB12C75, std::length_error::~length_error());
|
||||
//REG_FUNC(0x0BB12C75, std::length_error::~length_error());
|
||||
//REG_FUNC(0x299AA587, std::out_of_range::out_of_range(std::out_of_range const&));
|
||||
//REG_FUNC(0xC8BA5522, std::out_of_range::out_of_range(std::string const&));
|
||||
//REG_FUNC(0xA8C470A4, std::out_of_range::~out_of_range());
|
||||
|
@ -156,7 +157,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xA9F4FABF, std::strstreambuf::underflow());
|
||||
//REG_FUNC(0x1C887DDE, std::strstreambuf::~strstreambuf());
|
||||
//REG_FUNC(0x29E1E930, std::strstreambuf::~strstreambuf());
|
||||
//REG_FUNC(0xA140889, std::strstreambuf::~strstreambuf());
|
||||
//REG_FUNC(0x0A140889, std::strstreambuf::~strstreambuf());
|
||||
//REG_FUNC(0xA8FE6FC4, std::_codecvt_base::~_codecvt_base());
|
||||
//REG_FUNC(0xB0E47AE4, std::_codecvt_base::~_codecvt_base());
|
||||
//REG_FUNC(0xB7EE9CC2, std::bad_exception::bad_exception(std::bad_exception const&));
|
||||
|
@ -173,7 +174,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x413E813E, std::basic_filebuf<char, std::char_traits<char> >::setbuf(char*, int));
|
||||
//REG_FUNC(0x9D193B65, std::basic_filebuf<char, std::char_traits<char> >::_Unlock());
|
||||
//REG_FUNC(0x52E47FB5, std::basic_filebuf<char, std::char_traits<char> >::seekoff(long, std::_Iosb<int>::_Seekdir, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0xE119B37, std::basic_filebuf<char, std::char_traits<char> >::seekpos(std::fpos<std::_Mbstatet>, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x0E119B37, std::basic_filebuf<char, std::char_traits<char> >::seekpos(std::fpos<std::_Mbstatet>, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x616754BC, std::basic_filebuf<char, std::char_traits<char> >::overflow(int));
|
||||
//REG_FUNC(0xCD5BD2E1, std::basic_filebuf<char, std::char_traits<char> >::_Endwrite());
|
||||
//REG_FUNC(0xFC1C7F3A, std::basic_filebuf<char, std::char_traits<char> >::pbackfail(int));
|
||||
|
@ -196,7 +197,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xFFFA683E, std::basic_istream<wchar_t, std::char_traits<wchar_t> >::~basic_istream());
|
||||
//REG_FUNC(0xB58839C5, std::basic_istream<wchar_t, std::char_traits<wchar_t> >::~basic_istream());
|
||||
//REG_FUNC(0x9BF8855B, std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::basic_ostream(std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >*, bool));
|
||||
//REG_FUNC(0xD74F56E, std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream());
|
||||
//REG_FUNC(0x0D74F56E, std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream());
|
||||
//REG_FUNC(0x9B831B60, std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream());
|
||||
//REG_FUNC(0x396337CE, std::runtime_error::runtime_error(std::runtime_error const&));
|
||||
//REG_FUNC(0xDAD26367, std::runtime_error::~runtime_error());
|
||||
|
@ -208,20 +209,20 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x4E45F680, std::overflow_error::~overflow_error());
|
||||
//REG_FUNC(0x626515E3, std::basic_streambuf<char, std::char_traits<char> >::sync());
|
||||
//REG_FUNC(0x2E55F15A, std::basic_streambuf<char, std::char_traits<char> >::_Lock());
|
||||
//REG_FUNC(0xF8535AB, std::basic_streambuf<char, std::char_traits<char> >::uflow());
|
||||
//REG_FUNC(0x0F8535AB, std::basic_streambuf<char, std::char_traits<char> >::uflow());
|
||||
//REG_FUNC(0xD7933D06, std::basic_streambuf<char, std::char_traits<char> >::setbuf(char*, int));
|
||||
//REG_FUNC(0xB8BCCC8D, std::basic_streambuf<char, std::char_traits<char> >::xsgetn(char*, int));
|
||||
//REG_FUNC(0x43E5D0F1, std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, int));
|
||||
//REG_FUNC(0x149B193A, std::basic_streambuf<char, std::char_traits<char> >::_Unlock());
|
||||
//REG_FUNC(0x600998EC, std::basic_streambuf<char, std::char_traits<char> >::seekoff(long, std::_Iosb<int>::_Seekdir, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x1DEFFD6, std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<std::_Mbstatet>, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0x01DEFFD6, std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<std::_Mbstatet>, std::_Iosb<int>::_Openmode));
|
||||
//REG_FUNC(0xF5F44352, std::basic_streambuf<char, std::char_traits<char> >::overflow(int));
|
||||
//REG_FUNC(0xCA79344F, std::basic_streambuf<char, std::char_traits<char> >::pbackfail(int));
|
||||
//REG_FUNC(0x441788B1, std::basic_streambuf<char, std::char_traits<char> >::showmanyc());
|
||||
//REG_FUNC(0x797DAE94, std::basic_streambuf<char, std::char_traits<char> >::underflow());
|
||||
//REG_FUNC(0x74AD52E, std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf());
|
||||
//REG_FUNC(0x074AD52E, std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf());
|
||||
//REG_FUNC(0xE449E2BF, std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf());
|
||||
//REG_FUNC(0x9FAA0AA, std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::sync());
|
||||
//REG_FUNC(0x09FAA0AA, std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::sync());
|
||||
//REG_FUNC(0xA596C88C, std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::_Lock());
|
||||
//REG_FUNC(0x373C2CD8, std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::uflow());
|
||||
//REG_FUNC(0x3F363796, std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::setbuf(wchar_t*, int));
|
||||
|
@ -245,7 +246,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x9982A4FC, std::invalid_argument::~invalid_argument());
|
||||
//REG_FUNC(0x1AB2B1AC, std::invalid_argument::~invalid_argument());
|
||||
//REG_FUNC(0xF9FAB558, std::_Mutex::_Lock());
|
||||
//REG_FUNC(0x402C9F8, std::_Mutex::_Unlock());
|
||||
//REG_FUNC(0x0402C9F8, std::_Mutex::_Unlock());
|
||||
//REG_FUNC(0x9DA92617, std::_Mutex::_Mutex(std::_Uninitialized));
|
||||
//REG_FUNC(0xA4F99AE7, std::_Mutex::_Mutex());
|
||||
//REG_FUNC(0x7B5A6B7F, std::_Mutex::_Mutex(std::_Uninitialized));
|
||||
|
@ -278,12 +279,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x65D88619, std::ios_base::Init::~Init());
|
||||
//REG_FUNC(0x3483E01D, std::ios_base::Init::~Init());
|
||||
//REG_FUNC(0x78CB190E, std::ios_base::_Init());
|
||||
//REG_FUNC(0x23B8BEE, std::ios_base::_Tidy());
|
||||
//REG_FUNC(0x023B8BEE, std::ios_base::_Tidy());
|
||||
//REG_FUNC(0xC9DE8208, std::ios_base::clear(std::_Iosb<int>::_Iostate, bool));
|
||||
//REG_FUNC(0xAA9171FB, std::ios_base::_Addstd());
|
||||
//REG_FUNC(0xFC58778, std::ios_base::copyfmt(std::ios_base const&));
|
||||
//REG_FUNC(0x0FC58778, std::ios_base::copyfmt(std::ios_base const&));
|
||||
//REG_FUNC(0x2DF76755, std::ios_base::failure::failure(std::ios_base::failure const&));
|
||||
//REG_FUNC(0x94048F7, std::ios_base::failure::failure(std::string const&));
|
||||
//REG_FUNC(0x094048F7, std::ios_base::failure::failure(std::string const&));
|
||||
//REG_FUNC(0x20AAAB95, std::ios_base::failure::~failure());
|
||||
//REG_FUNC(0x31D0197A, std::ios_base::failure::~failure());
|
||||
//REG_FUNC(0x7736E940, std::ios_base::_Callfns(std::ios_base::event));
|
||||
|
@ -296,18 +297,18 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x6AF75467, std::bad_alloc::bad_alloc(std::bad_alloc const&));
|
||||
//REG_FUNC(0x57096162, std::bad_alloc::bad_alloc());
|
||||
//REG_FUNC(0xB2DAA408, std::bad_alloc::~bad_alloc());
|
||||
//REG_FUNC(0x7AEE736, std::bad_alloc::~bad_alloc());
|
||||
//REG_FUNC(0x07AEE736, std::bad_alloc::~bad_alloc());
|
||||
//REG_FUNC(0xA9E9B7B7, std::bad_alloc::~bad_alloc());
|
||||
//REG_FUNC(0x7853E8E5, std::bad_alloc::operator=(std::bad_alloc const&));
|
||||
//REG_FUNC(0xF78468EB, std::basic_ios<char, std::char_traits<char> >::~basic_ios());
|
||||
//REG_FUNC(0x3150182, std::basic_ios<char, std::char_traits<char> >::~basic_ios());
|
||||
//REG_FUNC(0x03150182, std::basic_ios<char, std::char_traits<char> >::~basic_ios());
|
||||
//REG_FUNC(0x9654168A, std::basic_ios<wchar_t, std::char_traits<wchar_t> >::~basic_ios());
|
||||
//REG_FUNC(0x8FFB8524, std::basic_ios<wchar_t, std::char_traits<wchar_t> >::~basic_ios());
|
||||
//REG_FUNC(0x7AF1BB16, std::exception::_Set_raise_handler(void (*)(std::exception const&)));
|
||||
//REG_FUNC(0x8C5A4417, std::exception::exception(std::exception const&));
|
||||
//REG_FUNC(0xFC169D71, std::exception::exception());
|
||||
//REG_FUNC(0x59758E74, std::exception::exception(std::exception const&));
|
||||
//REG_FUNC(0xE08376, std::exception::exception());
|
||||
//REG_FUNC(0x00E08376, std::exception::exception());
|
||||
//REG_FUNC(0x82EEA67E, std::exception::~exception());
|
||||
//REG_FUNC(0x30405D88, std::exception::~exception());
|
||||
//REG_FUNC(0xAF7A7081, std::exception::~exception());
|
||||
|
@ -319,7 +320,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x7D8DFE43, std::strstream::~strstream());
|
||||
//REG_FUNC(0x8D4B1A13, std::type_info::~type_info());
|
||||
//REG_FUNC(0xBD786240, std::type_info::~type_info());
|
||||
//REG_FUNC(0xC04303, std::type_info::~type_info());
|
||||
//REG_FUNC(0x00C04303, std::type_info::~type_info());
|
||||
//REG_FUNC(0x9983D8B9, std::unexpected());
|
||||
//REG_FUNC(0x385D19B2, std::setiosflags(std::_Iosb<int>::_Fmtflags));
|
||||
//REG_FUNC(0xD8A78A61, std::setprecision(int));
|
||||
|
@ -328,7 +329,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x644CBAA2, std::_Debug_message(char const*, char const*));
|
||||
//REG_FUNC(0x9B2F0CA6, std::set_unexpected(void (*)()));
|
||||
//REG_FUNC(0xC107B555, std::set_new_handler(void (*)()));
|
||||
//REG_FUNC(0x11CEB00, std::uncaught_exception());
|
||||
//REG_FUNC(0x011CEB00, std::uncaught_exception());
|
||||
//REG_FUNC(0x36282336, std::__gen_dummy_typeinfos());
|
||||
//REG_FUNC(0x3622003F, std::setw(int));
|
||||
//REG_FUNC(0x6CAFA8EF, std::_Throw(std::exception const&));
|
||||
|
@ -365,7 +366,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xE7FB2BF4, operator new[](unsigned int));
|
||||
//REG_FUNC(0x31C62481, operator new[](unsigned int, std::nothrow_t const&));
|
||||
//REG_FUNC(0xF99ED5AC, operator new(unsigned int));
|
||||
//REG_FUNC(0xAE71DC3, operator new(unsigned int, std::nothrow_t const&));
|
||||
//REG_FUNC(0x0AE71DC3, operator new(unsigned int, std::nothrow_t const&));
|
||||
//REG_FUNC(0x1818C323, _SNC_get_global_vars);
|
||||
//REG_FUNC(0x2CFA1F15, _SNC_get_tlocal_vars);
|
||||
//REG_FUNC(0x7742D916, _Unwind_Backtrace);
|
||||
|
@ -376,9 +377,9 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xE7889A5B, _Unwind_VRS_Get);
|
||||
//REG_FUNC(0xF106D050, _Unwind_VRS_Pop);
|
||||
//REG_FUNC(0x91CDA2F9, _Unwind_VRS_Set);
|
||||
REG_FUNC(0x173E7421, __aeabi_unwind_cpp_pr0);
|
||||
REG_FUNC(0x3C78DDE3, __aeabi_unwind_cpp_pr1);
|
||||
REG_FUNC(0xF95BDD36, __aeabi_unwind_cpp_pr2);
|
||||
REG_FUNC(0x173E7421, __aeabi_unwind_cpp_pr0, "__aeabi_unwind_cpp_pr0");
|
||||
REG_FUNC(0x3C78DDE3, __aeabi_unwind_cpp_pr1, "__aeabi_unwind_cpp_pr1");
|
||||
REG_FUNC(0xF95BDD36, __aeabi_unwind_cpp_pr2, "__aeabi_unwind_cpp_pr2");
|
||||
//REG_FUNC(0x8C93EFDA, __cxa_allocate_exception);
|
||||
//REG_FUNC(0x6165EE89, __cxa_begin_catch);
|
||||
//REG_FUNC(0x5D74285C, __cxa_begin_cleanup);
|
||||
|
@ -427,12 +428,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xBF90A45A, _PJP_CPP_Copyright);
|
||||
//REG_FUNC(0x3B6D9752, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::npos);
|
||||
//REG_FUNC(0xA3498140, std::string::npos);
|
||||
//REG_FUNC(0x5273EA3, std::_Num_int_base::is_bounded);
|
||||
//REG_FUNC(0x05273EA3, std::_Num_int_base::is_bounded);
|
||||
//REG_FUNC(0x8A0994F8, std::_Num_int_base::is_integer);
|
||||
//REG_FUNC(0x401F1224, std::_Num_int_base::is_specialized);
|
||||
//REG_FUNC(0xA65FE916, std::_Num_int_base::radix);
|
||||
//REG_FUNC(0xF2AA872E, std::_Num_int_base::is_exact);
|
||||
//REG_FUNC(0x8FE5A4F, std::_Num_int_base::is_modulo);
|
||||
//REG_FUNC(0x08FE5A4F, std::_Num_int_base::is_modulo);
|
||||
//REG_FUNC(0x7D4C55EC, std::numeric_limits<signed char>::digits);
|
||||
//REG_FUNC(0xA4E5BF5E, std::numeric_limits<signed char>::digits10);
|
||||
//REG_FUNC(0xD9938B84, std::numeric_limits<signed char>::is_signed);
|
||||
|
@ -441,7 +442,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x81B82E0E, std::numeric_limits<bool>::is_modulo);
|
||||
//REG_FUNC(0x9E6D2025, std::numeric_limits<bool>::is_signed);
|
||||
//REG_FUNC(0x810ED593, std::numeric_limits<char>::digits);
|
||||
//REG_FUNC(0xAC1A819, std::numeric_limits<char>::digits10);
|
||||
//REG_FUNC(0x0AC1A819, std::numeric_limits<char>::digits10);
|
||||
//REG_FUNC(0x660E14E1, std::numeric_limits<char>::is_signed);
|
||||
//REG_FUNC(0x3EEB3B23, std::numeric_limits<double>::max_exponent);
|
||||
//REG_FUNC(0x13B634BE, std::numeric_limits<double>::min_exponent);
|
||||
|
@ -469,10 +470,10 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x3AB38CDA, std::numeric_limits<int>::is_signed);
|
||||
//REG_FUNC(0xEEB7B642, std::numeric_limits<unsigned int>::digits);
|
||||
//REG_FUNC(0xBCDE68B3, std::numeric_limits<unsigned int>::digits10);
|
||||
//REG_FUNC(0xDA8EFB0, std::numeric_limits<unsigned int>::is_signed);
|
||||
//REG_FUNC(0x0DA8EFB0, std::numeric_limits<unsigned int>::is_signed);
|
||||
//REG_FUNC(0x65DAD8D6, std::numeric_limits<long>::digits);
|
||||
//REG_FUNC(0xFB52BC0A, std::numeric_limits<long>::digits10);
|
||||
//REG_FUNC(0x63544FC, std::numeric_limits<long>::is_signed);
|
||||
//REG_FUNC(0x063544FC, std::numeric_limits<long>::is_signed);
|
||||
//REG_FUNC(0x441D097A, std::numeric_limits<unsigned long>::digits);
|
||||
//REG_FUNC(0xB56F1B07, std::numeric_limits<unsigned long>::digits10);
|
||||
//REG_FUNC(0xA9799886, std::numeric_limits<unsigned long>::is_signed);
|
||||
|
@ -513,13 +514,13 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x759FD02E, std::_Iosb<int>::app);
|
||||
//REG_FUNC(0x6F410A00, std::_Iosb<int>::ate);
|
||||
//REG_FUNC(0xD2A42D0C, std::_Iosb<int>::beg);
|
||||
//REG_FUNC(0x9B45C3B, std::_Iosb<int>::cur);
|
||||
//REG_FUNC(0x09B45C3B, std::_Iosb<int>::cur);
|
||||
//REG_FUNC(0x121A8952, std::_Iosb<int>::dec);
|
||||
//REG_FUNC(0x7CC027CD, std::_Iosb<int>::end);
|
||||
//REG_FUNC(0x6E2FF90B, std::_Iosb<int>::hex);
|
||||
//REG_FUNC(0xB4A55C29, std::_Iosb<int>::oct);
|
||||
//REG_FUNC(0x2CB2DC70, std::_Iosb<int>::out);
|
||||
//REG_FUNC(0x78E34A9, std::_Iosb<int>::trunc);
|
||||
//REG_FUNC(0x078E34A9, std::_Iosb<int>::trunc);
|
||||
//REG_FUNC(0xB5EFA1B3, std::_Iosb<int>::badbit);
|
||||
//REG_FUNC(0x5312A538, std::_Iosb<int>::binary);
|
||||
//REG_FUNC(0xD9D32526, std::_Iosb<int>::skipws);
|
||||
|
@ -539,10 +540,10 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xB11D20E2, std::_Num_base::has_infinity);
|
||||
//REG_FUNC(0x3E169F74, std::_Num_base::max_exponent);
|
||||
//REG_FUNC(0xD7C041E0, std::_Num_base::min_exponent);
|
||||
//REG_FUNC(0x2DA0D59, std::_Num_base::has_quiet_NaN);
|
||||
//REG_FUNC(0x02DA0D59, std::_Num_base::has_quiet_NaN);
|
||||
//REG_FUNC(0xBE06BD79, std::_Num_base::is_specialized);
|
||||
//REG_FUNC(0xEBBC4DDD, std::_Num_base::max_exponent10);
|
||||
//REG_FUNC(0xFFCF7FC, std::_Num_base::min_exponent10);
|
||||
//REG_FUNC(0x0FFCF7FC, std::_Num_base::min_exponent10);
|
||||
//REG_FUNC(0xB317DDDF, std::_Num_base::has_denorm_loss);
|
||||
//REG_FUNC(0x245D399E, std::_Num_base::tinyness_before);
|
||||
//REG_FUNC(0xBD5F0B8A, std::_Num_base::has_signaling_NaN);
|
||||
|
@ -589,7 +590,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xA4018B84, typeinfo for __simd128_float32_t);
|
||||
//REG_FUNC(0xA1FE4058, typeinfo for half);
|
||||
//REG_FUNC(0x5351829B, typeinfo for std::ios_base::failure);
|
||||
//REG_FUNC(0xAC6C8F, typeinfo for __simd64_int8_t*);
|
||||
//REG_FUNC(0x00AC6C8F, typeinfo for __simd64_int8_t*);
|
||||
//REG_FUNC(0xD5B056B8, typeinfo for __simd128_int8_t*);
|
||||
//REG_FUNC(0x13975DAE, typeinfo for __simd64_int16_t*);
|
||||
//REG_FUNC(0x963C04E3, typeinfo for __simd64_int32_t*);
|
||||
|
@ -604,7 +605,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xEE862280, typeinfo for __simd64_uint32_t*);
|
||||
//REG_FUNC(0xB5CEC4FF, typeinfo for __simd128_poly16_t*);
|
||||
//REG_FUNC(0x46124E82, typeinfo for __simd128_uint16_t*);
|
||||
//REG_FUNC(0x7E6CC17, typeinfo for __simd128_uint32_t*);
|
||||
//REG_FUNC(0x07E6CC17, typeinfo for __simd128_uint32_t*);
|
||||
//REG_FUNC(0x588EBCAD, typeinfo for __simd64_float16_t*);
|
||||
//REG_FUNC(0xDFCB2417, typeinfo for __simd64_float32_t*);
|
||||
//REG_FUNC(0x9502D3C0, typeinfo for __simd128_float16_t*);
|
||||
|
@ -615,8 +616,8 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x52A04C47, typeinfo for __simd64_int16_t const*);
|
||||
//REG_FUNC(0xBB64CCF1, typeinfo for __simd64_int32_t const*);
|
||||
//REG_FUNC(0x7C9D0C33, typeinfo for __simd64_poly8_t const*);
|
||||
//REG_FUNC(0x21A57A1, typeinfo for __simd64_uint8_t const*);
|
||||
//REG_FUNC(0x21E3DD1, typeinfo for __simd128_int16_t const*);
|
||||
//REG_FUNC(0x021A57A1, typeinfo for __simd64_uint8_t const*);
|
||||
//REG_FUNC(0x021E3DD1, typeinfo for __simd128_int16_t const*);
|
||||
//REG_FUNC(0xFF8DDBE7, typeinfo for __simd128_int32_t const*);
|
||||
//REG_FUNC(0xB30AB3B5, typeinfo for __simd128_poly8_t const*);
|
||||
//REG_FUNC(0xC8721E86, typeinfo for __simd128_uint8_t const*);
|
||||
|
@ -653,12 +654,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xA6C2A25C, typeinfo for long long __vector*);
|
||||
//REG_FUNC(0x81B51915, typeinfo for unsigned long long __vector*);
|
||||
//REG_FUNC(0xA7CB4EAA, typeinfo for signed char*);
|
||||
//REG_FUNC(0x87B0FB6, typeinfo for bool*);
|
||||
//REG_FUNC(0x087B0FB6, typeinfo for bool*);
|
||||
//REG_FUNC(0xE4D24E14, typeinfo for char*);
|
||||
//REG_FUNC(0x6825FFE6, typeinfo for double*);
|
||||
//REG_FUNC(0x926B9A3A, typeinfo for long double*);
|
||||
//REG_FUNC(0x24072F3E, typeinfo for float*);
|
||||
//REG_FUNC(0x8B5247B, typeinfo for unsigned char*);
|
||||
//REG_FUNC(0x08B5247B, typeinfo for unsigned char*);
|
||||
//REG_FUNC(0x15C21CC8, typeinfo for int*);
|
||||
//REG_FUNC(0xD234CF18, typeinfo for unsigned int*);
|
||||
//REG_FUNC(0x50E25810, typeinfo for long*);
|
||||
|
@ -703,7 +704,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xB93721C7, typeinfo for std::ios_base);
|
||||
//REG_FUNC(0x35E135A0, typeinfo for std::bad_alloc);
|
||||
//REG_FUNC(0x7BA61382, typeinfo for std::basic_ios<char, std::char_traits<char> >);
|
||||
//REG_FUNC(0x905B8B0, typeinfo for std::basic_ios<wchar_t, std::char_traits<wchar_t> >);
|
||||
//REG_FUNC(0x0905B8B0, typeinfo for std::basic_ios<wchar_t, std::char_traits<wchar_t> >);
|
||||
//REG_FUNC(0x1E8C6100, typeinfo for std::exception);
|
||||
//REG_FUNC(0x1CC15F54, typeinfo for std::strstream);
|
||||
//REG_FUNC(0x8A026EAD, typeinfo for std::type_info);
|
||||
|
@ -735,16 +736,16 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xC3FA8530, typeinfo name for __simd128_int16_t);
|
||||
//REG_FUNC(0x67A63A08, typeinfo name for __simd128_int32_t);
|
||||
//REG_FUNC(0x6B26EFF8, typeinfo name for __simd128_poly8_t);
|
||||
//REG_FUNC(0x8C4C69F, typeinfo name for __simd128_uint8_t);
|
||||
//REG_FUNC(0x08C4C69F, typeinfo name for __simd128_uint8_t);
|
||||
//REG_FUNC(0x40BC2E0E, typeinfo name for __simd64_poly16_t);
|
||||
//REG_FUNC(0x8D1AE4A7, typeinfo name for __simd64_uint16_t);
|
||||
//REG_FUNC(0xC4096952, typeinfo name for __simd64_uint32_t);
|
||||
//REG_FUNC(0x16D366F1, typeinfo name for __simd128_poly16_t);
|
||||
//REG_FUNC(0x45552A1, typeinfo name for __simd128_uint16_t);
|
||||
//REG_FUNC(0x045552A1, typeinfo name for __simd128_uint16_t);
|
||||
//REG_FUNC(0x7DBF4FFF, typeinfo name for __simd128_uint32_t);
|
||||
//REG_FUNC(0xED26DE1, typeinfo name for __simd64_float16_t);
|
||||
//REG_FUNC(0x0ED26DE1, typeinfo name for __simd64_float16_t);
|
||||
//REG_FUNC(0xAB0D789A, typeinfo name for __simd64_float32_t);
|
||||
//REG_FUNC(0x3200DDB, typeinfo name for __simd128_float16_t);
|
||||
//REG_FUNC(0x03200DDB, typeinfo name for __simd128_float16_t);
|
||||
//REG_FUNC(0xD54CBD7C, typeinfo name for __simd128_float32_t);
|
||||
//REG_FUNC(0xA8E6842E, typeinfo name for half);
|
||||
//REG_FUNC(0x5246E71E, typeinfo name for std::ios_base::failure);
|
||||
|
@ -776,7 +777,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xC356ACF6, typeinfo name for __simd64_poly8_t const*);
|
||||
//REG_FUNC(0x878C75F4, typeinfo name for __simd64_uint8_t const*);
|
||||
//REG_FUNC(0x68B777E3, typeinfo name for __simd128_int16_t const*);
|
||||
//REG_FUNC(0x61188BD, typeinfo name for __simd128_int32_t const*);
|
||||
//REG_FUNC(0x061188BD, typeinfo name for __simd128_int32_t const*);
|
||||
//REG_FUNC(0xC7733F13, typeinfo name for __simd128_poly8_t const*);
|
||||
//REG_FUNC(0x3D8A69EC, typeinfo name for __simd128_uint8_t const*);
|
||||
//REG_FUNC(0xCC081D58, typeinfo name for __simd64_poly16_t const*);
|
||||
|
@ -826,12 +827,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xE2A0B0A8, typeinfo name for unsigned short*);
|
||||
//REG_FUNC(0xF7B6B02A, typeinfo name for void*);
|
||||
//REG_FUNC(0xF1C9A755, typeinfo name for wchar_t*);
|
||||
//REG_FUNC(0x968B212, typeinfo name for long long*);
|
||||
//REG_FUNC(0x9787CAD, typeinfo name for unsigned long long*);
|
||||
//REG_FUNC(0x0968B212, typeinfo name for long long*);
|
||||
//REG_FUNC(0x09787CAD, typeinfo name for unsigned long long*);
|
||||
//REG_FUNC(0xF86F5756, typeinfo name for std::iostream);
|
||||
//REG_FUNC(0x999300E0, typeinfo name for std::istream);
|
||||
//REG_FUNC(0x591C25A3, typeinfo name for std::ostream);
|
||||
//REG_FUNC(0xFC9D21B, typeinfo name for std::bad_typeid);
|
||||
//REG_FUNC(0x0FC9D21B, typeinfo name for std::bad_typeid);
|
||||
//REG_FUNC(0x867D109E, typeinfo name for std::istrstream);
|
||||
//REG_FUNC(0x88BFC745, typeinfo name for std::ostrstream);
|
||||
//REG_FUNC(0xB315CE7A, typeinfo name for std::_ctype_base);
|
||||
|
@ -841,7 +842,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x9E317CE1, typeinfo name for std::length_error);
|
||||
//REG_FUNC(0xD8DAD98D, typeinfo name for std::out_of_range);
|
||||
//REG_FUNC(0x1C929309, typeinfo name for std::strstreambuf);
|
||||
//REG_FUNC(0xE17E4D6, typeinfo name for std::_codecvt_base);
|
||||
//REG_FUNC(0x0E17E4D6, typeinfo name for std::_codecvt_base);
|
||||
//REG_FUNC(0x918FE198, typeinfo name for std::bad_exception);
|
||||
//REG_FUNC(0x227B4568, typeinfo name for std::basic_filebuf<char, std::char_traits<char> >);
|
||||
//REG_FUNC(0xD34BAF59, typeinfo name for std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >);
|
||||
|
@ -870,7 +871,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x2856DCD6, typeinfo name for std::type_info);
|
||||
//REG_FUNC(0x75A1CED4, typeinfo name for long long __vector);
|
||||
//REG_FUNC(0x508FF61E, typeinfo name for unsigned long long __vector);
|
||||
//REG_FUNC(0x8E6A51A, typeinfo name for signed char);
|
||||
//REG_FUNC(0x08E6A51A, typeinfo name for signed char);
|
||||
//REG_FUNC(0x491DB7D3, typeinfo name for bool);
|
||||
//REG_FUNC(0xD657B5A0, typeinfo name for char);
|
||||
//REG_FUNC(0x322C7CB5, typeinfo name for double);
|
||||
|
@ -890,7 +891,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x51B29810, VTT for std::iostream);
|
||||
//REG_FUNC(0x52128B13, VTT for std::istream);
|
||||
//REG_FUNC(0x3C508708, VTT for std::ostream);
|
||||
//REG_FUNC(0x87753F6, VTT for std::istrstream);
|
||||
//REG_FUNC(0x087753F6, VTT for std::istrstream);
|
||||
//REG_FUNC(0xE3D7CB30, VTT for std::ostrstream);
|
||||
//REG_FUNC(0xBC326B50, VTT for std::basic_istream<wchar_t, std::char_traits<wchar_t> >);
|
||||
//REG_FUNC(0x16E32018, VTT for std::basic_ostream<wchar_t, std::char_traits<wchar_t> >);
|
||||
|
@ -913,7 +914,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x82A84E5E, vtable for std::logic_error);
|
||||
//REG_FUNC(0x1D583475, vtable for std::range_error);
|
||||
//REG_FUNC(0x80C77E16, vtable for std::domain_error);
|
||||
//REG_FUNC(0x64ADA35, vtable for std::length_error);
|
||||
//REG_FUNC(0x064ADA35, vtable for std::length_error);
|
||||
//REG_FUNC(0xDDAE7CBE, vtable for std::out_of_range);
|
||||
//REG_FUNC(0x11B2781A, vtable for std::strstreambuf);
|
||||
//REG_FUNC(0x75D16BD0, vtable for std::_codecvt_base);
|
||||
|
@ -924,7 +925,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x48F3405B, vtable for std::basic_ostream<wchar_t, std::char_traits<wchar_t> >);
|
||||
//REG_FUNC(0x53F02A18, vtable for std::runtime_error);
|
||||
//REG_FUNC(0x177FCCDC, vtable for std::overflow_error);
|
||||
//REG_FUNC(0x5548FF7, vtable for std::basic_streambuf<char, std::char_traits<char> >);
|
||||
//REG_FUNC(0x05548FF7, vtable for std::basic_streambuf<char, std::char_traits<char> >);
|
||||
//REG_FUNC(0xE8A9F32E, vtable for std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >);
|
||||
//REG_FUNC(0x515AE097, vtable for std::underflow_error);
|
||||
//REG_FUNC(0x23EEDAF0, vtable for std::invalid_argument);
|
||||
|
@ -936,7 +937,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0xD58C5F52, vtable for std::ios_base);
|
||||
//REG_FUNC(0xA27EFBA3, vtable for std::bad_alloc);
|
||||
//REG_FUNC(0x147996ED, vtable for std::basic_ios<char, std::char_traits<char> >);
|
||||
//REG_FUNC(0xDE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream);
|
||||
//REG_FUNC(0x0DE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream);
|
||||
//REG_FUNC(0x87D18300, _ZTVSt9basic_iosIcSt11char_traitsIcEE__SiSd__St9strstream);
|
||||
//REG_FUNC(0x3D6A38D3, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__Sd);
|
||||
//REG_FUNC(0xA8E795AF, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__St10istrstream);
|
||||
|
@ -949,7 +950,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []()
|
|||
//REG_FUNC(0x8E9879A7, vtable for std::type_info);
|
||||
//REG_FUNC(0xE63750C1, std::basic_filebuf<char, std::char_traits<char> >::_Init(std::_Dnk_filet*, std::basic_filebuf<char, std::char_traits<char> >::_Initfl)::_Stinit);
|
||||
//REG_FUNC(0x1D4E29BC, std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_Init(std::_Dnk_filet*, std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_Initfl)::_Stinit);
|
||||
//REG_FUNC(0x8A37475, typeinfo for __cxxabiv1::__enum_type_info);
|
||||
//REG_FUNC(0x08A37475, typeinfo for __cxxabiv1::__enum_type_info);
|
||||
//REG_FUNC(0x66CC7DBB, typeinfo for __cxxabiv1::__array_type_info);
|
||||
//REG_FUNC(0x81C44513, typeinfo for __cxxabiv1::__class_type_info);
|
||||
//REG_FUNC(0xC35024DA, typeinfo for __cxxabiv1::__pbase_type_info);
|
||||
|
@ -1007,14 +1008,14 @@ REG_FUNC(0xB1AE6F9E, _ZNKSt15underflow_error8_DoraiseEv);
|
|||
REG_FUNC(0x16F56E8D, _ZNKSt16invalid_argument8_DoraiseEv);
|
||||
REG_FUNC(0x6C568D20, _ZNKSt6_ctypeIcE10do_tolowerEPcPKc);
|
||||
REG_FUNC(0xC334DE66, _ZNKSt6_ctypeIcE10do_tolowerEc);
|
||||
REG_FUNC(0x2DD808E, _ZNKSt6_ctypeIcE10do_toupperEPcPKc);
|
||||
REG_FUNC(0x02DD808E, _ZNKSt6_ctypeIcE10do_toupperEPcPKc);
|
||||
REG_FUNC(0xF6AF33EA, _ZNKSt6_ctypeIcE10do_toupperEc);
|
||||
REG_FUNC(0x1B81D726, _ZNKSt6_ctypeIcE8do_widenEPKcS2_Pc);
|
||||
REG_FUNC(0x6471CC01, _ZNKSt6_ctypeIcE8do_widenEc);
|
||||
REG_FUNC(0x9CFA56E5, _ZNKSt6_ctypeIcE9do_narrowEPKcS2_cPc);
|
||||
REG_FUNC(0x718669AB, _ZNKSt6_ctypeIcE9do_narrowEcc);
|
||||
REG_FUNC(0x759F105D, _ZNKSt6_ctypeIwE10do_scan_isEsPKwS2_);
|
||||
REG_FUNC(0x56443F, _ZNKSt6_ctypeIwE10do_tolowerEPwPKw);
|
||||
REG_FUNC(0x0056443F, _ZNKSt6_ctypeIwE10do_tolowerEPwPKw);
|
||||
REG_FUNC(0x33E9ECDD, _ZNKSt6_ctypeIwE10do_tolowerEw);
|
||||
REG_FUNC(0x1256E6A5, _ZNKSt6_ctypeIwE10do_toupperEPwPKw);
|
||||
REG_FUNC(0x64072C2E, _ZNKSt6_ctypeIwE10do_toupperEw);
|
||||
|
@ -1042,7 +1043,7 @@ REG_FUNC(0xF877F51E, _ZNKSt8ios_base7failure8_DoraiseEv);
|
|||
REG_FUNC(0x664750EE, _ZNKSt9bad_alloc4whatEv);
|
||||
REG_FUNC(0xBA89FBE7, _ZNKSt9bad_alloc8_DoraiseEv);
|
||||
REG_FUNC(0xC133E331, _ZNKSt9exception4whatEv);
|
||||
REG_FUNC(0x656BE32, _ZNKSt9exception6_RaiseEv);
|
||||
REG_FUNC(0x0656BE32, _ZNKSt9exception6_RaiseEv);
|
||||
REG_FUNC(0x47A5CDA2, _ZNKSt9exception8_DoraiseEv);
|
||||
REG_FUNC(0xBAE38DF9, _ZNKSt9type_info4nameEv);
|
||||
REG_FUNC(0x1F260F10, _ZNKSt9type_info6beforeERKS_);
|
||||
|
@ -1070,10 +1071,10 @@ REG_FUNC(0x55AAD6A6, _ZNSt10bad_typeidaSERKS_);
|
|||
REG_FUNC(0x9CF31703, _ZNSt10istrstreamD0Ev);
|
||||
REG_FUNC(0x71D13A36, _ZNSt10istrstreamD1Ev);
|
||||
REG_FUNC(0xAF5DF8C3, _ZNSt10istrstreamD2Ev);
|
||||
REG_FUNC(0xC1E7C7A, _ZNSt10ostrstreamC1EPciNSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0xC09B290, _ZNSt10ostrstreamC2EPciNSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0x0C1E7C7A, _ZNSt10ostrstreamC1EPciNSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0x0C09B290, _ZNSt10ostrstreamC2EPciNSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0x4B8BA644, _ZNSt10ostrstreamD0Ev);
|
||||
REG_FUNC(0xE463FB3, _ZNSt10ostrstreamD1Ev);
|
||||
REG_FUNC(0x0E463FB3, _ZNSt10ostrstreamD1Ev);
|
||||
REG_FUNC(0xA0A34FEF, _ZNSt10ostrstreamD2Ev);
|
||||
REG_FUNC(0xC9F632FF, _ZNSt11logic_errorC1ERKS_);
|
||||
REG_FUNC(0xE6356C5C, _ZNSt11logic_errorC2ERKSs);
|
||||
|
@ -1087,12 +1088,12 @@ REG_FUNC(0xEF754EBD, _ZNSt11range_errorD2Ev);
|
|||
REG_FUNC(0x7D5412EF, _ZNSt12domain_errorC1ERKS_);
|
||||
REG_FUNC(0x803A7D3E, _ZNSt12domain_errorD0Ev);
|
||||
REG_FUNC(0xA6BCA2AD, _ZNSt12domain_errorD1Ev);
|
||||
REG_FUNC(0x36F9D2A, _ZNSt12domain_errorD2Ev);
|
||||
REG_FUNC(0x036F9D2A, _ZNSt12domain_errorD2Ev);
|
||||
REG_FUNC(0x5F3428AD, _ZNSt12length_errorC1ERKS_);
|
||||
REG_FUNC(0xF6FB801D, _ZNSt12length_errorC1ERKSs);
|
||||
REG_FUNC(0xF83AA7DA, _ZNSt12length_errorD0Ev);
|
||||
REG_FUNC(0xA873D7F9, _ZNSt12length_errorD1Ev);
|
||||
REG_FUNC(0xBB12C75, _ZNSt12length_errorD2Ev);
|
||||
REG_FUNC(0x0BB12C75, _ZNSt12length_errorD2Ev);
|
||||
REG_FUNC(0x299AA587, _ZNSt12out_of_rangeC1ERKS_);
|
||||
REG_FUNC(0xC8BA5522, _ZNSt12out_of_rangeC1ERKSs);
|
||||
REG_FUNC(0xA8C470A4, _ZNSt12out_of_rangeD0Ev);
|
||||
|
@ -1108,7 +1109,7 @@ REG_FUNC(0xC725F896, _ZNSt12strstreambuf9pbackfailEi);
|
|||
REG_FUNC(0xA9F4FABF, _ZNSt12strstreambuf9underflowEv);
|
||||
REG_FUNC(0x1C887DDE, _ZNSt12strstreambufD0Ev);
|
||||
REG_FUNC(0x29E1E930, _ZNSt12strstreambufD1Ev);
|
||||
REG_FUNC(0xA140889, _ZNSt12strstreambufD2Ev);
|
||||
REG_FUNC(0x0A140889, _ZNSt12strstreambufD2Ev);
|
||||
REG_FUNC(0xA8FE6FC4, _ZNSt13_codecvt_baseD0Ev);
|
||||
REG_FUNC(0xB0E47AE4, _ZNSt13_codecvt_baseD1Ev);
|
||||
REG_FUNC(0xB7EE9CC2, _ZNSt13bad_exceptionC1ERKS_);
|
||||
|
@ -1125,7 +1126,7 @@ REG_FUNC(0xD5F03A74, _ZNSt13basic_filebufIcSt11char_traitsIcEE5uflowEv);
|
|||
REG_FUNC(0x413E813E, _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci);
|
||||
REG_FUNC(0x9D193B65, _ZNSt13basic_filebufIcSt11char_traitsIcEE7_UnlockEv);
|
||||
REG_FUNC(0x52E47FB5, _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElNSt5_IosbIiE8_SeekdirENS4_9_OpenmodeE);
|
||||
REG_FUNC(0xE119B37, _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0x0E119B37, _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0x616754BC, _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi);
|
||||
REG_FUNC(0xCD5BD2E1, _ZNSt13basic_filebufIcSt11char_traitsIcEE9_EndwriteEv);
|
||||
REG_FUNC(0xFC1C7F3A, _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi);
|
||||
|
@ -1148,7 +1149,7 @@ REG_FUNC(0xD434F085, _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev);
|
|||
REG_FUNC(0xFFFA683E, _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev);
|
||||
REG_FUNC(0xB58839C5, _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev);
|
||||
REG_FUNC(0x9BF8855B, _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_Eb);
|
||||
REG_FUNC(0xD74F56E, _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev);
|
||||
REG_FUNC(0x0D74F56E, _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev);
|
||||
REG_FUNC(0x9B831B60, _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev);
|
||||
REG_FUNC(0x396337CE, _ZNSt13runtime_errorC1ERKS_);
|
||||
REG_FUNC(0xDAD26367, _ZNSt13runtime_errorD0Ev);
|
||||
|
@ -1160,20 +1161,20 @@ REG_FUNC(0x5C666F7E, _ZNSt14overflow_errorD1Ev);
|
|||
REG_FUNC(0x4E45F680, _ZNSt14overflow_errorD2Ev);
|
||||
REG_FUNC(0x626515E3, _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv);
|
||||
REG_FUNC(0x2E55F15A, _ZNSt15basic_streambufIcSt11char_traitsIcEE5_LockEv);
|
||||
REG_FUNC(0xF8535AB, _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv);
|
||||
REG_FUNC(0x0F8535AB, _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv);
|
||||
REG_FUNC(0xD7933D06, _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci);
|
||||
REG_FUNC(0xB8BCCC8D, _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci);
|
||||
REG_FUNC(0x43E5D0F1, _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci);
|
||||
REG_FUNC(0x149B193A, _ZNSt15basic_streambufIcSt11char_traitsIcEE7_UnlockEv);
|
||||
REG_FUNC(0x600998EC, _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElNSt5_IosbIiE8_SeekdirENS4_9_OpenmodeE);
|
||||
REG_FUNC(0x1DEFFD6, _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0x01DEFFD6, _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE);
|
||||
REG_FUNC(0xF5F44352, _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi);
|
||||
REG_FUNC(0xCA79344F, _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi);
|
||||
REG_FUNC(0x441788B1, _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv);
|
||||
REG_FUNC(0x797DAE94, _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv);
|
||||
REG_FUNC(0x74AD52E, _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev);
|
||||
REG_FUNC(0x074AD52E, _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev);
|
||||
REG_FUNC(0xE449E2BF, _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev);
|
||||
REG_FUNC(0x9FAA0AA, _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv);
|
||||
REG_FUNC(0x09FAA0AA, _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv);
|
||||
REG_FUNC(0xA596C88C, _ZNSt15basic_streambufIwSt11char_traitsIwEE5_LockEv);
|
||||
REG_FUNC(0x373C2CD8, _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv);
|
||||
REG_FUNC(0x3F363796, _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi);
|
||||
|
@ -1197,7 +1198,7 @@ REG_FUNC(0x188D86CF, _ZNSt16invalid_argumentD0Ev);
|
|||
REG_FUNC(0x9982A4FC, _ZNSt16invalid_argumentD1Ev);
|
||||
REG_FUNC(0x1AB2B1AC, _ZNSt16invalid_argumentD2Ev);
|
||||
REG_FUNC(0xF9FAB558, _ZNSt6_Mutex5_LockEv);
|
||||
REG_FUNC(0x402C9F8, _ZNSt6_Mutex7_UnlockEv);
|
||||
REG_FUNC(0x0402C9F8, _ZNSt6_Mutex7_UnlockEv);
|
||||
REG_FUNC(0x9DA92617, _ZNSt6_MutexC1ESt14_Uninitialized);
|
||||
REG_FUNC(0xA4F99AE7, _ZNSt6_MutexC1Ev);
|
||||
REG_FUNC(0x7B5A6B7F, _ZNSt6_MutexC2ESt14_Uninitialized);
|
||||
|
@ -1230,12 +1231,12 @@ REG_FUNC(0x5ED60DEE, _ZNSt8ios_base4InitC2Ev);
|
|||
REG_FUNC(0x65D88619, _ZNSt8ios_base4InitD1Ev);
|
||||
REG_FUNC(0x3483E01D, _ZNSt8ios_base4InitD2Ev);
|
||||
REG_FUNC(0x78CB190E, _ZNSt8ios_base5_InitEv);
|
||||
REG_FUNC(0x23B8BEE, _ZNSt8ios_base5_TidyEv);
|
||||
REG_FUNC(0x023B8BEE, _ZNSt8ios_base5_TidyEv);
|
||||
REG_FUNC(0xC9DE8208, _ZNSt8ios_base5clearENSt5_IosbIiE8_IostateEb);
|
||||
REG_FUNC(0xAA9171FB, _ZNSt8ios_base7_AddstdEv);
|
||||
REG_FUNC(0xFC58778, _ZNSt8ios_base7copyfmtERKS_);
|
||||
REG_FUNC(0x0FC58778, _ZNSt8ios_base7copyfmtERKS_);
|
||||
REG_FUNC(0x2DF76755, _ZNSt8ios_base7failureC1ERKS0_);
|
||||
REG_FUNC(0x94048F7, _ZNSt8ios_base7failureC1ERKSs);
|
||||
REG_FUNC(0x094048F7, _ZNSt8ios_base7failureC1ERKSs);
|
||||
REG_FUNC(0x20AAAB95, _ZNSt8ios_base7failureD0Ev);
|
||||
REG_FUNC(0x31D0197A, _ZNSt8ios_base7failureD1Ev);
|
||||
REG_FUNC(0x7736E940, _ZNSt8ios_base8_CallfnsENS_5eventE);
|
||||
|
@ -1248,18 +1249,18 @@ REG_FUNC(0xEC3804D2, _ZNSt9bad_allocC1Ev);
|
|||
REG_FUNC(0x6AF75467, _ZNSt9bad_allocC2ERKS_);
|
||||
REG_FUNC(0x57096162, _ZNSt9bad_allocC2Ev);
|
||||
REG_FUNC(0xB2DAA408, _ZNSt9bad_allocD0Ev);
|
||||
REG_FUNC(0x7AEE736, _ZNSt9bad_allocD1Ev);
|
||||
REG_FUNC(0x07AEE736, _ZNSt9bad_allocD1Ev);
|
||||
REG_FUNC(0xA9E9B7B7, _ZNSt9bad_allocD2Ev);
|
||||
REG_FUNC(0x7853E8E5, _ZNSt9bad_allocaSERKS_);
|
||||
REG_FUNC(0xF78468EB, _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev);
|
||||
REG_FUNC(0x3150182, _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev);
|
||||
REG_FUNC(0x03150182, _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev);
|
||||
REG_FUNC(0x9654168A, _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev);
|
||||
REG_FUNC(0x8FFB8524, _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev);
|
||||
REG_FUNC(0x7AF1BB16, _ZNSt9exception18_Set_raise_handlerEPFvRKS_E);
|
||||
REG_FUNC(0x8C5A4417, _ZNSt9exceptionC1ERKS_);
|
||||
REG_FUNC(0xFC169D71, _ZNSt9exceptionC1Ev);
|
||||
REG_FUNC(0x59758E74, _ZNSt9exceptionC2ERKS_);
|
||||
REG_FUNC(0xE08376, _ZNSt9exceptionC2Ev);
|
||||
REG_FUNC(0x00E08376, _ZNSt9exceptionC2Ev);
|
||||
REG_FUNC(0x82EEA67E, _ZNSt9exceptionD0Ev);
|
||||
REG_FUNC(0x30405D88, _ZNSt9exceptionD1Ev);
|
||||
REG_FUNC(0xAF7A7081, _ZNSt9exceptionD2Ev);
|
||||
|
@ -1271,7 +1272,7 @@ REG_FUNC(0x98BD8AE1, _ZNSt9strstreamD1Ev);
|
|||
REG_FUNC(0x7D8DFE43, _ZNSt9strstreamD2Ev);
|
||||
REG_FUNC(0x8D4B1A13, _ZNSt9type_infoD0Ev);
|
||||
REG_FUNC(0xBD786240, _ZNSt9type_infoD1Ev);
|
||||
REG_FUNC(0xC04303, _ZNSt9type_infoD2Ev);
|
||||
REG_FUNC(0x00C04303, _ZNSt9type_infoD2Ev);
|
||||
REG_FUNC(0x9983D8B9, _ZSt10unexpectedv);
|
||||
REG_FUNC(0x385D19B2, _ZSt11setiosflagsNSt5_IosbIiE9_FmtflagsE);
|
||||
REG_FUNC(0xD8A78A61, _ZSt12setprecisioni);
|
||||
|
@ -1280,7 +1281,7 @@ REG_FUNC(0x13BAEE11, _ZSt13set_terminatePFvvE);
|
|||
REG_FUNC(0x644CBAA2, _ZSt14_Debug_messagePKcS0_);
|
||||
REG_FUNC(0x9B2F0CA6, _ZSt14set_unexpectedPFvvE);
|
||||
REG_FUNC(0xC107B555, _ZSt15set_new_handlerPFvvE);
|
||||
REG_FUNC(0x11CEB00, _ZSt18uncaught_exceptionv);
|
||||
REG_FUNC(0x011CEB00, _ZSt18uncaught_exceptionv);
|
||||
REG_FUNC(0x36282336, _ZSt21__gen_dummy_typeinfosv);
|
||||
REG_FUNC(0x3622003F, _ZSt4setwi);
|
||||
REG_FUNC(0x6CAFA8EF, _ZSt6_ThrowRKSt9exception);
|
||||
|
@ -1317,7 +1318,7 @@ REG_FUNC(0x1EB89099, _ZdlPvS_);
|
|||
REG_FUNC(0xE7FB2BF4, _Znaj);
|
||||
REG_FUNC(0x31C62481, _ZnajRKSt9nothrow_t);
|
||||
REG_FUNC(0xF99ED5AC, _Znwj);
|
||||
REG_FUNC(0xAE71DC3, _ZnwjRKSt9nothrow_t);
|
||||
REG_FUNC(0x0AE71DC3, _ZnwjRKSt9nothrow_t);
|
||||
REG_FUNC(0x1818C323, _SNC_get_global_vars);
|
||||
REG_FUNC(0x2CFA1F15, _SNC_get_tlocal_vars);
|
||||
REG_FUNC(0x7742D916, _Unwind_Backtrace);
|
||||
|
@ -1379,12 +1380,12 @@ REG_FUNC(0xD4C11B17, _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev);
|
|||
REG_FUNC(0xBF90A45A, _PJP_CPP_Copyright);
|
||||
REG_FUNC(0x3B6D9752, _ZNSbIwSt11char_traitsIwESaIwEE4nposE);
|
||||
REG_FUNC(0xA3498140, _ZNSs4nposE);
|
||||
REG_FUNC(0x5273EA3, _ZNSt13_Num_int_base10is_boundedE);
|
||||
REG_FUNC(0x05273EA3, _ZNSt13_Num_int_base10is_boundedE);
|
||||
REG_FUNC(0x8A0994F8, _ZNSt13_Num_int_base10is_integerE);
|
||||
REG_FUNC(0x401F1224, _ZNSt13_Num_int_base14is_specializedE);
|
||||
REG_FUNC(0xA65FE916, _ZNSt13_Num_int_base5radixE);
|
||||
REG_FUNC(0xF2AA872E, _ZNSt13_Num_int_base8is_exactE);
|
||||
REG_FUNC(0x8FE5A4F, _ZNSt13_Num_int_base9is_moduloE);
|
||||
REG_FUNC(0x08FE5A4F, _ZNSt13_Num_int_base9is_moduloE);
|
||||
REG_FUNC(0x7D4C55EC, _ZNSt14numeric_limitsIaE6digitsE);
|
||||
REG_FUNC(0xA4E5BF5E, _ZNSt14numeric_limitsIaE8digits10E);
|
||||
REG_FUNC(0xD9938B84, _ZNSt14numeric_limitsIaE9is_signedE);
|
||||
|
@ -1393,7 +1394,7 @@ REG_FUNC(0xF52E5F76, _ZNSt14numeric_limitsIbE8digits10E);
|
|||
REG_FUNC(0x81B82E0E, _ZNSt14numeric_limitsIbE9is_moduloE);
|
||||
REG_FUNC(0x9E6D2025, _ZNSt14numeric_limitsIbE9is_signedE);
|
||||
REG_FUNC(0x810ED593, _ZNSt14numeric_limitsIcE6digitsE);
|
||||
REG_FUNC(0xAC1A819, _ZNSt14numeric_limitsIcE8digits10E);
|
||||
REG_FUNC(0x0AC1A819, _ZNSt14numeric_limitsIcE8digits10E);
|
||||
REG_FUNC(0x660E14E1, _ZNSt14numeric_limitsIcE9is_signedE);
|
||||
REG_FUNC(0x3EEB3B23, _ZNSt14numeric_limitsIdE12max_exponentE);
|
||||
REG_FUNC(0x13B634BE, _ZNSt14numeric_limitsIdE12min_exponentE);
|
||||
|
@ -1421,10 +1422,10 @@ REG_FUNC(0xE8EB3133, _ZNSt14numeric_limitsIiE8digits10E);
|
|||
REG_FUNC(0x3AB38CDA, _ZNSt14numeric_limitsIiE9is_signedE);
|
||||
REG_FUNC(0xEEB7B642, _ZNSt14numeric_limitsIjE6digitsE);
|
||||
REG_FUNC(0xBCDE68B3, _ZNSt14numeric_limitsIjE8digits10E);
|
||||
REG_FUNC(0xDA8EFB0, _ZNSt14numeric_limitsIjE9is_signedE);
|
||||
REG_FUNC(0x0DA8EFB0, _ZNSt14numeric_limitsIjE9is_signedE);
|
||||
REG_FUNC(0x65DAD8D6, _ZNSt14numeric_limitsIlE6digitsE);
|
||||
REG_FUNC(0xFB52BC0A, _ZNSt14numeric_limitsIlE8digits10E);
|
||||
REG_FUNC(0x63544FC, _ZNSt14numeric_limitsIlE9is_signedE);
|
||||
REG_FUNC(0x063544FC, _ZNSt14numeric_limitsIlE9is_signedE);
|
||||
REG_FUNC(0x441D097A, _ZNSt14numeric_limitsImE6digitsE);
|
||||
REG_FUNC(0xB56F1B07, _ZNSt14numeric_limitsImE8digits10E);
|
||||
REG_FUNC(0xA9799886, _ZNSt14numeric_limitsImE9is_signedE);
|
||||
|
@ -1465,13 +1466,13 @@ REG_FUNC(0xE615A657, _ZNSt5_IosbIiE2inE);
|
|||
REG_FUNC(0x759FD02E, _ZNSt5_IosbIiE3appE);
|
||||
REG_FUNC(0x6F410A00, _ZNSt5_IosbIiE3ateE);
|
||||
REG_FUNC(0xD2A42D0C, _ZNSt5_IosbIiE3begE);
|
||||
REG_FUNC(0x9B45C3B, _ZNSt5_IosbIiE3curE);
|
||||
REG_FUNC(0x09B45C3B, _ZNSt5_IosbIiE3curE);
|
||||
REG_FUNC(0x121A8952, _ZNSt5_IosbIiE3decE);
|
||||
REG_FUNC(0x7CC027CD, _ZNSt5_IosbIiE3endE);
|
||||
REG_FUNC(0x6E2FF90B, _ZNSt5_IosbIiE3hexE);
|
||||
REG_FUNC(0xB4A55C29, _ZNSt5_IosbIiE3octE);
|
||||
REG_FUNC(0x2CB2DC70, _ZNSt5_IosbIiE3outE);
|
||||
REG_FUNC(0x78E34A9, _ZNSt5_IosbIiE5truncE);
|
||||
REG_FUNC(0x078E34A9, _ZNSt5_IosbIiE5truncE);
|
||||
REG_FUNC(0xB5EFA1B3, _ZNSt5_IosbIiE6badbitE);
|
||||
REG_FUNC(0x5312A538, _ZNSt5_IosbIiE6binaryE);
|
||||
REG_FUNC(0xD9D32526, _ZNSt5_IosbIiE6skipwsE);
|
||||
|
@ -1491,10 +1492,10 @@ REG_FUNC(0x13B38354, _ZNSt9_Num_base11round_styleE);
|
|||
REG_FUNC(0xB11D20E2, _ZNSt9_Num_base12has_infinityE);
|
||||
REG_FUNC(0x3E169F74, _ZNSt9_Num_base12max_exponentE);
|
||||
REG_FUNC(0xD7C041E0, _ZNSt9_Num_base12min_exponentE);
|
||||
REG_FUNC(0x2DA0D59, _ZNSt9_Num_base13has_quiet_NaNE);
|
||||
REG_FUNC(0x02DA0D59, _ZNSt9_Num_base13has_quiet_NaNE);
|
||||
REG_FUNC(0xBE06BD79, _ZNSt9_Num_base14is_specializedE);
|
||||
REG_FUNC(0xEBBC4DDD, _ZNSt9_Num_base14max_exponent10E);
|
||||
REG_FUNC(0xFFCF7FC, _ZNSt9_Num_base14min_exponent10E);
|
||||
REG_FUNC(0x0FFCF7FC, _ZNSt9_Num_base14min_exponent10E);
|
||||
REG_FUNC(0xB317DDDF, _ZNSt9_Num_base15has_denorm_lossE);
|
||||
REG_FUNC(0x245D399E, _ZNSt9_Num_base15tinyness_beforeE);
|
||||
REG_FUNC(0xBD5F0B8A, _ZNSt9_Num_base17has_signaling_NaNE);
|
||||
|
@ -1541,7 +1542,7 @@ REG_FUNC(0x525557F3, _ZTI19__simd128_float16_t);
|
|||
REG_FUNC(0xA4018B84, _ZTI19__simd128_float32_t);
|
||||
REG_FUNC(0xA1FE4058, _ZTIDh);
|
||||
REG_FUNC(0x5351829B, _ZTINSt8ios_base7failureE);
|
||||
REG_FUNC(0xAC6C8F, _ZTIP15__simd64_int8_t);
|
||||
REG_FUNC(0x00AC6C8F, _ZTIP15__simd64_int8_t);
|
||||
REG_FUNC(0xD5B056B8, _ZTIP16__simd128_int8_t);
|
||||
REG_FUNC(0x13975DAE, _ZTIP16__simd64_int16_t);
|
||||
REG_FUNC(0x963C04E3, _ZTIP16__simd64_int32_t);
|
||||
|
@ -1556,7 +1557,7 @@ REG_FUNC(0xA96D02B1, _ZTIP17__simd64_uint16_t);
|
|||
REG_FUNC(0xEE862280, _ZTIP17__simd64_uint32_t);
|
||||
REG_FUNC(0xB5CEC4FF, _ZTIP18__simd128_poly16_t);
|
||||
REG_FUNC(0x46124E82, _ZTIP18__simd128_uint16_t);
|
||||
REG_FUNC(0x7E6CC17, _ZTIP18__simd128_uint32_t);
|
||||
REG_FUNC(0x07E6CC17, _ZTIP18__simd128_uint32_t);
|
||||
REG_FUNC(0x588EBCAD, _ZTIP18__simd64_float16_t);
|
||||
REG_FUNC(0xDFCB2417, _ZTIP18__simd64_float32_t);
|
||||
REG_FUNC(0x9502D3C0, _ZTIP19__simd128_float16_t);
|
||||
|
@ -1567,8 +1568,8 @@ REG_FUNC(0x60D7D920, _ZTIPK16__simd128_int8_t);
|
|||
REG_FUNC(0x52A04C47, _ZTIPK16__simd64_int16_t);
|
||||
REG_FUNC(0xBB64CCF1, _ZTIPK16__simd64_int32_t);
|
||||
REG_FUNC(0x7C9D0C33, _ZTIPK16__simd64_poly8_t);
|
||||
REG_FUNC(0x21A57A1, _ZTIPK16__simd64_uint8_t);
|
||||
REG_FUNC(0x21E3DD1, _ZTIPK17__simd128_int16_t);
|
||||
REG_FUNC(0x021A57A1, _ZTIPK16__simd64_uint8_t);
|
||||
REG_FUNC(0x021E3DD1, _ZTIPK17__simd128_int16_t);
|
||||
REG_FUNC(0xFF8DDBE7, _ZTIPK17__simd128_int32_t);
|
||||
REG_FUNC(0xB30AB3B5, _ZTIPK17__simd128_poly8_t);
|
||||
REG_FUNC(0xC8721E86, _ZTIPK17__simd128_uint8_t);
|
||||
|
@ -1605,12 +1606,12 @@ REG_FUNC(0xA0F5E8F5, _ZTIPKy);
|
|||
REG_FUNC(0xA6C2A25C, _ZTIPU8__vectorx);
|
||||
REG_FUNC(0x81B51915, _ZTIPU8__vectory);
|
||||
REG_FUNC(0xA7CB4EAA, _ZTIPa);
|
||||
REG_FUNC(0x87B0FB6, _ZTIPb);
|
||||
REG_FUNC(0x087B0FB6, _ZTIPb);
|
||||
REG_FUNC(0xE4D24E14, _ZTIPc);
|
||||
REG_FUNC(0x6825FFE6, _ZTIPd);
|
||||
REG_FUNC(0x926B9A3A, _ZTIPe);
|
||||
REG_FUNC(0x24072F3E, _ZTIPf);
|
||||
REG_FUNC(0x8B5247B, _ZTIPh);
|
||||
REG_FUNC(0x08B5247B, _ZTIPh);
|
||||
REG_FUNC(0x15C21CC8, _ZTIPi);
|
||||
REG_FUNC(0xD234CF18, _ZTIPj);
|
||||
REG_FUNC(0x50E25810, _ZTIPl);
|
||||
|
@ -1655,7 +1656,7 @@ REG_FUNC(0xA7CA7C93, _ZTISt8bad_cast);
|
|||
REG_FUNC(0xB93721C7, _ZTISt8ios_base);
|
||||
REG_FUNC(0x35E135A0, _ZTISt9bad_alloc);
|
||||
REG_FUNC(0x7BA61382, _ZTISt9basic_iosIcSt11char_traitsIcEE);
|
||||
REG_FUNC(0x905B8B0, _ZTISt9basic_iosIwSt11char_traitsIwEE);
|
||||
REG_FUNC(0x0905B8B0, _ZTISt9basic_iosIwSt11char_traitsIwEE);
|
||||
REG_FUNC(0x1E8C6100, _ZTISt9exception);
|
||||
REG_FUNC(0x1CC15F54, _ZTISt9strstream);
|
||||
REG_FUNC(0x8A026EAD, _ZTISt9type_info);
|
||||
|
@ -1687,16 +1688,16 @@ REG_FUNC(0xCD2802B5, _ZTS16__simd64_uint8_t);
|
|||
REG_FUNC(0xC3FA8530, _ZTS17__simd128_int16_t);
|
||||
REG_FUNC(0x67A63A08, _ZTS17__simd128_int32_t);
|
||||
REG_FUNC(0x6B26EFF8, _ZTS17__simd128_poly8_t);
|
||||
REG_FUNC(0x8C4C69F, _ZTS17__simd128_uint8_t);
|
||||
REG_FUNC(0x08C4C69F, _ZTS17__simd128_uint8_t);
|
||||
REG_FUNC(0x40BC2E0E, _ZTS17__simd64_poly16_t);
|
||||
REG_FUNC(0x8D1AE4A7, _ZTS17__simd64_uint16_t);
|
||||
REG_FUNC(0xC4096952, _ZTS17__simd64_uint32_t);
|
||||
REG_FUNC(0x16D366F1, _ZTS18__simd128_poly16_t);
|
||||
REG_FUNC(0x45552A1, _ZTS18__simd128_uint16_t);
|
||||
REG_FUNC(0x045552A1, _ZTS18__simd128_uint16_t);
|
||||
REG_FUNC(0x7DBF4FFF, _ZTS18__simd128_uint32_t);
|
||||
REG_FUNC(0xED26DE1, _ZTS18__simd64_float16_t);
|
||||
REG_FUNC(0x0ED26DE1, _ZTS18__simd64_float16_t);
|
||||
REG_FUNC(0xAB0D789A, _ZTS18__simd64_float32_t);
|
||||
REG_FUNC(0x3200DDB, _ZTS19__simd128_float16_t);
|
||||
REG_FUNC(0x03200DDB, _ZTS19__simd128_float16_t);
|
||||
REG_FUNC(0xD54CBD7C, _ZTS19__simd128_float32_t);
|
||||
REG_FUNC(0xA8E6842E, _ZTSDh);
|
||||
REG_FUNC(0x5246E71E, _ZTSNSt8ios_base7failureE);
|
||||
|
@ -1728,7 +1729,7 @@ REG_FUNC(0x6A472A63, _ZTSPK16__simd64_int32_t);
|
|||
REG_FUNC(0xC356ACF6, _ZTSPK16__simd64_poly8_t);
|
||||
REG_FUNC(0x878C75F4, _ZTSPK16__simd64_uint8_t);
|
||||
REG_FUNC(0x68B777E3, _ZTSPK17__simd128_int16_t);
|
||||
REG_FUNC(0x61188BD, _ZTSPK17__simd128_int32_t);
|
||||
REG_FUNC(0x061188BD, _ZTSPK17__simd128_int32_t);
|
||||
REG_FUNC(0xC7733F13, _ZTSPK17__simd128_poly8_t);
|
||||
REG_FUNC(0x3D8A69EC, _ZTSPK17__simd128_uint8_t);
|
||||
REG_FUNC(0xCC081D58, _ZTSPK17__simd64_poly16_t);
|
||||
|
@ -1778,12 +1779,12 @@ REG_FUNC(0x982D9703, _ZTSPs);
|
|||
REG_FUNC(0xE2A0B0A8, _ZTSPt);
|
||||
REG_FUNC(0xF7B6B02A, _ZTSPv);
|
||||
REG_FUNC(0xF1C9A755, _ZTSPw);
|
||||
REG_FUNC(0x968B212, _ZTSPx);
|
||||
REG_FUNC(0x9787CAD, _ZTSPy);
|
||||
REG_FUNC(0x0968B212, _ZTSPx);
|
||||
REG_FUNC(0x09787CAD, _ZTSPy);
|
||||
REG_FUNC(0xF86F5756, _ZTSSd);
|
||||
REG_FUNC(0x999300E0, _ZTSSi);
|
||||
REG_FUNC(0x591C25A3, _ZTSSo);
|
||||
REG_FUNC(0xFC9D21B, _ZTSSt10bad_typeid);
|
||||
REG_FUNC(0x0FC9D21B, _ZTSSt10bad_typeid);
|
||||
REG_FUNC(0x867D109E, _ZTSSt10istrstream);
|
||||
REG_FUNC(0x88BFC745, _ZTSSt10ostrstream);
|
||||
REG_FUNC(0xB315CE7A, _ZTSSt11_ctype_base);
|
||||
|
@ -1793,7 +1794,7 @@ REG_FUNC(0xBE23707A, _ZTSSt12domain_error);
|
|||
REG_FUNC(0x9E317CE1, _ZTSSt12length_error);
|
||||
REG_FUNC(0xD8DAD98D, _ZTSSt12out_of_range);
|
||||
REG_FUNC(0x1C929309, _ZTSSt12strstreambuf);
|
||||
REG_FUNC(0xE17E4D6, _ZTSSt13_codecvt_base);
|
||||
REG_FUNC(0x0E17E4D6, _ZTSSt13_codecvt_base);
|
||||
REG_FUNC(0x918FE198, _ZTSSt13bad_exception);
|
||||
REG_FUNC(0x227B4568, _ZTSSt13basic_filebufIcSt11char_traitsIcEE);
|
||||
REG_FUNC(0xD34BAF59, _ZTSSt13basic_filebufIwSt11char_traitsIwEE);
|
||||
|
@ -1822,7 +1823,7 @@ REG_FUNC(0xE5C789D4, _ZTSSt9strstream);
|
|||
REG_FUNC(0x2856DCD6, _ZTSSt9type_info);
|
||||
REG_FUNC(0x75A1CED4, _ZTSU8__vectorx);
|
||||
REG_FUNC(0x508FF61E, _ZTSU8__vectory);
|
||||
REG_FUNC(0x8E6A51A, _ZTSa);
|
||||
REG_FUNC(0x08E6A51A, _ZTSa);
|
||||
REG_FUNC(0x491DB7D3, _ZTSb);
|
||||
REG_FUNC(0xD657B5A0, _ZTSc);
|
||||
REG_FUNC(0x322C7CB5, _ZTSd);
|
||||
|
@ -1842,7 +1843,7 @@ REG_FUNC(0x402717E4, _ZTSy);
|
|||
REG_FUNC(0x51B29810, _ZTTSd);
|
||||
REG_FUNC(0x52128B13, _ZTTSi);
|
||||
REG_FUNC(0x3C508708, _ZTTSo);
|
||||
REG_FUNC(0x87753F6, _ZTTSt10istrstream);
|
||||
REG_FUNC(0x087753F6, _ZTTSt10istrstream);
|
||||
REG_FUNC(0xE3D7CB30, _ZTTSt10ostrstream);
|
||||
REG_FUNC(0xBC326B50, _ZTTSt13basic_istreamIwSt11char_traitsIwEE);
|
||||
REG_FUNC(0x16E32018, _ZTTSt13basic_ostreamIwSt11char_traitsIwEE);
|
||||
|
@ -1865,7 +1866,7 @@ REG_FUNC(0xA81AD21D, _ZTVSt10ostrstream);
|
|||
REG_FUNC(0x82A84E5E, _ZTVSt11logic_error);
|
||||
REG_FUNC(0x1D583475, _ZTVSt11range_error);
|
||||
REG_FUNC(0x80C77E16, _ZTVSt12domain_error);
|
||||
REG_FUNC(0x64ADA35, _ZTVSt12length_error);
|
||||
REG_FUNC(0x064ADA35, _ZTVSt12length_error);
|
||||
REG_FUNC(0xDDAE7CBE, _ZTVSt12out_of_range);
|
||||
REG_FUNC(0x11B2781A, _ZTVSt12strstreambuf);
|
||||
REG_FUNC(0x75D16BD0, _ZTVSt13_codecvt_base);
|
||||
|
@ -1876,7 +1877,7 @@ REG_FUNC(0xB952752B, _ZTVSt13basic_istreamIwSt11char_traitsIwEE);
|
|||
REG_FUNC(0x48F3405B, _ZTVSt13basic_ostreamIwSt11char_traitsIwEE);
|
||||
REG_FUNC(0x53F02A18, _ZTVSt13runtime_error);
|
||||
REG_FUNC(0x177FCCDC, _ZTVSt14overflow_error);
|
||||
REG_FUNC(0x5548FF7, _ZTVSt15basic_streambufIcSt11char_traitsIcEE);
|
||||
REG_FUNC(0x05548FF7, _ZTVSt15basic_streambufIcSt11char_traitsIcEE);
|
||||
REG_FUNC(0xE8A9F32E, _ZTVSt15basic_streambufIwSt11char_traitsIwEE);
|
||||
REG_FUNC(0x515AE097, _ZTVSt15underflow_error);
|
||||
REG_FUNC(0x23EEDAF0, _ZTVSt16invalid_argument);
|
||||
|
@ -1888,7 +1889,7 @@ REG_FUNC(0xAA09FD32, _ZTVSt8bad_cast);
|
|||
REG_FUNC(0xD58C5F52, _ZTVSt8ios_base);
|
||||
REG_FUNC(0xA27EFBA3, _ZTVSt9bad_alloc);
|
||||
REG_FUNC(0x147996ED, _ZTVSt9basic_iosIcSt11char_traitsIcEE);
|
||||
REG_FUNC(0xDE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream);
|
||||
REG_FUNC(0x0DE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream);
|
||||
REG_FUNC(0x87D18300, _ZTVSt9basic_iosIcSt11char_traitsIcEE__SiSd__St9strstream);
|
||||
REG_FUNC(0x3D6A38D3, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__Sd);
|
||||
REG_FUNC(0xA8E795AF, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__St10istrstream);
|
||||
|
@ -1901,7 +1902,7 @@ REG_FUNC(0xFD21E1F1, _ZTVSt9strstream);
|
|||
REG_FUNC(0x8E9879A7, _ZTVSt9type_info);
|
||||
REG_FUNC(0xE63750C1, _ZZNSt13basic_filebufIcSt11char_traitsIcEE5_InitEPSt10_Dnk_filetNS2_7_InitflEE7_Stinit);
|
||||
REG_FUNC(0x1D4E29BC, _ZZNSt13basic_filebufIwSt11char_traitsIwEE5_InitEPSt10_Dnk_filetNS2_7_InitflEE7_Stinit);
|
||||
REG_FUNC(0x8A37475, _ZTIN10__cxxabiv116__enum_type_infoE);
|
||||
REG_FUNC(0x08A37475, _ZTIN10__cxxabiv116__enum_type_infoE);
|
||||
REG_FUNC(0x66CC7DBB, _ZTIN10__cxxabiv117__array_type_infoE);
|
||||
REG_FUNC(0x81C44513, _ZTIN10__cxxabiv117__class_type_infoE);
|
||||
REG_FUNC(0xC35024DA, _ZTIN10__cxxabiv117__pbase_type_infoE);
|
||||
|
|
90
rpcs3/Emu/ARMv7/Modules/scePerf.cpp
Normal file
90
rpcs3/Emu/ARMv7/Modules/scePerf.cpp
Normal file
|
@ -0,0 +1,90 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
|
||||
extern psv_log_base scePerf;
|
||||
|
||||
s32 scePerfArmPmonReset(s32 threadId)
|
||||
{
|
||||
scePerf.Todo("scePerfArmPmonReset(threadId=0x%x)", threadId);
|
||||
|
||||
return SCE_OK;
|
||||
}
|
||||
|
||||
s32 scePerfArmPmonSelectEvent(s32 threadId, u32 counter, u8 eventCode)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 scePerfArmPmonStart(s32 threadId)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 scePerfArmPmonStop(s32 threadId)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 scePerfArmPmonGetCounterValue(s32 threadId, u32 counter, vm::psv::ptr<u32> pValue)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 scePerfArmPmonSoftwareIncrement(u32 mask)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
u64 scePerfGetTimebaseValue()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
u32 scePerfGetTimebaseFrequency()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 _sceRazorCpuInit(vm::psv::ptr<const void> pBufferBase, u32 bufferSize, u32 numPerfCounters, vm::psv::ptr<vm::psv::ptr<u32>> psceRazorVars)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceRazorCpuPushMarker(vm::psv::ptr<const char> szLabel)
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceRazorCpuPopMarker()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
s32 sceRazorCpuSync()
|
||||
{
|
||||
throw __FUNCTION__;
|
||||
}
|
||||
|
||||
#define REG_FUNC(nid, name) reg_psv_func(nid, &scePerf, #name, name)
|
||||
|
||||
psv_log_base scePerf("ScePerf", []()
|
||||
{
|
||||
scePerf.on_load = nullptr;
|
||||
scePerf.on_unload = nullptr;
|
||||
scePerf.on_stop = nullptr;
|
||||
|
||||
REG_FUNC(0x35151735, scePerfArmPmonReset);
|
||||
REG_FUNC(0x63CBEA8B, scePerfArmPmonSelectEvent);
|
||||
REG_FUNC(0xC9D969D5, scePerfArmPmonStart);
|
||||
REG_FUNC(0xD1A40F54, scePerfArmPmonStop);
|
||||
REG_FUNC(0x6132A497, scePerfArmPmonGetCounterValue);
|
||||
//REG_FUNC(0x12F6C708, scePerfArmPmonSetCounterValue);
|
||||
REG_FUNC(0x4264B4E7, scePerfArmPmonSoftwareIncrement);
|
||||
REG_FUNC(0xBD9615E5, scePerfGetTimebaseValue);
|
||||
REG_FUNC(0x78EA4FFB, scePerfGetTimebaseFrequency);
|
||||
REG_FUNC(0x7AD6AC30, _sceRazorCpuInit);
|
||||
REG_FUNC(0xC3DE4C0A, sceRazorCpuPushMarker);
|
||||
REG_FUNC(0xDC3224C3, sceRazorCpuPopMarker);
|
||||
REG_FUNC(0x4F1385E3, sceRazorCpuSync);
|
||||
});
|
39
rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp
Normal file
39
rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp
Normal file
|
@ -0,0 +1,39 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
|
||||
extern psv_log_base sceSysmodule;
|
||||
|
||||
s32 sceSysmoduleLoadModule(u16 id)
|
||||
{
|
||||
sceSysmodule.Error("sceSysmoduleLoadModule(id=0x%04x) -> SCE_OK", id);
|
||||
|
||||
return SCE_OK; // loading succeeded
|
||||
}
|
||||
|
||||
s32 sceSysmoduleUnloadModule(u16 id)
|
||||
{
|
||||
sceSysmodule.Error("sceSysmoduleUnloadModule(id=0x%04x) -> SCE_OK", id);
|
||||
|
||||
return SCE_OK; // unloading succeeded
|
||||
}
|
||||
|
||||
s32 sceSysmoduleIsLoaded(u16 id)
|
||||
{
|
||||
sceSysmodule.Error("sceSysmoduleIsLoaded(id=0x%04x) -> SCE_OK", id);
|
||||
|
||||
return SCE_OK; // module is loaded
|
||||
}
|
||||
|
||||
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceSysmodule, #name, name)
|
||||
|
||||
psv_log_base sceSysmodule("SceSysmodule", []()
|
||||
{
|
||||
sceSysmodule.on_load = nullptr;
|
||||
sceSysmodule.on_unload = nullptr;
|
||||
sceSysmodule.on_stop = nullptr;
|
||||
|
||||
REG_FUNC(0x79A0160A, sceSysmoduleLoadModule);
|
||||
REG_FUNC(0x31D87805, sceSysmoduleUnloadModule);
|
||||
REG_FUNC(0x53099B7A, sceSysmoduleIsLoaded);
|
||||
});
|
|
@ -48,6 +48,12 @@ extern psv_log_base sceLibc;
|
|||
extern psv_log_base sceLibm;
|
||||
extern psv_log_base sceLibstdcxx;
|
||||
extern psv_log_base sceLibKernel;
|
||||
extern psv_log_base sceSysmodule;
|
||||
extern psv_log_base scePerf;
|
||||
extern psv_log_base sceCtrl;
|
||||
extern psv_log_base sceDeci4p;
|
||||
extern psv_log_base sceDisplay;
|
||||
extern psv_log_base sceGxm;
|
||||
|
||||
void initialize_psv_modules()
|
||||
{
|
||||
|
@ -58,6 +64,12 @@ void initialize_psv_modules()
|
|||
g_psv_modules.push_back(&sceLibm);
|
||||
g_psv_modules.push_back(&sceLibstdcxx);
|
||||
g_psv_modules.push_back(&sceLibKernel);
|
||||
g_psv_modules.push_back(&sceSysmodule);
|
||||
g_psv_modules.push_back(&scePerf);
|
||||
g_psv_modules.push_back(&sceCtrl);
|
||||
g_psv_modules.push_back(&sceDeci4p);
|
||||
g_psv_modules.push_back(&sceDisplay);
|
||||
g_psv_modules.push_back(&sceGxm);
|
||||
|
||||
// setup special functions (without NIDs)
|
||||
psv_func unimplemented;
|
||||
|
@ -66,7 +78,7 @@ void initialize_psv_modules()
|
|||
unimplemented.func.reset(new psv_func_detail::func_binder<void, ARMv7Context&>([](ARMv7Context& context)
|
||||
{
|
||||
context.thread.m_last_syscall = vm::psv::read32(context.thread.PC + 4);
|
||||
throw "Unimplemented function executed";
|
||||
throw "Unimplemented function";
|
||||
}));
|
||||
g_psv_func_list.push_back(unimplemented);
|
||||
|
||||
|
|
16
rpcs3/Emu/ARMv7/PSVObjectList.cpp
Normal file
16
rpcs3/Emu/ARMv7/PSVObjectList.cpp
Normal file
|
@ -0,0 +1,16 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
#include "Emu/ARMv7/PSVObjectList.h"
|
||||
#include "Modules/sceLibKernel.h"
|
||||
#include "Modules/psv_sema.h"
|
||||
#include "Modules/psv_event_flag.h"
|
||||
|
||||
psv_object_list_t<psv_sema_t, SCE_KERNEL_THREADMGR_UID_CLASS_SEMA> g_psv_sema_list;
|
||||
psv_object_list_t<psv_event_flag_t, SCE_KERNEL_THREADMGR_UID_CLASS_EVENT_FLAG> g_psv_ef_list;
|
||||
|
||||
void clear_all_psv_objects()
|
||||
{
|
||||
g_psv_sema_list.clear();
|
||||
g_psv_ef_list.clear();
|
||||
}
|
109
rpcs3/Emu/ARMv7/PSVObjectList.h
Normal file
109
rpcs3/Emu/ARMv7/PSVObjectList.h
Normal file
|
@ -0,0 +1,109 @@
|
|||
#pragma once
|
||||
|
||||
union psv_uid_t
|
||||
{
|
||||
// true UID format is partially unknown
|
||||
s32 uid;
|
||||
|
||||
struct
|
||||
{
|
||||
u32 oddness : 1; // always 1 for UIDs (to not mess it up with addresses)
|
||||
u32 number : 15; // ID from 0 to 2^15-1
|
||||
u32 type : 15; // UID class (psv_object_class_t)
|
||||
u32 sign : 1; // UIDs are positive, error codes are negative
|
||||
};
|
||||
|
||||
static psv_uid_t make(s32 uid)
|
||||
{
|
||||
psv_uid_t result;
|
||||
result.uid = uid;
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T, u32 type>
|
||||
class psv_object_list_t // Class for managing object data
|
||||
{
|
||||
std::array<std::shared_ptr<T>, 0x8000> m_data;
|
||||
std::mutex m_mutex; // TODO: remove it when shared_ptr atomic ops are fully available
|
||||
|
||||
public:
|
||||
static const u32 uid_class = type;
|
||||
|
||||
// check if UID is potentially valid (will return true if the object doesn't exist)
|
||||
bool check(s32 uid)
|
||||
{
|
||||
const psv_uid_t id = psv_uid_t::make(uid);
|
||||
|
||||
// check sign bit, uid class and ensure that value is odd
|
||||
return !id.sign && id.type == uid_class && id.oddness == 1;
|
||||
}
|
||||
|
||||
// share object with UID specified (will return empty pointer if the object doesn't exist or the UID is invalid)
|
||||
std::shared_ptr<T> find(s32 uid)
|
||||
{
|
||||
if (!check(uid))
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return m_data[psv_uid_t::make(uid).number];
|
||||
}
|
||||
|
||||
std::shared_ptr<T> operator [](s32 uid)
|
||||
{
|
||||
return find(uid);
|
||||
}
|
||||
|
||||
// generate UID for newly created object (will return zero if the limit exceeded)
|
||||
s32 add(std::shared_ptr<T>& data)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
|
||||
for (auto& value : m_data)
|
||||
{
|
||||
// find an empty position and move the pointer
|
||||
//std::shared_ptr<T> old_ptr = nullptr;
|
||||
//if (std::atomic_compare_exchange_strong(&value, &old_ptr, data))
|
||||
if (!value)
|
||||
{
|
||||
value = data;
|
||||
psv_uid_t id = psv_uid_t::make(1); // odd number
|
||||
id.type = uid_class; // set type
|
||||
id.number = &value - m_data.data(); // set position
|
||||
return id.uid;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// remove object with UID specified and share it for the last time (will return empty pointer if the object doesn't exists or the UID is invalid)
|
||||
std::shared_ptr<T> remove(s32 uid)
|
||||
{
|
||||
if (!check(uid))
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
|
||||
std::shared_ptr<T> old_ptr = nullptr;
|
||||
m_data[psv_uid_t::make(uid).number].swap(old_ptr);
|
||||
return old_ptr;
|
||||
//return std::atomic_exchange<std::shared_ptr<T>>(&m_data[psv_uid_t::make(uid).number], nullptr);
|
||||
}
|
||||
|
||||
// remove all objects
|
||||
void clear()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
|
||||
for (auto& value : m_data)
|
||||
{
|
||||
value = nullptr;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void clear_all_psv_objects();
|
|
@ -968,7 +968,7 @@ struct cast_ppu_gpr<bool, false>
|
|||
return value;
|
||||
}
|
||||
|
||||
__forceinline static bool from_gpr(const u64 reg)
|
||||
__forceinline static bool from_gpr(const u64& reg)
|
||||
{
|
||||
return reinterpret_cast<const bool&>(reg);
|
||||
}
|
||||
|
|
|
@ -109,7 +109,11 @@ namespace vm
|
|||
|
||||
public:
|
||||
typedef typename std::remove_cv<T>::type type;
|
||||
static const u32 data_size = sizeof(T);
|
||||
|
||||
__forceinline static const u32 data_size()
|
||||
{
|
||||
return sizeof(T);
|
||||
}
|
||||
|
||||
__forceinline T* const operator -> () const
|
||||
{
|
||||
|
@ -119,45 +123,45 @@ namespace vm
|
|||
_ptr_base operator++ (int)
|
||||
{
|
||||
AT result = m_addr;
|
||||
m_addr += data_size;
|
||||
m_addr += data_size();
|
||||
return make(result);
|
||||
}
|
||||
|
||||
_ptr_base& operator++ ()
|
||||
{
|
||||
m_addr += data_size;
|
||||
m_addr += data_size();
|
||||
return *this;
|
||||
}
|
||||
|
||||
_ptr_base operator-- (int)
|
||||
{
|
||||
AT result = m_addr;
|
||||
m_addr -= data_size;
|
||||
m_addr -= data_size();
|
||||
return make(result);
|
||||
}
|
||||
|
||||
_ptr_base& operator-- ()
|
||||
{
|
||||
m_addr -= data_size;
|
||||
m_addr -= data_size();
|
||||
return *this;
|
||||
}
|
||||
|
||||
_ptr_base& operator += (AT count)
|
||||
{
|
||||
m_addr += count * data_size;
|
||||
m_addr += count * data_size();
|
||||
return *this;
|
||||
}
|
||||
|
||||
_ptr_base& operator -= (AT count)
|
||||
{
|
||||
m_addr -= count * data_size;
|
||||
m_addr -= count * data_size();
|
||||
return *this;
|
||||
}
|
||||
|
||||
_ptr_base operator + (typename remove_be_t<AT>::type count) const { return make(m_addr + count * data_size); }
|
||||
_ptr_base operator + (typename to_be_t<AT>::type count) const { return make(m_addr + count * data_size); }
|
||||
_ptr_base operator - (typename remove_be_t<AT>::type count) const { return make(m_addr - count * data_size); }
|
||||
_ptr_base operator - (typename to_be_t<AT>::type count) const { return make(m_addr - count * data_size); }
|
||||
_ptr_base operator + (typename remove_be_t<AT>::type count) const { return make(m_addr + count * data_size()); }
|
||||
_ptr_base operator + (typename to_be_t<AT>::type count) const { return make(m_addr + count * data_size()); }
|
||||
_ptr_base operator - (typename remove_be_t<AT>::type count) const { return make(m_addr - count * data_size()); }
|
||||
_ptr_base operator - (typename to_be_t<AT>::type count) const { return make(m_addr - count * data_size()); }
|
||||
|
||||
__forceinline T& operator *() const
|
||||
{
|
||||
|
@ -166,12 +170,12 @@ namespace vm
|
|||
|
||||
__forceinline T& operator [](typename remove_be_t<AT>::type index) const
|
||||
{
|
||||
return vm::get_ref<T>(vm::cast(m_addr + data_size * index));
|
||||
return vm::get_ref<T>(vm::cast(m_addr + data_size() * index));
|
||||
}
|
||||
|
||||
__forceinline T& operator [](typename to_be_t<AT>::forced_type index) const
|
||||
{
|
||||
return vm::get_ref<T>(vm::cast(m_addr + data_size * index));
|
||||
return vm::get_ref<T>(vm::cast(m_addr + data_size() * index));
|
||||
}
|
||||
|
||||
__forceinline bool operator <(const _ptr_base& right) const { return m_addr < right.m_addr; }
|
||||
|
@ -326,12 +330,12 @@ namespace vm
|
|||
};
|
||||
|
||||
template<typename AT, typename RT, typename ...T>
|
||||
class _ptr_base<RT(*)(T...), 1, AT>
|
||||
class _ptr_base<RT(T...), 1, AT>
|
||||
{
|
||||
AT m_addr;
|
||||
|
||||
public:
|
||||
typedef RT(*type)(T...);
|
||||
typedef RT(type)(T...);
|
||||
|
||||
RT operator()(CPUThread& CPU, T... args) const; // defined in CB_FUNC.h, call using specified PPU thread context
|
||||
|
||||
|
@ -360,10 +364,10 @@ namespace vm
|
|||
explicit operator bool() const { return m_addr != 0; }
|
||||
|
||||
template<typename AT2>
|
||||
operator const _ptr_base<RT(*)(T...), 1, AT2>() const
|
||||
operator const _ptr_base<type, 1, AT2>() const
|
||||
{
|
||||
const AT2 addr = convert_le_be<AT2>(m_addr);
|
||||
return reinterpret_cast<const _ptr_base<RT(*)(T...), 1, AT2>&>(addr);
|
||||
return reinterpret_cast<const _ptr_base<type, 1, AT2>&>(addr);
|
||||
}
|
||||
|
||||
static const _ptr_base make(const AT& addr)
|
||||
|
@ -371,7 +375,7 @@ namespace vm
|
|||
return reinterpret_cast<const _ptr_base&>(addr);
|
||||
}
|
||||
|
||||
operator const std::function<RT(T...)>() const
|
||||
operator const std::function<type>() const
|
||||
{
|
||||
const AT addr = convert_le_be<AT>(m_addr);
|
||||
return [addr](T... args) -> RT { return make(addr)(args...); };
|
||||
|
@ -380,6 +384,15 @@ namespace vm
|
|||
_ptr_base& operator = (const _ptr_base& right) = default;
|
||||
};
|
||||
|
||||
template<typename AT, typename RT, typename ...T>
|
||||
class _ptr_base<RT(*)(T...), 1, AT>
|
||||
{
|
||||
AT m_addr;
|
||||
|
||||
public:
|
||||
static_assert(!sizeof(AT), "vm::_ptr_base<> error: use RT(T...) format for functions instead of RT(*)(T...)");
|
||||
};
|
||||
|
||||
//BE pointer to LE data
|
||||
template<typename T, int lvl = 1, typename AT = u32> struct bptrl : public _ptr_base<T, lvl, typename to_be_t<AT>::type>
|
||||
{
|
||||
|
|
|
@ -517,11 +517,12 @@ namespace vm
|
|||
ptr = vm::get_ptr<T>(addr);
|
||||
}
|
||||
|
||||
private:
|
||||
stack_allocation() = delete;
|
||||
stack_allocation(const stack_allocation& r) = delete;
|
||||
stack_allocation(stack_allocation&& r) = delete;
|
||||
stack_allocation& operator = (const stack_allocation& r) = delete;
|
||||
stack_allocation& operator = (stack_allocation&& r) = delete;
|
||||
stack_allocation(const stack_allocation&) = delete;
|
||||
stack_allocation(stack_allocation&&) = delete;
|
||||
stack_allocation& operator = (const stack_allocation&) = delete;
|
||||
stack_allocation& operator = (stack_allocation&&) = delete;
|
||||
|
||||
} const m_data;
|
||||
|
||||
|
|
|
@ -220,7 +220,7 @@ struct CellGcmConfig
|
|||
|
||||
struct CellGcmContextData;
|
||||
|
||||
typedef s32(*CellGcmContextCallback)(vm::ptr<CellGcmContextData>, u32);
|
||||
typedef s32(CellGcmContextCallback)(vm::ptr<CellGcmContextData>, u32);
|
||||
|
||||
struct CellGcmContextData
|
||||
{
|
||||
|
|
|
@ -157,10 +157,10 @@ public:
|
|||
SSemaphore m_sem_flush;
|
||||
SSemaphore m_sem_flip;
|
||||
u64 m_last_flip_time;
|
||||
vm::ptr<void(*)(const u32)> m_flip_handler;
|
||||
vm::ptr<void(*)(const u32)> m_user_handler;
|
||||
vm::ptr<void(u32)> m_flip_handler;
|
||||
vm::ptr<void(u32)> m_user_handler;
|
||||
u64 m_vblank_count;
|
||||
vm::ptr<void(*)(const u32)> m_vblank_handler;
|
||||
vm::ptr<void(u32)> m_vblank_handler;
|
||||
|
||||
public:
|
||||
// Dither
|
||||
|
@ -445,6 +445,7 @@ protected:
|
|||
, m_flip_mode(CELL_GCM_DISPLAY_VSYNC)
|
||||
, m_debug_level(CELL_GCM_DEBUG_LEVEL0)
|
||||
, m_frequency_mode(CELL_GCM_DISPLAY_FREQUENCY_DISABLE)
|
||||
, m_report_main_addr(0)
|
||||
, m_main_mem_addr(0)
|
||||
, m_local_mem_addr(0)
|
||||
, m_draw_mode(0)
|
||||
|
|
|
@ -163,7 +163,7 @@ namespace cb_detail
|
|||
namespace vm
|
||||
{
|
||||
template<typename AT, typename RT, typename... T>
|
||||
__forceinline RT _ptr_base<RT(*)(T...), 1, AT>::operator()(CPUThread& CPU, T... args) const
|
||||
__forceinline RT _ptr_base<RT(T...), 1, AT>::operator()(CPUThread& CPU, T... args) const
|
||||
{
|
||||
auto data = vm::get_ptr<be_t<u32>>(vm::cast(m_addr));
|
||||
const u32 pc = data[0];
|
||||
|
@ -174,7 +174,7 @@ namespace vm
|
|||
}
|
||||
|
||||
template<typename AT, typename RT, typename... T>
|
||||
__forceinline RT _ptr_base<RT(*)(T...), 1, AT>::operator()(T... args) const
|
||||
__forceinline RT _ptr_base<RT(T...), 1, AT>::operator()(T... args) const
|
||||
{
|
||||
return operator()(GetCurrentPPUThread(), args...);
|
||||
}
|
||||
|
@ -186,6 +186,7 @@ __forceinline RT cb_call(PPUThread& CPU, u32 pc, u32 rtoc, T... args)
|
|||
return cb_detail::_func_caller<RT, T...>::call(CPU, pc, rtoc, args...);
|
||||
}
|
||||
|
||||
// Something is wrong with it (but cb_call<void, ...>() should work anyway)
|
||||
//template<typename... T>
|
||||
//void cb_call(PPUThread& CPU, u32 pc, u32 rtoc, T... args)
|
||||
//{
|
||||
|
|
|
@ -42,6 +42,14 @@ class PauseCallbackRegisterer
|
|||
CallbackManager& cb_manager;
|
||||
u64 cb_tag;
|
||||
|
||||
private:
|
||||
PauseCallbackRegisterer() = delete;
|
||||
PauseCallbackRegisterer(const PauseCallbackRegisterer& right) = delete;
|
||||
PauseCallbackRegisterer(PauseCallbackRegisterer&& right) = delete;
|
||||
|
||||
PauseCallbackRegisterer& operator =(const PauseCallbackRegisterer& right) = delete;
|
||||
PauseCallbackRegisterer& operator =(PauseCallbackRegisterer&& right) = delete;
|
||||
|
||||
public:
|
||||
PauseCallbackRegisterer(CallbackManager& cb_manager, const std::function<PauseResumeCB>& func)
|
||||
: cb_manager(cb_manager)
|
||||
|
@ -49,16 +57,8 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
PauseCallbackRegisterer() = delete;
|
||||
PauseCallbackRegisterer(const PauseCallbackRegisterer& right) = delete;
|
||||
PauseCallbackRegisterer(PauseCallbackRegisterer&& right) = delete;
|
||||
|
||||
~PauseCallbackRegisterer()
|
||||
{
|
||||
cb_manager.RemovePauseCallback(cb_tag);
|
||||
}
|
||||
|
||||
PauseCallbackRegisterer& operator =(const PauseCallbackRegisterer& right) = delete;
|
||||
PauseCallbackRegisterer& operator =(PauseCallbackRegisterer&& right) = delete;
|
||||
|
||||
};
|
||||
|
|
|
@ -9,9 +9,9 @@ struct ModuleFunc
|
|||
{
|
||||
u32 id;
|
||||
func_caller* func;
|
||||
vm::ptr<void(*)()> lle_func;
|
||||
vm::ptr<void()> lle_func;
|
||||
|
||||
ModuleFunc(u32 id, func_caller* func, vm::ptr<void(*)()> lle_func = vm::ptr<void(*)()>::make(0))
|
||||
ModuleFunc(u32 id, func_caller* func, vm::ptr<void()> lle_func = vm::ptr<void()>::make(0))
|
||||
: id(id)
|
||||
, func(func)
|
||||
, lle_func(lle_func)
|
||||
|
@ -129,7 +129,7 @@ public:
|
|||
|
||||
bool RemoveId(u32 id);
|
||||
|
||||
void RegisterLLEFunc(u32 id, vm::ptr<void(*)()> func)
|
||||
void RegisterLLEFunc(u32 id, vm::ptr<void()> func)
|
||||
{
|
||||
if (auto f = GetFunc(id))
|
||||
{
|
||||
|
|
|
@ -366,7 +366,7 @@ enum CellAdecMsgType
|
|||
CELL_ADEC_MSG_TYPE_SEQDONE,
|
||||
};
|
||||
|
||||
typedef s32(*CellAdecCbMsg)(u32 handle, CellAdecMsgType msgType, s32 msgData, u32 cbArg);
|
||||
typedef s32(CellAdecCbMsg)(u32 handle, CellAdecMsgType msgType, s32 msgData, u32 cbArg);
|
||||
|
||||
struct CellAdecCb
|
||||
{
|
||||
|
|
|
@ -217,7 +217,7 @@ struct CellDmuxResource2
|
|||
be_t<u32> shit[4];
|
||||
};
|
||||
|
||||
typedef u32(*CellDmuxCbMsg)(u32 demuxerHandle, vm::ptr<CellDmuxMsg> demuxerMsg, u32 cbArg);
|
||||
typedef u32(CellDmuxCbMsg)(u32 demuxerHandle, vm::ptr<CellDmuxMsg> demuxerMsg, u32 cbArg);
|
||||
|
||||
struct CellDmuxCb
|
||||
{
|
||||
|
@ -225,7 +225,7 @@ struct CellDmuxCb
|
|||
be_t<u32> cbArg;
|
||||
};
|
||||
|
||||
typedef u32(*CellDmuxCbEsMsg)(u32 demuxerHandle, u32 esHandle, vm::ptr<CellDmuxEsMsg> esMsg, u32 cbArg);
|
||||
typedef u32(CellDmuxCbEsMsg)(u32 demuxerHandle, u32 esHandle, vm::ptr<CellDmuxEsMsg> esMsg, u32 cbArg);
|
||||
|
||||
struct CellDmuxEsCb
|
||||
{
|
||||
|
|
|
@ -202,7 +202,7 @@ int cellGameContentPermit(vm::ptr<char[CELL_GAME_PATH_MAX]> contentInfoPath, vm:
|
|||
}
|
||||
|
||||
int cellGameDataCheckCreate2(PPUThread& CPU, u32 version, vm::ptr<const char> dirName, u32 errDialog,
|
||||
vm::ptr<void(*)(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container)
|
||||
vm::ptr<void(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container)
|
||||
{
|
||||
cellGame->Warning("cellGameDataCheckCreate(2)(version=0x%x, dirName_addr=0x%x, errDialog=0x%x, funcStat_addr=0x%x, container=%d)",
|
||||
version, dirName.addr(), errDialog, funcStat.addr(), container);
|
||||
|
@ -307,7 +307,7 @@ int cellGameDataCheckCreate2(PPUThread& CPU, u32 version, vm::ptr<const char> di
|
|||
}
|
||||
|
||||
int cellGameDataCheckCreate(PPUThread& CPU, u32 version, vm::ptr<const char> dirName, u32 errDialog,
|
||||
vm::ptr<void(*)(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container)
|
||||
vm::ptr<void(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container)
|
||||
{
|
||||
// TODO: almost identical, the only difference is that this function will always calculate the size of game data
|
||||
return cellGameDataCheckCreate2(CPU, version, dirName, errDialog, funcStat, container);
|
||||
|
|
|
@ -125,12 +125,8 @@ u32 cellGcmGetNotifyDataAddress(u32 index)
|
|||
{
|
||||
cellGcmSys->Warning("cellGcmGetNotifyDataAddress(index=%d)", index);
|
||||
|
||||
// Get address of 'IO table' and 'EA table'
|
||||
vm::var<CellGcmOffsetTable> table;
|
||||
cellGcmGetOffsetTable(table);
|
||||
|
||||
// If entry not in use, return NULL
|
||||
u16 entry = table->eaAddress[241];
|
||||
u16 entry = offsetTable.eaAddress[241];
|
||||
if (entry == 0xFFFF) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -455,7 +451,7 @@ int cellGcmSetFlip(vm::ptr<CellGcmContextData> ctxt, u32 id)
|
|||
return res < 0 ? CELL_GCM_ERROR_FAILURE : CELL_OK;
|
||||
}
|
||||
|
||||
void cellGcmSetFlipHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void cellGcmSetFlipHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
cellGcmSys->Warning("cellGcmSetFlipHandler(handler_addr=%d)", handler.addr());
|
||||
|
||||
|
@ -594,14 +590,14 @@ int cellGcmSetTileInfo(u8 index, u8 location, u32 offset, u32 size, u32 pitch, u
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellGcmSetUserHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void cellGcmSetUserHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
cellGcmSys->Warning("cellGcmSetUserHandler(handler_addr=0x%x)", handler.addr());
|
||||
|
||||
Emu.GetGSManager().GetRender().m_user_handler = handler;
|
||||
}
|
||||
|
||||
void cellGcmSetVBlankHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void cellGcmSetVBlankHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
cellGcmSys->Warning("cellGcmSetVBlankHandler(handler_addr=0x%x)", handler.addr());
|
||||
|
||||
|
@ -1189,7 +1185,7 @@ s32 cellGcmCallback(vm::ptr<CellGcmContextData> context, u32 count)
|
|||
//auto& ctrl = vm::get_ref<CellGcmControl>(gcm_info.control_addr);
|
||||
|
||||
// preparations for changing the place (for optimized FIFO mode)
|
||||
//auto cmd = vm::ptr<u32>::make(context->current.ToLE());
|
||||
//auto cmd = vm::ptr<u32>::make(context->current);
|
||||
//cmd[0] = 0x41D6C;
|
||||
//cmd[1] = 0x20;
|
||||
//cmd[2] = 0x41D74;
|
||||
|
@ -1205,7 +1201,7 @@ s32 cellGcmCallback(vm::ptr<CellGcmContextData> context, u32 count)
|
|||
vm::write32(context->current, CELL_GCM_METHOD_FLAG_JUMP | offset); // set JUMP cmd
|
||||
|
||||
auto& ctrl = vm::get_ref<CellGcmControl>(gcm_info.control_addr);
|
||||
ctrl.put.write_relaxed(be_t<u32>::make(offset));
|
||||
ctrl.put.exchange(be_t<u32>::make(offset));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -79,7 +79,7 @@ enum
|
|||
CELL_MSGDIALOG_BUTTON_ESCAPE = 3,
|
||||
};
|
||||
|
||||
typedef void(*CellMsgDialogCallback)(s32 buttonType, u32 userData);
|
||||
typedef void(CellMsgDialogCallback)(s32 buttonType, u32 userData);
|
||||
|
||||
s32 cellMsgDialogOpen2(u32 type, vm::ptr<const char> msgString, vm::ptr<CellMsgDialogCallback> callback, u32 userData, u32 extParam);
|
||||
s32 cellMsgDialogOpenErrorCode(u32 errorCode, vm::ptr<CellMsgDialogCallback> callback, u32 userData, u32 extParam);
|
||||
|
|
|
@ -224,7 +224,7 @@ union CellNetCtlInfo
|
|||
be_t<u32> ip_config;
|
||||
s8 dhcp_hostname[256];
|
||||
s8 pppoe_auth_name[128];
|
||||
s8 ip_address[16];
|
||||
char ip_address[16];
|
||||
s8 netmask[16];
|
||||
s8 default_route[16];
|
||||
s8 primary_dns[16];
|
||||
|
@ -257,4 +257,4 @@ struct CellNetCtlNatInfo
|
|||
be_t<u32> mapped_addr;
|
||||
};
|
||||
|
||||
typedef void(*cellNetCtlHandler)(s32 prev_state, s32 new_state, s32 event, s32 error_code, vm::ptr<u32> arg);
|
||||
typedef void(cellNetCtlHandler)(s32 prev_state, s32 new_state, s32 event, s32 error_code, vm::ptr<u32> arg);
|
||||
|
|
|
@ -87,8 +87,8 @@ enum CellPngDecDecodeStatus : u32
|
|||
};
|
||||
|
||||
// Callbacks
|
||||
typedef vm::ptr<void>(*CellPngDecCbControlMalloc)(u32 size, vm::ptr<void> cbCtrlMallocArg);
|
||||
typedef s32(*CellPngDecCbControlFree)(vm::ptr<void> ptr, vm::ptr<void> cbCtrlFreeArg);
|
||||
typedef vm::ptr<void>(CellPngDecCbControlMalloc)(u32 size, vm::ptr<void> cbCtrlMallocArg);
|
||||
typedef s32(CellPngDecCbControlFree)(vm::ptr<void> ptr, vm::ptr<void> cbCtrlFreeArg);
|
||||
|
||||
// Structs
|
||||
struct CellPngDecThreadInParam
|
||||
|
@ -283,11 +283,7 @@ struct CellPngDecStrmParam
|
|||
be_t<u32> strmSize;
|
||||
};
|
||||
|
||||
typedef s32(*CellPngDecCbControlStream)(
|
||||
vm::ptr<CellPngDecStrmInfo> strmInfo,
|
||||
vm::ptr<CellPngDecStrmParam> strmParam,
|
||||
vm::ptr<void> cbCtrlStrmArg
|
||||
);
|
||||
typedef s32(CellPngDecCbControlStream)(vm::ptr<CellPngDecStrmInfo> strmInfo, vm::ptr<CellPngDecStrmParam> strmParam, vm::ptr<void> cbCtrlStrmArg);
|
||||
|
||||
struct CellPngDecDispInfo
|
||||
{
|
||||
|
@ -310,7 +306,7 @@ struct CellPngDecDispParam
|
|||
};
|
||||
|
||||
// Callback
|
||||
typedef s32(*CellPngDecCbControlDisp)(vm::ptr<CellPngDecDispInfo> dispInfo, vm::ptr<CellPngDecDispParam> dispParam, vm::ptr<void> cbCtrlDispArg);
|
||||
typedef s32(CellPngDecCbControlDisp)(vm::ptr<CellPngDecDispInfo> dispInfo, vm::ptr<CellPngDecDispParam> dispParam, vm::ptr<void> cbCtrlDispArg);
|
||||
|
||||
// Structs
|
||||
struct CellPngDecOpnParam
|
||||
|
|
|
@ -12,8 +12,8 @@ Module *cellResc = nullptr;
|
|||
|
||||
extern s32 cellVideoOutConfigure(u32 videoOut, vm::ptr<CellVideoOutConfiguration> config, vm::ptr<CellVideoOutOption> option, u32 waitForEvent);
|
||||
extern int cellGcmSetFlipMode(u32 mode);
|
||||
extern void cellGcmSetFlipHandler(vm::ptr<void(*)(const u32)> handler);
|
||||
extern void cellGcmSetVBlankHandler(vm::ptr<void(*)(const u32)> handler);
|
||||
extern void cellGcmSetFlipHandler(vm::ptr<void(u32)> handler);
|
||||
extern void cellGcmSetVBlankHandler(vm::ptr<void(u32)> handler);
|
||||
extern int cellGcmAddressToOffset(u64 address, vm::ptr<be_t<u32>> offset);
|
||||
extern int cellGcmSetDisplayBuffer(u32 id, u32 offset, u32 pitch, u32 width, u32 height);
|
||||
extern int cellGcmSetPrepareFlip(vm::ptr<CellGcmContextData> ctx, u32 id);
|
||||
|
@ -603,7 +603,7 @@ void cellRescExit()
|
|||
if (IsPalTemporal())
|
||||
{
|
||||
cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_DISABLE);
|
||||
cellGcmSetVBlankHandler(vm::ptr<void(*)(const u32)>::make(0));
|
||||
cellGcmSetVBlankHandler(vm::ptr<void(u32)>::make(0));
|
||||
//GcmSysTypePrefix::cellGcmSetSecondVHandler(NULL);
|
||||
|
||||
if (IsPalInterpolate())
|
||||
|
@ -667,7 +667,7 @@ int cellRescSetDsts(u32 dstsMode, vm::ptr<CellRescDsts> dsts)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void SetVBlankHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void SetVBlankHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
if (!s_rescInternalInstance->m_bInitialized || s_rescInternalInstance->m_dstMode == 0)
|
||||
{
|
||||
|
@ -693,7 +693,7 @@ void SetVBlankHandler(vm::ptr<void(*)(const u32)> handler)
|
|||
}
|
||||
|
||||
|
||||
void SetFlipHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void SetFlipHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
if (!s_rescInternalInstance->m_bInitialized || s_rescInternalInstance->m_dstMode == 0)
|
||||
{
|
||||
|
@ -780,20 +780,20 @@ int cellRescSetDisplayMode(u32 displayMode)
|
|||
cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_59_94HZ);
|
||||
//cellGcmSetVBlankHandler(IntrHandler50);
|
||||
//cellGcmSetSecondVHandler(IntrHandler60);
|
||||
cellGcmSetFlipHandler(vm::ptr<void(*)(const u32)>::make(0));
|
||||
cellGcmSetFlipHandler(vm::ptr<void(u32)>::make(0));
|
||||
}
|
||||
else if (IsPalDrop())
|
||||
{
|
||||
//InitLabels();
|
||||
cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_59_94HZ);
|
||||
cellGcmSetVBlankHandler(vm::ptr<void(*)(const u32)>::make(0));
|
||||
cellGcmSetVBlankHandler(vm::ptr<void(u32)>::make(0));
|
||||
//cellGcmSetSecondVHandler(IntrHandler60Drop);
|
||||
cellGcmSetFlipHandler(vm::ptr<void(*)(const u32)>::make(0));
|
||||
cellGcmSetFlipHandler(vm::ptr<void(u32)>::make(0));
|
||||
}
|
||||
else if (IsPal60Hsync())
|
||||
{
|
||||
cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_59_94HZ);
|
||||
cellGcmSetVBlankHandler(vm::ptr<void(*)(const u32)>::make(0));
|
||||
cellGcmSetVBlankHandler(vm::ptr<void(u32)>::make(0));
|
||||
}
|
||||
|
||||
if (s_rescInternalInstance->s_applicationVBlankHandler) SetVBlankHandler(s_rescInternalInstance->s_applicationVBlankHandler);
|
||||
|
@ -1073,7 +1073,7 @@ int cellRescSetBufferAddress(vm::ptr<u32> colorBuffers, vm::ptr<u32> vertexArray
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellRescSetFlipHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void cellRescSetFlipHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
cellResc->Warning("cellRescSetFlipHandler(handler_addr=0x%x)", handler.addr());
|
||||
|
||||
|
@ -1113,7 +1113,7 @@ int cellRescSetRegisterCount()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellRescSetVBlankHandler(vm::ptr<void(*)(const u32)> handler)
|
||||
void cellRescSetVBlankHandler(vm::ptr<void(u32)> handler)
|
||||
{
|
||||
cellResc->Warning("cellRescSetVBlankHandler(handler_addr=0x%x)", handler.addr());
|
||||
|
||||
|
|
|
@ -137,8 +137,8 @@ struct CCellRescInternal
|
|||
bool m_isDummyFlipped;
|
||||
u8 m_cgParamIndex[RESC_PARAM_NUM];
|
||||
u64 m_commandIdxCaF, m_rcvdCmdIdx;
|
||||
vm::ptr<void(*)(const u32)> s_applicationFlipHandler;
|
||||
vm::ptr<void(*)(const u32)> s_applicationVBlankHandler;
|
||||
vm::ptr<void(u32)> s_applicationFlipHandler;
|
||||
vm::ptr<void(u32)> s_applicationVBlankHandler;
|
||||
|
||||
CCellRescInternal()
|
||||
: m_bInitialized(false)
|
||||
|
|
|
@ -618,64 +618,64 @@ union CellSailEvent
|
|||
};
|
||||
};
|
||||
|
||||
typedef u32(*CellSailMemAllocatorFuncAlloc)(u32 pArg, u32 boundary, u32 size);
|
||||
typedef u32(*CellSailMemAllocatorFuncFree)(u32 pArg, u32 boundary, u32 pMemory);
|
||||
typedef u32(CellSailMemAllocatorFuncAlloc)(u32 pArg, u32 boundary, u32 size);
|
||||
typedef u32(CellSailMemAllocatorFuncFree)(u32 pArg, u32 boundary, u32 pMemory);
|
||||
|
||||
typedef int(*CellSailSoundAdapterFuncMakeup)(u32 pArg);
|
||||
typedef int(*CellSailSoundAdapterFuncCleanup)(u32 pArg);
|
||||
typedef void(*CellSailSoundAdapterFuncFormatChanged)(u32 pArg, vm::ptr<CellSailAudioFormat> pFormat, u32 sessionId);
|
||||
typedef int(CellSailSoundAdapterFuncMakeup)(u32 pArg);
|
||||
typedef int(CellSailSoundAdapterFuncCleanup)(u32 pArg);
|
||||
typedef void(CellSailSoundAdapterFuncFormatChanged)(u32 pArg, vm::ptr<CellSailAudioFormat> pFormat, u32 sessionId);
|
||||
|
||||
typedef int(*CellSailGraphicsAdapterFuncMakeup)(u32 pArg);
|
||||
typedef int(*CellSailGraphicsAdapterFuncCleanup)(u32 pArg);
|
||||
typedef void(*CellSailGraphicsAdapterFuncFormatChanged)(u32 pArg, vm::ptr<CellSailVideoFormat> pFormat, u32 sessionId);
|
||||
typedef int(*CellSailGraphicsAdapterFuncAllocFrame)(u32 pArg, u32 size, s32 num, u8 ppFrame);
|
||||
typedef int(*CellSailGraphicsAdapterFuncFreeFrame)(u32 pArg, s32 num, u8 ppFrame);
|
||||
typedef int(CellSailGraphicsAdapterFuncMakeup)(u32 pArg);
|
||||
typedef int(CellSailGraphicsAdapterFuncCleanup)(u32 pArg);
|
||||
typedef void(CellSailGraphicsAdapterFuncFormatChanged)(u32 pArg, vm::ptr<CellSailVideoFormat> pFormat, u32 sessionId);
|
||||
typedef int(CellSailGraphicsAdapterFuncAllocFrame)(u32 pArg, u32 size, s32 num, u8 ppFrame);
|
||||
typedef int(CellSailGraphicsAdapterFuncFreeFrame)(u32 pArg, s32 num, u8 ppFrame);
|
||||
|
||||
typedef int(*CellSailSourceFuncMakeup)(u32 pArg, s8 pProtocolNames);
|
||||
typedef int(*CellSailSourceFuncCleanup)(u32 pArg);
|
||||
typedef void(*CellSailSourceFuncOpen)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr<CellSailSourceStreamingProfile> pProfile);
|
||||
typedef void(*CellSailSourceFuncClose)(u32 pArg);
|
||||
typedef void(*CellSailSourceFuncStart)(u32 pArg, vm::ptr<CellSailSourceStartCommand> pCommand, u32 sessionId);
|
||||
typedef void(*CellSailSourceFuncStop)(u32 pArg);
|
||||
typedef void(*CellSailSourceFuncCancel)(u32 pArg);
|
||||
typedef int(*CellSailSourceFuncCheckout)(u32 pArg, vm::ptr<CellSailSourceBufferItem> ppItem);
|
||||
typedef int(*CellSailSourceFuncCheckin)(u32 pArg, vm::ptr<CellSailSourceBufferItem> pItem);
|
||||
typedef int(*CellSailSourceFuncClear)(u32 pArg);
|
||||
typedef int(*CellSailSourceFuncRead)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize);
|
||||
typedef int(*CellSailSourceFuncReadSync)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize);
|
||||
typedef int(*CellSailSourceFuncGetCapabilities)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 pCapabilities);
|
||||
typedef int(*CellSailSourceFuncInquireCapability)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr<CellSailSourceStartCommand> pCommand);
|
||||
typedef void(*CellSailSourceCheckFuncError)(u32 pArg, s8 pMsg, s32 line);
|
||||
typedef int(CellSailSourceFuncMakeup)(u32 pArg, s8 pProtocolNames);
|
||||
typedef int(CellSailSourceFuncCleanup)(u32 pArg);
|
||||
typedef void(CellSailSourceFuncOpen)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr<CellSailSourceStreamingProfile> pProfile);
|
||||
typedef void(CellSailSourceFuncClose)(u32 pArg);
|
||||
typedef void(CellSailSourceFuncStart)(u32 pArg, vm::ptr<CellSailSourceStartCommand> pCommand, u32 sessionId);
|
||||
typedef void(CellSailSourceFuncStop)(u32 pArg);
|
||||
typedef void(CellSailSourceFuncCancel)(u32 pArg);
|
||||
typedef int(CellSailSourceFuncCheckout)(u32 pArg, vm::ptr<CellSailSourceBufferItem> ppItem);
|
||||
typedef int(CellSailSourceFuncCheckin)(u32 pArg, vm::ptr<CellSailSourceBufferItem> pItem);
|
||||
typedef int(CellSailSourceFuncClear)(u32 pArg);
|
||||
typedef int(CellSailSourceFuncRead)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize);
|
||||
typedef int(CellSailSourceFuncReadSync)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize);
|
||||
typedef int(CellSailSourceFuncGetCapabilities)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 pCapabilities);
|
||||
typedef int(CellSailSourceFuncInquireCapability)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr<CellSailSourceStartCommand> pCommand);
|
||||
typedef void(CellSailSourceCheckFuncError)(u32 pArg, s8 pMsg, s32 line);
|
||||
|
||||
typedef int(*CellSailFsFuncOpen)(s8 pPath, s32 flag, s32 pFd, u32 pArg, u64 size);
|
||||
typedef int(*CellSailFsFuncOpenSecond)(s8 pPath, s32 flag, s32 fd, u32 pArg, u64 size);
|
||||
typedef int(*CellSailFsFuncClose)(s32 fd);
|
||||
typedef int(*CellSailFsFuncFstat)(s32 fd, u32 pStat_addr);
|
||||
typedef int(*CellSailFsFuncRead)(s32 fd, u32 pBuf, u64 numBytes, u64 pNumRead);
|
||||
typedef int(*CellSailFsFuncLseek)(s32 fd, s64 offset, s32 whence, u64 pPosition);
|
||||
typedef int(*CellSailFsFuncCancel)(s32 fd);
|
||||
typedef int(CellSailFsFuncOpen)(s8 pPath, s32 flag, s32 pFd, u32 pArg, u64 size);
|
||||
typedef int(CellSailFsFuncOpenSecond)(s8 pPath, s32 flag, s32 fd, u32 pArg, u64 size);
|
||||
typedef int(CellSailFsFuncClose)(s32 fd);
|
||||
typedef int(CellSailFsFuncFstat)(s32 fd, u32 pStat_addr);
|
||||
typedef int(CellSailFsFuncRead)(s32 fd, u32 pBuf, u64 numBytes, u64 pNumRead);
|
||||
typedef int(CellSailFsFuncLseek)(s32 fd, s64 offset, s32 whence, u64 pPosition);
|
||||
typedef int(CellSailFsFuncCancel)(s32 fd);
|
||||
|
||||
typedef int(*CellSailRendererAudioFuncMakeup)(u32 pArg);
|
||||
typedef int(*CellSailRendererAudioFuncCleanup)(u32 pArg);
|
||||
typedef void(*CellSailRendererAudioFuncOpen)(u32 pArg, vm::ptr<CellSailAudioFormat> pInfo, u32 frameNum);
|
||||
typedef void(*CellSailRendererAudioFuncClose)(u32 pArg);
|
||||
typedef void(*CellSailRendererAudioFuncStart)(u32 pArg, bool buffering);
|
||||
typedef void(*CellSailRendererAudioFuncStop)(u32 pArg, bool flush);
|
||||
typedef void(*CellSailRendererAudioFuncCancel)(u32 pArg);
|
||||
typedef int(*CellSailRendererAudioFuncCheckout)(u32 pArg, vm::ptr<CellSailAudioFrameInfo> ppInfo);
|
||||
typedef int(*CellSailRendererAudioFuncCheckin)(u32 pArg, vm::ptr<CellSailAudioFrameInfo> pInfo);
|
||||
typedef int(CellSailRendererAudioFuncMakeup)(u32 pArg);
|
||||
typedef int(CellSailRendererAudioFuncCleanup)(u32 pArg);
|
||||
typedef void(CellSailRendererAudioFuncOpen)(u32 pArg, vm::ptr<CellSailAudioFormat> pInfo, u32 frameNum);
|
||||
typedef void(CellSailRendererAudioFuncClose)(u32 pArg);
|
||||
typedef void(CellSailRendererAudioFuncStart)(u32 pArg, bool buffering);
|
||||
typedef void(CellSailRendererAudioFuncStop)(u32 pArg, bool flush);
|
||||
typedef void(CellSailRendererAudioFuncCancel)(u32 pArg);
|
||||
typedef int(CellSailRendererAudioFuncCheckout)(u32 pArg, vm::ptr<CellSailAudioFrameInfo> ppInfo);
|
||||
typedef int(CellSailRendererAudioFuncCheckin)(u32 pArg, vm::ptr<CellSailAudioFrameInfo> pInfo);
|
||||
|
||||
typedef int(*CellSailRendererVideoFuncMakeup)(u32 pArg);
|
||||
typedef int(*CellSailRendererVideoFuncCleanup)(u32 pArg);
|
||||
typedef void(*CellSailRendererVideoFuncOpen)(u32 pArg, vm::ptr<CellSailVideoFormat> pInfo, u32 frameNum, u32 minFrameNum);
|
||||
typedef void(*CellSailRendererVideoFuncClose)(u32 pArg);
|
||||
typedef void(*CellSailRendererVideoFuncStart)(u32 pArg, bool buffering);
|
||||
typedef void(*CellSailRendererVideoFuncStop)(u32 pArg, bool flush, bool keepRendering);
|
||||
typedef void(*CellSailRendererVideoFuncCancel)(u32 pArg);
|
||||
typedef int(*CellSailRendererVideoFuncCheckout)(u32 pArg, vm::ptr<CellSailVideoFrameInfo> ppInfo);
|
||||
typedef int(*CellSailRendererVideoFuncCheckin)(u32 pArg, vm::ptr<CellSailVideoFrameInfo> pInfo);
|
||||
typedef int(CellSailRendererVideoFuncMakeup)(u32 pArg);
|
||||
typedef int(CellSailRendererVideoFuncCleanup)(u32 pArg);
|
||||
typedef void(CellSailRendererVideoFuncOpen)(u32 pArg, vm::ptr<CellSailVideoFormat> pInfo, u32 frameNum, u32 minFrameNum);
|
||||
typedef void(CellSailRendererVideoFuncClose)(u32 pArg);
|
||||
typedef void(CellSailRendererVideoFuncStart)(u32 pArg, bool buffering);
|
||||
typedef void(CellSailRendererVideoFuncStop)(u32 pArg, bool flush, bool keepRendering);
|
||||
typedef void(CellSailRendererVideoFuncCancel)(u32 pArg);
|
||||
typedef int(CellSailRendererVideoFuncCheckout)(u32 pArg, vm::ptr<CellSailVideoFrameInfo> ppInfo);
|
||||
typedef int(CellSailRendererVideoFuncCheckin)(u32 pArg, vm::ptr<CellSailVideoFrameInfo> pInfo);
|
||||
|
||||
typedef void(*CellSailPlayerFuncNotified)(u32 pArg, vm::ptr<CellSailEvent> event, u64 arg0, u64 arg1);
|
||||
typedef void(CellSailPlayerFuncNotified)(u32 pArg, vm::ptr<CellSailEvent> event, u64 arg0, u64 arg1);
|
||||
|
||||
struct CellSailMemAllocatorFuncs
|
||||
{
|
||||
|
|
|
@ -256,11 +256,11 @@ struct CellSaveDataDoneGet
|
|||
|
||||
|
||||
// Callback Functions
|
||||
typedef void(*CellSaveDataFixedCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataListGet> get, vm::ptr<CellSaveDataFixedSet> set);
|
||||
typedef void(*CellSaveDataListCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataListGet> get, vm::ptr<CellSaveDataListSet> set);
|
||||
typedef void(*CellSaveDataStatCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataStatGet> get, vm::ptr<CellSaveDataStatSet> set);
|
||||
typedef void(*CellSaveDataFileCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataFileGet> get, vm::ptr<CellSaveDataFileSet> set);
|
||||
typedef void(*CellSaveDataDoneCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataDoneGet> get);
|
||||
typedef void(CellSaveDataFixedCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataListGet> get, vm::ptr<CellSaveDataFixedSet> set);
|
||||
typedef void(CellSaveDataListCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataListGet> get, vm::ptr<CellSaveDataListSet> set);
|
||||
typedef void(CellSaveDataStatCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataStatGet> get, vm::ptr<CellSaveDataStatSet> set);
|
||||
typedef void(CellSaveDataFileCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataFileGet> get, vm::ptr<CellSaveDataFileSet> set);
|
||||
typedef void(CellSaveDataDoneCallback)(vm::ptr<CellSaveDataCBResult> cbResult, vm::ptr<CellSaveDataDoneGet> get);
|
||||
|
||||
|
||||
// Auxiliary Structs
|
||||
|
|
|
@ -206,7 +206,7 @@ struct CellSpursWorkloadFlag
|
|||
atomic_t<u32> flag;
|
||||
};
|
||||
|
||||
typedef void(*CellSpursShutdownCompletionEventHook)(vm::ptr<CellSpurs>, u32 wid, vm::ptr<void> arg);
|
||||
typedef void(CellSpursShutdownCompletionEventHook)(vm::ptr<CellSpurs>, u32 wid, vm::ptr<void> arg);
|
||||
|
||||
// Core CellSpurs structures
|
||||
struct CellSpurs
|
||||
|
|
|
@ -1264,7 +1264,7 @@ s32 syncLFQueueCompletePushPointer(vm::ptr<CellSyncLFQueue> queue, s32 pointer,
|
|||
}
|
||||
}
|
||||
|
||||
s32 _cellSyncLFQueueCompletePushPointer(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(*)(u32 addr, u32 arg)> fpSendSignal)
|
||||
s32 _cellSyncLFQueueCompletePushPointer(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(u32 addr, u32 arg)> fpSendSignal)
|
||||
{
|
||||
cellSync->Todo("_cellSyncLFQueueCompletePushPointer(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x)",
|
||||
queue.addr(), pointer, fpSendSignal.addr());
|
||||
|
@ -1280,7 +1280,7 @@ s32 syncLFQueueCompletePushPointer2(vm::ptr<CellSyncLFQueue> queue, s32 pointer,
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 _cellSyncLFQueueCompletePushPointer2(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(*)(u32 addr, u32 arg)> fpSendSignal)
|
||||
s32 _cellSyncLFQueueCompletePushPointer2(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(u32 addr, u32 arg)> fpSendSignal)
|
||||
{
|
||||
// arguments copied from _cellSyncLFQueueCompletePushPointer
|
||||
cellSync->Todo("_cellSyncLFQueueCompletePushPointer2(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x)",
|
||||
|
@ -1642,7 +1642,7 @@ s32 syncLFQueueCompletePopPointer(vm::ptr<CellSyncLFQueue> queue, s32 pointer, c
|
|||
}
|
||||
}
|
||||
|
||||
s32 _cellSyncLFQueueCompletePopPointer(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(*)(u32 addr, u32 arg)> fpSendSignal, u32 noQueueFull)
|
||||
s32 _cellSyncLFQueueCompletePopPointer(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(u32 addr, u32 arg)> fpSendSignal, u32 noQueueFull)
|
||||
{
|
||||
// arguments copied from _cellSyncLFQueueCompletePushPointer + unknown argument (noQueueFull taken from LFQueue2CompletePopPointer)
|
||||
cellSync->Todo("_cellSyncLFQueueCompletePopPointer(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x, noQueueFull=%d)",
|
||||
|
@ -1659,7 +1659,7 @@ s32 syncLFQueueCompletePopPointer2(vm::ptr<CellSyncLFQueue> queue, s32 pointer,
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 _cellSyncLFQueueCompletePopPointer2(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(*)(u32 addr, u32 arg)> fpSendSignal, u32 noQueueFull)
|
||||
s32 _cellSyncLFQueueCompletePopPointer2(vm::ptr<CellSyncLFQueue> queue, s32 pointer, vm::ptr<s32(u32 addr, u32 arg)> fpSendSignal, u32 noQueueFull)
|
||||
{
|
||||
// arguments copied from _cellSyncLFQueueCompletePopPointer
|
||||
cellSync->Todo("_cellSyncLFQueueCompletePopPointer2(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x, noQueueFull=%d)",
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include "cellGame.h"
|
||||
#include "cellSysutil.h"
|
||||
|
||||
typedef void (*CellHddGameStatCallback)(vm::ptr<CellHddGameCBResult> cbResult, vm::ptr<CellHddGameStatGet> get, vm::ptr<CellHddGameStatSet> set);
|
||||
typedef void (CellHddGameStatCallback)(vm::ptr<CellHddGameCBResult> cbResult, vm::ptr<CellHddGameStatGet> get, vm::ptr<CellHddGameStatSet> set);
|
||||
|
||||
Module *cellSysutil = nullptr;
|
||||
|
||||
|
@ -835,10 +835,10 @@ int cellWebBrowserEstimate2(const vm::ptr<const CellWebBrowserConfig2> config, v
|
|||
}
|
||||
|
||||
extern int cellGameDataCheckCreate2(PPUThread& CPU, u32 version, vm::ptr<const char> dirName, u32 errDialog,
|
||||
vm::ptr<void(*)(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container);
|
||||
vm::ptr<void(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container);
|
||||
|
||||
extern int cellGameDataCheckCreate(PPUThread& CPU, u32 version, vm::ptr<const char> dirName, u32 errDialog,
|
||||
vm::ptr<void(*)(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container);
|
||||
vm::ptr<void(vm::ptr<CellGameDataCBResult> cbResult, vm::ptr<CellGameDataStatGet> get, vm::ptr<CellGameDataStatSet> set)> funcStat, u32 container);
|
||||
|
||||
extern void cellSysutil_SaveData_init();
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ enum
|
|||
CELL_SYSUTIL_SYSCHAT_VOICE_STREAMING_PAUSED = 0x0164,
|
||||
};
|
||||
|
||||
typedef void(*CellSysutilCallback)(u64 status, u64 param, vm::ptr<void> userdata);
|
||||
typedef void(CellSysutilCallback)(u64 status, u64 param, vm::ptr<void> userdata);
|
||||
|
||||
void sysutilSendSystemCommand(u64 status, u64 param);
|
||||
|
||||
|
@ -238,16 +238,16 @@ struct CellHddGameCBResult
|
|||
};
|
||||
|
||||
typedef s32 CellWebBrowserId;
|
||||
typedef void* CellWebBrowserClientSession;
|
||||
typedef void(*CellWebBrowserCallback)(s32 cb_type, vm::ptr<CellWebBrowserClientSession>, vm::ptr<void> usrdata);
|
||||
typedef void(*CellWebComponentCallback)(CellWebBrowserId, s32 cb_type, vm::ptr<CellWebBrowserClientSession>, vm::ptr<void> usrdata);
|
||||
typedef void(*CellWebBrowserSystemCallback)(s32 cb_type, vm::ptr<void> usrdata);
|
||||
typedef vm::ptr<void> CellWebBrowserClientSession;
|
||||
typedef void(CellWebBrowserCallback)(s32 cb_type, CellWebBrowserClientSession, vm::ptr<void> usrdata);
|
||||
typedef void(CellWebComponentCallback)(CellWebBrowserId, s32 cb_type, CellWebBrowserClientSession, vm::ptr<void> usrdata);
|
||||
typedef void(CellWebBrowserSystemCallback)(s32 cb_type, vm::ptr<void> usrdata);
|
||||
|
||||
typedef void(*CellWebBrowserMIMETypeCallback)(vm::ptr<const char> mimetype, vm::ptr<const char> url, vm::ptr<void> usrdata);
|
||||
typedef void(*CellWebBrowserErrorCallback)(s32 err_type, vm::ptr<void> usrdata);
|
||||
typedef void(*CellWebBrowserStatusCallback)(s32 err_type, vm::ptr<void> usrdata);
|
||||
typedef void(*CellWebBrowserNotify)(vm::ptr<const char> message, vm::ptr<void> usrdata);
|
||||
typedef void(*CellWebBrowserUsrdata)(vm::ptr<void> usrdata);
|
||||
typedef void(CellWebBrowserMIMETypeCallback)(vm::ptr<const char> mimetype, vm::ptr<const char> url, vm::ptr<void> usrdata);
|
||||
typedef void(CellWebBrowserErrorCallback)(s32 err_type, vm::ptr<void> usrdata);
|
||||
typedef void(CellWebBrowserStatusCallback)(s32 err_type, vm::ptr<void> usrdata);
|
||||
typedef void(CellWebBrowserNotify)(vm::ptr<const char> message, vm::ptr<void> usrdata);
|
||||
typedef void(CellWebBrowserUsrdata)(vm::ptr<void> usrdata);
|
||||
|
||||
struct CellWebBrowserMimeSet
|
||||
{
|
||||
|
|
|
@ -163,7 +163,7 @@ struct CellVdecPicFormat
|
|||
u8 alpha;
|
||||
};
|
||||
|
||||
typedef u32(*CellVdecCbMsg)(u32 handle, CellVdecMsgType msgType, s32 msgData, u32 cbArg);
|
||||
typedef u32(CellVdecCbMsg)(u32 handle, CellVdecMsgType msgType, s32 msgData, u32 cbArg);
|
||||
|
||||
// Callback Function Information
|
||||
struct CellVdecCb
|
||||
|
|
|
@ -110,7 +110,7 @@ enum
|
|||
CELL_SSPLAYER_STATE_ON = 0x20,
|
||||
};
|
||||
|
||||
typedef s32(*CellSurMixerNotifyCallbackFunction)(vm::ptr<void> arg, u32 counter, u32 samples);
|
||||
typedef s32(CellSurMixerNotifyCallbackFunction)(vm::ptr<void> arg, u32 counter, u32 samples);
|
||||
|
||||
struct CellSSPlayerConfig
|
||||
{
|
||||
|
|
|
@ -134,4 +134,4 @@ enum
|
|||
SCE_NP_TROPHY_STATUS_CHANGES_DETECTED = 9,
|
||||
};
|
||||
|
||||
typedef s32 (*SceNpTrophyStatusCallback)(u32 context, u32 status, s32 completed, s32 total, u32 arg_addr);
|
||||
typedef s32 (SceNpTrophyStatusCallback)(u32 context, u32 status, s32 completed, s32 total, u32 arg_addr);
|
||||
|
|
|
@ -14,7 +14,7 @@ struct HeapInfo
|
|||
}
|
||||
};
|
||||
|
||||
typedef s32(*spu_printf_cb_t)(u32 arg);
|
||||
typedef s32(spu_printf_cb_t)(u32 arg);
|
||||
|
||||
// Aux
|
||||
extern vm::ptr<spu_printf_cb_t> spu_printf_agcb;
|
||||
|
|
|
@ -738,7 +738,7 @@ s32 cellFsStReadWait(u32 fd, u64 size)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellFsStReadWaitCallback(u32 fd, u64 size, vm::ptr<void (*)(int xfd, u64 xsize)> func)
|
||||
s32 cellFsStReadWaitCallback(u32 fd, u64 size, vm::ptr<void(int xfd, u64 xsize)> func)
|
||||
{
|
||||
sys_fs->Todo("cellFsStReadWaitCallback(fd=0x%x, size=0x%llx, func=0x%x)", fd, size, func);
|
||||
|
||||
|
@ -886,7 +886,7 @@ std::atomic<s32> g_FsAioReadID(0);
|
|||
std::atomic<s32> g_FsAioReadCur(0);
|
||||
bool aio_init = false;
|
||||
|
||||
void fsAioRead(u32 fd, vm::ptr<CellFsAio> aio, int xid, vm::ptr<void(*)(vm::ptr<CellFsAio> xaio, int error, int xid, u64 size)> func)
|
||||
void fsAioRead(u32 fd, vm::ptr<CellFsAio> aio, int xid, vm::ptr<void(vm::ptr<CellFsAio> xaio, int error, int xid, u64 size)> func)
|
||||
{
|
||||
while (g_FsAioReadCur != xid)
|
||||
{
|
||||
|
@ -941,7 +941,7 @@ void fsAioRead(u32 fd, vm::ptr<CellFsAio> aio, int xid, vm::ptr<void(*)(vm::ptr<
|
|||
g_FsAioReadCur++;
|
||||
}
|
||||
|
||||
s32 cellFsAioRead(vm::ptr<CellFsAio> aio, vm::ptr<s32> id, vm::ptr<void(*)(vm::ptr<CellFsAio> xaio, s32 error, s32 xid, u64 size)> func)
|
||||
s32 cellFsAioRead(vm::ptr<CellFsAio> aio, vm::ptr<s32> id, vm::ptr<void(vm::ptr<CellFsAio> xaio, s32 error, s32 xid, u64 size)> func)
|
||||
{
|
||||
sys_fs->Warning("cellFsAioRead(aio=0x%x, id=0x%x, func=0x%x)", aio, id, func);
|
||||
|
||||
|
@ -966,7 +966,7 @@ s32 cellFsAioRead(vm::ptr<CellFsAio> aio, vm::ptr<s32> id, vm::ptr<void(*)(vm::p
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellFsAioWrite(vm::ptr<CellFsAio> aio, vm::ptr<s32> id, vm::ptr<void(*)(vm::ptr<CellFsAio> xaio, s32 error, s32 xid, u64 size)> func)
|
||||
s32 cellFsAioWrite(vm::ptr<CellFsAio> aio, vm::ptr<s32> id, vm::ptr<void(vm::ptr<CellFsAio> xaio, s32 error, s32 xid, u64 size)> func)
|
||||
{
|
||||
sys_fs->Todo("cellFsAioWrite(aio=0x%x, id=0x%x, func=0x%x)", aio, id, func);
|
||||
|
||||
|
|
|
@ -210,10 +210,12 @@ s32 sys_ppu_thread_create(vm::ptr<u64> thread_id, u32 entry, u64 arg, s32 prio,
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void sys_ppu_thread_once(PPUThread& CPU, vm::ptr<atomic_t<u32>> once_ctrl, vm::ptr<void(*)()> init)
|
||||
void sys_ppu_thread_once(PPUThread& CPU, vm::ptr<atomic_t<u32>> once_ctrl, vm::ptr<void()> init)
|
||||
{
|
||||
sys_ppu_thread.Warning("sys_ppu_thread_once(once_ctrl_addr=0x%x, init_addr=0x%x)", once_ctrl.addr(), init.addr());
|
||||
|
||||
LV2_LOCK(0);
|
||||
|
||||
if (once_ctrl->compare_and_swap_test(be_t<u32>::make(SYS_PPU_THREAD_ONCE_INIT), be_t<u32>::make(SYS_PPU_THREAD_DONE_INIT)))
|
||||
{
|
||||
init(CPU);
|
||||
|
|
|
@ -30,6 +30,6 @@ s32 sys_ppu_thread_get_stack_information(PPUThread& CPU, u32 info_addr);
|
|||
s32 sys_ppu_thread_stop(u64 thread_id);
|
||||
s32 sys_ppu_thread_restart(u64 thread_id);
|
||||
s32 sys_ppu_thread_create(vm::ptr<u64> thread_id, u32 entry, u64 arg, s32 prio, u32 stacksize, u64 flags, vm::ptr<const char> threadname);
|
||||
void sys_ppu_thread_once(PPUThread& CPU, vm::ptr<atomic_t<u32>> once_ctrl, vm::ptr<void(*)()> init);
|
||||
void sys_ppu_thread_once(PPUThread& CPU, vm::ptr<atomic_t<u32>> once_ctrl, vm::ptr<void()> init);
|
||||
s32 sys_ppu_thread_get_id(PPUThread& CPU, vm::ptr<u64> thread_id);
|
||||
s32 sys_ppu_thread_rename(u64 thread_id, vm::ptr<const char> name);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include "Emu/GameInfo.h"
|
||||
#include "Emu/ARMv7/PSVFuncList.h"
|
||||
#include "Emu/ARMv7/PSVObjectList.h"
|
||||
#include "Emu/SysCalls/Static.h"
|
||||
#include "Emu/SysCalls/ModuleManager.h"
|
||||
#include "Emu/Cell/PPUThread.h"
|
||||
|
@ -363,6 +364,7 @@ void Emulator::Stop()
|
|||
LOG_NOTICE(HLE, "All threads stopped...");
|
||||
|
||||
finalize_psv_modules();
|
||||
clear_all_psv_objects();
|
||||
m_rsx_callback = 0;
|
||||
|
||||
// TODO: check finalization order
|
||||
|
|
|
@ -215,7 +215,7 @@ namespace loader
|
|||
const u32 addr = *++code;
|
||||
vm::psv::write16(addr + 0, 0xf240 | (data & 0x800) >> 1 | (data & 0xf000) >> 12); // MOVW
|
||||
vm::psv::write16(addr + 2, 0x0c00 | (data & 0x700) << 4 | (data & 0xff));
|
||||
LOG_NOTICE(LOADER, "sceRefs: movw written at 0x%x (data=0x%x)", addr, data);
|
||||
//LOG_NOTICE(LOADER, "sceRefs: movw written at 0x%x (data=0x%x)", addr, data);
|
||||
break;
|
||||
}
|
||||
case 0x00000030:
|
||||
|
@ -224,13 +224,13 @@ namespace loader
|
|||
const u32 addr = *++code;
|
||||
vm::psv::write16(addr + 0, 0xf2c0 | (data & 0x8000000) >> 17 | (data & 0xf0000000) >> 28); // MOVT
|
||||
vm::psv::write16(addr + 2, 0x0c00 | (data & 0x7000000) >> 12 | (data & 0xff0000) >> 16);
|
||||
LOG_NOTICE(LOADER, "sceRefs: movt written at 0x%x (data=0x%x)", addr, data);
|
||||
//LOG_NOTICE(LOADER, "sceRefs: movt written at 0x%x (data=0x%x)", addr, data);
|
||||
break;
|
||||
}
|
||||
case 0x00000000:
|
||||
{
|
||||
// probably, no operation
|
||||
LOG_NOTICE(LOADER, "sceRefs: zero code");
|
||||
//LOG_NOTICE(LOADER, "sceRefs: zero code");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -325,7 +325,7 @@ namespace loader
|
|||
|
||||
for (auto &e : m.second.exports)
|
||||
{
|
||||
module->RegisterLLEFunc(e.first, vm::ptr<void(*)()>::make(e.second));
|
||||
module->RegisterLLEFunc(e.first, vm::ptr<void()>::make(e.second));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,11 +56,20 @@
|
|||
<ClCompile Include="Emu\ARMv7\ARMv7DisAsm.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\ARMv7Interpreter.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\ARMv7Thread.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\psv_event_flag.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\psv_sema.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceCtrl.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceDeci4p.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceDisplay.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceGxm.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibKernel.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibc.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibm.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibstdcxx.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\scePerf.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceSysmodule.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\PSVFuncList.cpp" />
|
||||
<ClCompile Include="Emu\ARMv7\PSVObjectList.cpp" />
|
||||
<ClCompile Include="Emu\Audio\AL\OpenALThread.cpp" />
|
||||
<ClCompile Include="Emu\Audio\AudioDumper.cpp" />
|
||||
<ClCompile Include="Emu\Audio\AudioManager.cpp" />
|
||||
|
@ -275,8 +284,12 @@
|
|||
<ClInclude Include="Emu\ARMv7\ARMv7Interpreter.h" />
|
||||
<ClInclude Include="Emu\ARMv7\ARMv7Opcodes.h" />
|
||||
<ClInclude Include="Emu\ARMv7\ARMv7Thread.h" />
|
||||
<ClInclude Include="Emu\ARMv7\Modules\psv_event_flag.h" />
|
||||
<ClInclude Include="Emu\ARMv7\Modules\psv_sema.h" />
|
||||
<ClInclude Include="Emu\ARMv7\Modules\sceGxm.h" />
|
||||
<ClInclude Include="Emu\ARMv7\Modules\sceLibKernel.h" />
|
||||
<ClInclude Include="Emu\ARMv7\PSVFuncList.h" />
|
||||
<ClInclude Include="Emu\ARMv7\PSVObjectList.h" />
|
||||
<ClInclude Include="Emu\Audio\AL\OpenALThread.h" />
|
||||
<ClInclude Include="Emu\Audio\AudioDumper.h" />
|
||||
<ClInclude Include="Emu\Audio\AudioManager.h" />
|
||||
|
|
|
@ -87,6 +87,9 @@
|
|||
<Filter Include="Emu\Audio\XAudio2">
|
||||
<UniqueIdentifier>{1d6abf72-0f18-43ec-9351-1fed1a3d1a1e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Emu\CPU\ARMv7\Objects">
|
||||
<UniqueIdentifier>{368770cf-c8d9-4f4a-9ac3-5bdf48101ffe}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Crypto\aes.cpp">
|
||||
|
@ -578,6 +581,9 @@
|
|||
<ClCompile Include="Emu\RSX\GSRender.cpp">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\RSX\RSXDMA.cpp">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\RSX\RSXTexture.cpp">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
</ClCompile>
|
||||
|
@ -664,9 +670,33 @@
|
|||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\ARMv7Decoder.cpp">
|
||||
<Filter>Emu\CPU\ARMv7</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\PSVObjectList.cpp">
|
||||
<Filter>Emu\CPU\ARMv7</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\RSX\RSXDMA.cpp">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\psv_sema.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Objects</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\psv_event_flag.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Objects</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceSysmodule.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\scePerf.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceCtrl.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceDeci4p.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceDisplay.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Emu\ARMv7\Modules\sceGxm.cpp">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -1168,6 +1198,9 @@
|
|||
<ClInclude Include="Emu\RSX\GSRender.h">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\RSX\RSXDMA.h">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\RSX\RSXFragmentProgram.h">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
</ClInclude>
|
||||
|
@ -1296,9 +1329,18 @@
|
|||
</ClInclude>
|
||||
<ClInclude Include="Emu\ARMv7\Modules\sceLibKernel.h">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\ARMv7\PSVObjectList.h">
|
||||
<Filter>Emu\CPU\ARMv7</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\RSX\RSXDMA.h">
|
||||
<Filter>Emu\GPU\RSX</Filter>
|
||||
<ClInclude Include="Emu\ARMv7\Modules\psv_event_flag.h">
|
||||
<Filter>Emu\CPU\ARMv7\Objects</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\ARMv7\Modules\psv_sema.h">
|
||||
<Filter>Emu\CPU\ARMv7\Objects</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\ARMv7\Modules\sceGxm.h">
|
||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
Add table
Reference in a new issue