2016-03-09 10:27:19 -05:00
|
|
|
#pragma once
|
2008-01-15 20:27:44 +00:00
|
|
|
|
2012-09-26 02:21:37 +00:00
|
|
|
#include "Iop_Module.h"
|
|
|
|
#include "Iop_Stdio.h"
|
2008-01-15 20:27:44 +00:00
|
|
|
|
|
|
|
namespace Iop
|
|
|
|
{
|
2012-09-26 02:21:37 +00:00
|
|
|
class CSysclib : public CModule
|
|
|
|
{
|
|
|
|
public:
|
2018-04-30 21:01:23 +01:00
|
|
|
CSysclib(uint8*, uint8*, CStdio&);
|
|
|
|
virtual ~CSysclib() = default;
|
2008-01-15 20:27:44 +00:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
std::string GetId() const override;
|
|
|
|
std::string GetFunctionName(unsigned int) const override;
|
|
|
|
void Invoke(CMIPS&, unsigned int) override;
|
2008-01-15 20:27:44 +00:00
|
|
|
|
2012-09-26 02:21:37 +00:00
|
|
|
private:
|
2016-12-24 18:36:02 -05:00
|
|
|
struct JMP_BUF
|
|
|
|
{
|
|
|
|
uint32 ra;
|
|
|
|
uint32 sp;
|
|
|
|
uint32 fp;
|
|
|
|
uint32 s0;
|
|
|
|
uint32 s1;
|
|
|
|
uint32 s2;
|
|
|
|
uint32 s3;
|
|
|
|
uint32 s4;
|
|
|
|
uint32 s5;
|
|
|
|
uint32 s6;
|
|
|
|
uint32 s7;
|
|
|
|
uint32 gp;
|
|
|
|
};
|
|
|
|
static_assert(sizeof(JMP_BUF) == 48, "Size of JMP_BUF must be 48.");
|
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint8* GetPtr(uint32, uint32) const;
|
2016-03-09 10:31:00 -05:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
int32 __setjmp(CMIPS&);
|
|
|
|
void __longjmp(CMIPS&);
|
|
|
|
uint32 __look_ctype_table(uint32);
|
2021-01-03 20:34:57 -05:00
|
|
|
uint32 __memcmp(uint32, uint32, uint32);
|
2021-05-21 14:13:23 +02:00
|
|
|
void __memcpy(uint32, uint32, unsigned int);
|
2022-03-01 11:57:04 -05:00
|
|
|
void __memmove(uint32, uint32, uint32);
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 __memset(uint32, uint32, uint32);
|
|
|
|
uint32 __sprintf(CMIPS& context);
|
|
|
|
uint32 __strcat(uint32, uint32);
|
2023-06-06 11:34:39 -04:00
|
|
|
uint32 __strlen(uint32);
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 __strcmp(const char*, const char*);
|
|
|
|
void __strcpy(char*, const char*);
|
|
|
|
uint32 __strncmp(const char*, const char*, uint32);
|
2023-06-06 11:34:39 -04:00
|
|
|
void __strncpy(uint32, uint32, unsigned int);
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 __strchr(uint32, uint32);
|
|
|
|
uint32 __strrchr(uint32, uint32);
|
|
|
|
uint32 __strstr(uint32, uint32);
|
|
|
|
uint32 __strtok(uint32, uint32);
|
|
|
|
uint32 __strcspn(uint32, uint32);
|
|
|
|
uint32 __index(uint32, uint32);
|
|
|
|
uint32 __strtol(uint32, uint32, uint32);
|
2021-05-15 23:10:10 +02:00
|
|
|
uint32 __strtoul(uint32, uint32, uint32);
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 __wmemcopy(uint32, uint32, uint32);
|
|
|
|
uint32 __vsprintf(CMIPS&, uint32, uint32, uint32);
|
2017-05-24 22:08:12 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint8* m_ram = nullptr;
|
|
|
|
uint8* m_spr = nullptr;
|
|
|
|
uint32 m_strtok_prevSPtr = 0;
|
|
|
|
CStdio& m_stdio;
|
2012-09-26 02:21:37 +00:00
|
|
|
};
|
2008-01-15 20:27:44 +00:00
|
|
|
}
|