#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