mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
c455365bbe
7 changed files with 56 additions and 18 deletions
|
@ -136,7 +136,7 @@ void sceKernelExitGameWithStatus()
|
|||
void sceKernelRegisterExitCallback()
|
||||
{
|
||||
u32 cbId = PARAM(0);
|
||||
ERROR_LOG(HLE,"UNIMPL sceKernelRegisterExitCallback(%i)", cbId);
|
||||
DEBUG_LOG(HLE,"NOP sceKernelRegisterExitCallback(%i)", cbId);
|
||||
RETURN(0);
|
||||
}
|
||||
|
||||
|
@ -290,8 +290,6 @@ void sceKernelIcacheClearAll()
|
|||
RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct SystemStatus {
|
||||
SceSize size;
|
||||
SceUInt status;
|
||||
|
@ -302,7 +300,6 @@ struct SystemStatus {
|
|||
SceUInt perfcounter3;
|
||||
};
|
||||
|
||||
|
||||
u32 sceKernelReferSystemStatus(u32 statusPtr)
|
||||
{
|
||||
DEBUG_LOG(HLE, "sceKernelReferSystemStatus(%08x)", statusPtr);
|
||||
|
@ -315,6 +312,11 @@ u32 sceKernelReferSystemStatus(u32 statusPtr)
|
|||
return 0;
|
||||
}
|
||||
|
||||
u32 sceKernelReferGlobalProfiler(u32 statusPtr) {
|
||||
DEBUG_LOG(HLE, "sceKernelReferGlobalProfiler(%08x)", statusPtr);
|
||||
// Ignore for now
|
||||
return 0;
|
||||
}
|
||||
|
||||
const HLEFunction ThreadManForUser[] =
|
||||
{
|
||||
|
@ -348,7 +350,7 @@ const HLEFunction ThreadManForUser[] =
|
|||
|
||||
// NOTE: LockLwMutex and UnlockLwMutex are in Kernel_Library, see sceKernelInterrupt.cpp.
|
||||
|
||||
{0xFCCFAD26,0,"sceKernelCancelWakeupThread"},
|
||||
{0xFCCFAD26,sceKernelCancelWakeupThread,"sceKernelCancelWakeupThread"},
|
||||
{0xea748e31,sceKernelChangeCurrentThreadAttr,"sceKernelChangeCurrentThreadAttr"},
|
||||
{0x71bc9871,sceKernelChangeThreadPriority,"sceKernelChangeThreadPriority"},
|
||||
{0x446D8DE6,sceKernelCreateThread,"sceKernelCreateThread"},
|
||||
|
@ -401,7 +403,7 @@ const HLEFunction ThreadManForUser[] =
|
|||
{0xdb738f35,sceKernelGetSystemTime,"sceKernelGetSystemTime"},
|
||||
{0x369ed59d,sceKernelGetSystemTimeLow,"sceKernelGetSystemTimeLow"},
|
||||
|
||||
{0x8218B4DD,0,"sceKernelReferGlobalProfiler"},
|
||||
{0x8218B4DD,&WrapU_U<sceKernelReferGlobalProfiler>,"sceKernelReferGlobalProfiler"},
|
||||
{0x627E6F3A,&WrapU_U<sceKernelReferSystemStatus>,"sceKernelReferSystemStatus"},
|
||||
{0x64D4540E,0,"sceKernelReferThreadProfiler"},
|
||||
|
||||
|
|
|
@ -1152,6 +1152,26 @@ void sceKernelWakeupThread()
|
|||
}
|
||||
}
|
||||
else {
|
||||
ERROR_LOG(HLE,"sceKernelWakeupThread(%i) - bad thread id");
|
||||
RETURN(error);
|
||||
}
|
||||
}
|
||||
|
||||
void sceKernelCancelWakeupThread()
|
||||
{
|
||||
SceUID uid = PARAM(0);
|
||||
u32 error;
|
||||
if (uid == 0) uid == __KernelGetCurThread();
|
||||
Thread *t = kernelObjects.Get<Thread>(uid, error);
|
||||
if (t)
|
||||
{
|
||||
int wCount = t->nt.wakeupCount;
|
||||
t->nt.wakeupCount = 0;
|
||||
DEBUG_LOG(HLE,"sceKernelCancelWakeupThread(%i) - wakeupCount reset from %i", uid, wCount);
|
||||
RETURN(wCount);
|
||||
}
|
||||
else {
|
||||
ERROR_LOG(HLE,"sceKernelCancelWakeupThread(%i) - bad thread id");
|
||||
RETURN(error);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ void sceKernelCheckThreadStack();
|
|||
void sceKernelSuspendThread();
|
||||
void sceKernelResumeThread();
|
||||
void sceKernelWakeupThread();
|
||||
void sceKernelCancelWakeupThread();
|
||||
void sceKernelTerminateDeleteThread();
|
||||
void sceKernelWaitThreadEndCB();
|
||||
void sceKernelGetThreadExitStatus();
|
||||
|
|
|
@ -197,8 +197,21 @@ void scePowerSetClockFrequency(u32 cpufreq, u32 busfreq, u32 gpufreq)
|
|||
}
|
||||
|
||||
void scePowerGetCpuClockFrequencyInt() {
|
||||
INFO_LOG(HLE,"scePowerGetCpuClockFrequencyInt()");
|
||||
RETURN(CoreTiming::GetClockFrequencyMHz());
|
||||
int freq = CoreTiming::GetClockFrequencyMHz();
|
||||
INFO_LOG(HLE,"%i=scePowerGetCpuClockFrequencyInt()", freq);
|
||||
RETURN(freq);
|
||||
}
|
||||
|
||||
void scePowerGetPllClockFrequencyInt() {
|
||||
int freq = CoreTiming::GetClockFrequencyMHz() / 2;
|
||||
INFO_LOG(HLE,"%i=scePowerGetPllClockFrequencyInt()", freq);
|
||||
RETURN(freq);
|
||||
}
|
||||
|
||||
void scePowerGetBusClockFrequencyInt() {
|
||||
int freq = CoreTiming::GetClockFrequencyMHz() / 2;
|
||||
INFO_LOG(HLE,"%i=scePowerGetBusClockFrequencyInt()", freq);
|
||||
RETURN(freq);
|
||||
}
|
||||
|
||||
static const HLEFunction scePower[] =
|
||||
|
@ -244,11 +257,11 @@ static const HLEFunction scePower[] =
|
|||
{0xFEE03A2F,0,"scePowerGetCpuClockFrequency"},
|
||||
{0x478FE6F5,0,"scePowerGetBusClockFrequency"},
|
||||
{0xFDB5BFE9,scePowerGetCpuClockFrequencyInt,"scePowerGetCpuClockFrequencyInt"},
|
||||
{0xBD681969,0,"scePowerGetBusClockFrequencyInt"},
|
||||
{0xBD681969,scePowerGetBusClockFrequencyInt,"scePowerGetBusClockFrequencyInt"},
|
||||
{0xB1A52C83,0,"scePowerGetCpuClockFrequencyFloat"},
|
||||
{0x9BADB3EB,0,"scePowerGetBusClockFrequencyFloat"},
|
||||
{0x737486F2,&WrapV_UUU<scePowerSetClockFrequency>,"scePowerSetClockFrequency"},
|
||||
{0x34f9c463,0,"scePowerGetPllClockFrequencyInt"},
|
||||
{0x34f9c463,scePowerGetPllClockFrequencyInt,"scePowerGetPllClockFrequencyInt"},
|
||||
{0xea382a27,0,"scePowerGetPllClockFrequencyFloat"},
|
||||
{0xebd177d6,0,"scePower_driver_EBD177D6"},
|
||||
{0x469989ad,0,"scePower_469989ad"},
|
||||
|
|
|
@ -648,19 +648,20 @@ namespace MIPSInt
|
|||
|
||||
switch ((op >> 16) & 3) {
|
||||
case 0: // vuc2i
|
||||
// Quad is the only option
|
||||
// Quad is the only option.
|
||||
// This operation is weird. This particular way of working matches hw but does not
|
||||
// seem quite sane.
|
||||
{
|
||||
_dbg_assert_msg_(CPU,0,"Trying to interpret instruction that can't be interpreted");
|
||||
// this op appears to be bugged and most likely useless, and this stuff is wrong. I've disabled this op in the vfpu_convert test
|
||||
u32 value = s[0];
|
||||
u32 value2 = value / 2;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
d[i] = ((value & 0xFF) << 24) | replicate3(value2);
|
||||
d[i] = (u32)((value & 0xFF) * 0x01010101) >> 1;
|
||||
value >>= 8;
|
||||
value2 >>= 8;
|
||||
}
|
||||
oz = V_Quad;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1: // vc2i
|
||||
// Quad is the only option
|
||||
{
|
||||
|
@ -669,6 +670,7 @@ namespace MIPSInt
|
|||
d[1] = (value & 0xFF00) << 16;
|
||||
d[2] = (value & 0xFF0000) << 8;
|
||||
d[3] = (value & 0xFF000000);
|
||||
oz = V_Quad;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 9a13f86079323e848216c95f534ce0abeef8da03
|
||||
Subproject commit adb26d32dff06a25d5f10f80e3c9e1e7ccd763d0
|
4
test.py
4
test.py
|
@ -91,8 +91,8 @@ def init():
|
|||
print "Please run git submodule init; git submodule update;"
|
||||
sys.exit(1)
|
||||
|
||||
if not os.path.exists(TEST_ROOT + "cpu/cpu/cpu.elf"):
|
||||
print "Please install the pspsdk and run build.sh or build.bat in pspautotests/tests"
|
||||
if not os.path.exists(TEST_ROOT + "cpu/cpu/cpu.prx"):
|
||||
print "Please install the pspsdk and run make in common/ and in all the tests"
|
||||
sys.exit(1)
|
||||
|
||||
for p in PPSSPP_EXECUTABLES:
|
||||
|
|
Loading…
Add table
Reference in a new issue