From 70004ae88d2bdb1feb56e5d2b4ba35c3b309dc92 Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sat, 10 Oct 2020 15:27:06 -0400 Subject: Add memblock.h --- include/user/kernel/sysmem/memblock.h | 263 ++++++++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100644 include/user/kernel/sysmem/memblock.h (limited to 'include/user/kernel/sysmem/memblock.h') diff --git a/include/user/kernel/sysmem/memblock.h b/include/user/kernel/sysmem/memblock.h new file mode 100644 index 0000000..4d720cb --- /dev/null +++ b/include/user/kernel/sysmem/memblock.h @@ -0,0 +1,263 @@ +#ifndef _DOLCESDK_PSP2_KERNEL_SYSMEM_MEMBLOCK_H_ +#define _DOLCESDK_PSP2_KERNEL_SYSMEM_MEMBLOCK_H_ + +#include +#include + +/** @name sceKernelAllocMemBlockで指定可能なメモリタイプ + */ +/*@{*/ + +/** + * memory block type for read write cache allocated on LPDDR2 + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RW 0x0c20d060U + +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA SCE_KERNEL_MEMBLOCK_TYPE_USER_RW + +/** + * memory block type for read execute cache allocated on LPDDR2 + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RX 0x0c20d050U + +/** + * memory block type for read write uncache allocated on LPDDR2 + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW 0x0c208060U + +/** + * alias of SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW + +/** + * alias of SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE + +/** + * memory block type for read write cache allocated on LPDDR2 physical continuous area + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW 0x0c80d060U + +/** + * memory block type for read write uncache allocated on LPDDR2 physical continuous area + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW 0x0d808060U + +/** + * memory block type for read write uncache allocated on CDRAM + */ +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW 0x09408060U + +#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RWDATA SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW + +/*@}*/ + +SCE_CDECL_BEGIN + +#if !defined(_LANGUAGE_ASSEMBLY) + +typedef struct SceKernelAllocMemBlockOpt0940 { + SceSize size; + SceUInt32 attr; + SceSize alignment; + SceUID uidBaseBlock; + const char *strBaseBlockName; +} SceKernelAllocMemBlockOpt0940; + +/** + * Option parameter for sceKernelAllocMemBlock + */ + typedef struct SceKernelAllocMemBlockOpt { + /** + * size of this + */ + SceSize size; + + /** + * attributes field + */ + SceUInt32 attr; + + /** + * alignment option + * must set SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_ALIGNMENT to 'attr' + */ + SceSize alignment; + + /** + * reserved + */ + SceUInt32 reserved; + + /** + * reserved2 + */ + const char *strBaseBlockName; + +#if 0 + /** + * mapped base address [out] + */ + void *mappedBase; + + /** + * mapped size [out] + */ + SceSize mappedSize; + + /** + * memory type [out] + */ + SceKernelMemoryType memoryType; + + SceUInt32 access; +#endif +} SceKernelAllocMemBlockOpt; + +/** + * Enable 'alignment' member + */ +#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_ALIGNMENT 0x00000004U + +#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_PHYCONT 0x00200000U + +/** + * Allocating memory block + * + * @param[in] name memory block name + * @param[in] vsize memory block virtual size + * @param[in] flags options + * @retval id UID of memory block + * @retval 0, API returns a memory block just fit range [start, start + size]. + * @param[in] vaddr base address + * @param[in] size address size + * @retval >=SCE_OK block id + * @retval