static Handle gspEvent;
static vu8* gspEventData;
-static void gspEventThreadMain(u32 arg);
+static void gspEventThreadMain(void *arg);
Result gspInit()
svcClearEvent(gspEvents[id]);
}
-void gspEventThreadMain(u32 arg)
+void gspEventThreadMain(void *arg)
{
while (gspRunEvents)
{
Result GSPGPU_WriteHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size)
{
if(!handle)handle=&gspGpuHandle;
-
+
if(size>0x80 || !data)return -1;
u32* cmdbuf=getThreadCommandBuffer();
Result GSPGPU_WriteHWRegsWithMask(Handle* handle, u32 regAddr, u32* data, u8 datasize, u32* maskdata, u8 masksize)
{
if(!handle)handle=&gspGpuHandle;
-
+
if(datasize>0x80 || !data)return -1;
u32* cmdbuf=getThreadCommandBuffer();
Result GSPGPU_ReadHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size)
{
if(!handle)handle=&gspGpuHandle;
-
+
if(size>0x80 || !data)return -1;
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0] = 0x00050200;
cmdbuf[1] = screenid;
memcpy(&cmdbuf[2], framebufinfo, sizeof(GSP_FramebufferInfo));
-
+
if((ret=svcSendSyncRequest(*handle)))return ret;
return cmdbuf[1];
Result GSPGPU_FlushDataCache(Handle* handle, u8* adr, u32 size)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x00080082; //request header code
cmdbuf[1]=(u32)adr;
Result GSPGPU_SetLcdForceBlack(Handle* handle, u8 flags)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x000B0040; //request header code
cmdbuf[1]=flags;
Result GSPGPU_TriggerCmdReqQueue(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x000C0000; //request header code
Result GSPGPU_RegisterInterruptRelayQueue(Handle* handle, Handle eventHandle, u32 flags, Handle* outMemHandle, u8* threadID)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x00130042; //request header code
cmdbuf[1]=flags;
if(threadID)*threadID=cmdbuf[2];
if(outMemHandle)*outMemHandle=cmdbuf[4];
-
+
return cmdbuf[1];
}
Result GSPGPU_UnregisterInterruptRelayQueue(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x00140000; //request header code
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
-
+
return cmdbuf[1];
}
Result GSPGPU_AcquireRight(Handle* handle, u8 flags)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x160042; //request header code
cmdbuf[1]=flags;
Result GSPGPU_ReleaseRight(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x170000; //request header code
Result GSPGPU_ImportDisplayCaptureInfo(Handle* handle, GSP_CaptureInfo *captureinfo)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x00180000; //request header code
Result GSPGPU_SaveVramSysArea(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x00190000; //request header code
Result GSPGPU_RestoreVramSysArea(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
-
+
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x001A0000; //request header code
Result GSPGPU_SubmitGxCommand(u32* sharedGspCmdBuf, u32 gxCommand[0x8], Handle* handle)
{
if(!sharedGspCmdBuf || !gxCommand)return -1;
-
+
u32 cmdBufHeader;
__asm__ __volatile__ ("ldrex %[result], [%[adr]]" : [result] "=r" (cmdBufHeader) : [adr] "r" (sharedGspCmdBuf));