2014-11-08 21:53:56 -05:00
|
|
|
#pragma once
|
2008-01-15 20:27:44 +00:00
|
|
|
|
|
|
|
#include "Iop_Module.h"
|
|
|
|
#include "Iop_Stdio.h"
|
2014-11-08 21:53:56 -05:00
|
|
|
#include "Iop_Ioman.h"
|
2016-02-27 18:34:51 -05:00
|
|
|
#include "Iop_BiosStructs.h"
|
2009-02-03 19:17:16 +00:00
|
|
|
#include "../OsStructManager.h"
|
2012-09-18 06:33:33 +00:00
|
|
|
#include "../SifModule.h"
|
2008-01-15 20:27:44 +00:00
|
|
|
|
|
|
|
namespace Iop
|
|
|
|
{
|
2012-09-18 06:33:33 +00:00
|
|
|
class CSifMan;
|
|
|
|
|
2012-09-16 00:28:14 +00:00
|
|
|
class CSysmem : public CModule, public CSifModule
|
|
|
|
{
|
|
|
|
public:
|
2016-02-27 18:34:51 -05:00
|
|
|
typedef COsStructManager<MEMORYBLOCK> BlockListType;
|
2009-02-03 19:17:16 +00:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
CSysmem(uint8*, uint32, uint32, BlockListType&, CStdio&, CIoman&, CSifMan&);
|
|
|
|
virtual ~CSysmem();
|
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;
|
|
|
|
bool Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*) override;
|
2008-01-15 20:27:44 +00:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 AllocateMemory(uint32, uint32, uint32);
|
|
|
|
uint32 FreeMemory(uint32);
|
2008-01-15 20:27:44 +00:00
|
|
|
|
2012-09-16 00:28:14 +00:00
|
|
|
private:
|
2008-01-21 04:09:08 +00:00
|
|
|
enum MODULE_ID
|
|
|
|
{
|
|
|
|
MODULE_ID = 0x80000003
|
|
|
|
};
|
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 SifAllocate(uint32);
|
|
|
|
uint32 SifAllocateSystemMemory(uint32, uint32, uint32);
|
|
|
|
uint32 SifLoadMemory(uint32, const char*);
|
|
|
|
uint32 SifFreeMemory(uint32);
|
|
|
|
|
|
|
|
uint32 QueryMaxFreeMemSize();
|
2019-01-15 21:31:17 +00:00
|
|
|
uint32 QueryTotalFreeMemSize();
|
2018-04-30 21:01:23 +01:00
|
|
|
|
2021-08-30 14:03:19 -04:00
|
|
|
void DumpAllocList();
|
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint8* m_iopRam = nullptr;
|
|
|
|
BlockListType& m_blocks;
|
|
|
|
uint32 m_memoryBegin;
|
|
|
|
uint32 m_memoryEnd;
|
|
|
|
uint32 m_memorySize;
|
|
|
|
uint32 m_headBlockId;
|
|
|
|
CStdio& m_stdio;
|
|
|
|
CIoman& m_ioman;
|
2012-09-16 00:28:14 +00:00
|
|
|
};
|
2016-01-13 22:18:10 -05:00
|
|
|
|
|
|
|
typedef std::shared_ptr<CSysmem> SysmemPtr;
|
2008-01-15 20:27:44 +00:00
|
|
|
}
|