Skip to content

Commit 356cf0e

Browse files
committed
Multiple smaller HLE improvements
1 parent e2d0871 commit 356cf0e

File tree

6 files changed

+28
-11
lines changed

6 files changed

+28
-11
lines changed

src/Cafe/OS/RPL/rpl_structs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ typedef struct
116116
/* +0x34 */ uint32be ukn34;
117117
/* +0x38 */ uint32be ukn38;
118118
/* +0x3C */ uint32be ukn3C;
119-
/* +0x40 */ uint32be toolkitVersion;
119+
/* +0x40 */ uint32be minimumToolkitVersion;
120120
/* +0x44 */ uint32be ukn44;
121121
/* +0x48 */ uint32be ukn48;
122122
/* +0x4C */ uint32be ukn4C;

src/Cafe/OS/libs/coreinit/coreinit_GHS.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,22 @@ namespace coreinit
156156
return &currentThread->crt.eh_mem_manage;
157157
}
158158

159-
void* __gh_errno_ptr()
159+
sint32be* __gh_errno_ptr()
160160
{
161161
OSThread_t* currentThread = coreinit::OSGetCurrentThread();
162162
return &currentThread->context.ghs_errno;
163163
}
164164

165+
void __gh_set_errno(sint32 errNo)
166+
{
167+
*__gh_errno_ptr() = errNo;
168+
}
169+
170+
sint32 __gh_get_errno()
171+
{
172+
return *__gh_errno_ptr();
173+
}
174+
165175
void* __get_eh_store_globals()
166176
{
167177
OSThread_t* currentThread = coreinit::OSGetCurrentThread();
@@ -272,6 +282,8 @@ namespace coreinit
272282
cafeExportRegister("coreinit", __get_eh_globals, LogType::Placeholder);
273283
cafeExportRegister("coreinit", __get_eh_mem_manage, LogType::Placeholder);
274284
cafeExportRegister("coreinit", __gh_errno_ptr, LogType::Placeholder);
285+
cafeExportRegister("coreinit", __gh_set_errno, LogType::Placeholder);
286+
cafeExportRegister("coreinit", __gh_get_errno, LogType::Placeholder);
275287
cafeExportRegister("coreinit", __get_eh_store_globals, LogType::Placeholder);
276288
cafeExportRegister("coreinit", __get_eh_store_globals_tdeh, LogType::Placeholder);
277289

src/Cafe/OS/libs/coreinit/coreinit_GHS.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@ namespace coreinit
44
{
55
void PrepareGHSRuntime();
66

7+
sint32be* __gh_errno_ptr();
8+
void __gh_set_errno(sint32 errNo);
9+
sint32 __gh_get_errno();
10+
711
void InitializeGHS();
812
};

src/Cafe/OS/libs/coreinit/coreinit_Thread.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct OSContext_t
3838
/* +0x1E0 */ uint64be fp_ps1[32];
3939
/* +0x2E0 */ uint64be coretime[3];
4040
/* +0x2F8 */ uint64be starttime;
41-
/* +0x300 */ uint32be ghs_errno; // returned by __gh_errno_ptr() (used by socketlasterr)
41+
/* +0x300 */ sint32be ghs_errno; // returned by __gh_errno_ptr() (used by socketlasterr)
4242
/* +0x304 */ uint32be affinity;
4343
/* +0x308 */ uint32be upmc1;
4444
/* +0x30C */ uint32be upmc2;

src/Cafe/OS/libs/gx2/GX2_Resource.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ namespace GX2
8787
return true;
8888
}
8989

90+
void GX2RSetBufferName(GX2RBuffer* buffer, const char* name)
91+
{
92+
// no-op in production builds
93+
}
94+
9095
void* GX2RLockBufferEx(GX2RBuffer* buffer, uint32 resFlags)
9196
{
9297
return buffer->GetPtr();
@@ -226,6 +231,7 @@ namespace GX2
226231
cafeExportRegister("gx2", GX2RCreateBufferUserMemory, LogType::GX2);
227232
cafeExportRegister("gx2", GX2RDestroyBufferEx, LogType::GX2);
228233
cafeExportRegister("gx2", GX2RBufferExists, LogType::GX2);
234+
cafeExportRegister("gx2", GX2RSetBufferName, LogType::GX2);
229235
cafeExportRegister("gx2", GX2RLockBufferEx, LogType::GX2);
230236
cafeExportRegister("gx2", GX2RUnlockBufferEx, LogType::GX2);
231237
cafeExportRegister("gx2", GX2RInvalidateBuffer, LogType::GX2);

src/Cafe/OS/libs/nsysnet/nsysnet.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "Cafe/OS/libs/coreinit/coreinit_Thread.h"
44
#include "Cafe/IOSU/legacy/iosu_crypto.h"
55
#include "Cafe/OS/libs/coreinit/coreinit_Time.h"
6+
#include "Cafe/OS/libs/coreinit/coreinit_GHS.h"
67

78
#include "Common/socket.h"
89

@@ -117,20 +118,14 @@ void nsysnetExport_socket_lib_finish(PPCInterpreter_t* hCPU)
117118
osLib_returnFromFunction(hCPU, 0); // 0 -> Success
118119
}
119120

120-
static uint32be* __gh_errno_ptr()
121-
{
122-
OSThread_t* osThread = coreinit::OSGetCurrentThread();
123-
return &osThread->context.ghs_errno;
124-
}
125-
126121
void _setSockError(sint32 errCode)
127122
{
128-
*(uint32be*)__gh_errno_ptr() = (uint32)errCode;
123+
coreinit::__gh_set_errno(errCode);
129124
}
130125

131126
sint32 _getSockError()
132127
{
133-
return (sint32)*(uint32be*)__gh_errno_ptr();
128+
return coreinit::__gh_get_errno();
134129
}
135130

136131
// error translation modes for _translateError

0 commit comments

Comments
 (0)