diff options
Diffstat (limited to 'src/ps3/sce.h')
| -rw-r--r-- | src/ps3/sce.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/src/ps3/sce.h b/src/ps3/sce.h new file mode 100644 index 0000000..a11463d --- /dev/null +++ b/src/ps3/sce.h @@ -0,0 +1,167 @@ +#pragma once + +#include "elf.h" + +#define ELFOSABI_CELLOSLV2 102 /* CellOS Lv2 */ /* sce local */ + +#define ET_SCE_PPURELEXEC 0xffa4 + +#define SHT_SCE_PPURELA 0x700000a4 + +#define PT_PROC_PARAM 0x60000001 +#define PT_PROC_PRX 0x60000002 + +#define PT_SCE_COMMENT 0x6fffff00 +#define PT_SCE_VERSION 0x6fffff01 + +#define PT_SCE_PPURELA 0x700000a4 +#define PT_SCE_SEGSYM 0x700000a8 + +#define PF_SPU_X (0x00100000) /* SPU executable defined, but unused.*/ +#define PF_SPU_W (0x00200000) /* SPU writable */ +#define PF_SPU_R (0x00400000) /* SPU readable */ +#define PF_RSX_X (0x01000000) /* RSX executable defined, but unused. */ +#define PF_RSX_W (0x02000000) /* RSX writable */ +#define PF_RSX_R (0x04000000) /* RSX readable */ + +#define SYS_MODULE_NAME_LEN 27 +#define SYS_MODULE_MAX_SEGMENTS 4 + +#define SYS_LIB_AUTO_EXPORT (0x0001) +#define SYS_LIB_WEAK_EXPORT (0x0002) +#define SYS_LIB_NOLINK_EXPORT (0x0004) +#define SYS_LIB_WEAK_IMPORT (0x0008) + +/* MODULE INFO */ + +typedef struct _scemoduleinfo_common { + unsigned short modattribute; + unsigned char modversion[2]; + char modname[SYS_MODULE_NAME_LEN]; + char terminal; +} sceModuleInfo_common; + +typedef struct _scemoduleinfo_ppu32 { + sceModuleInfo_common c; + Elf32_Addr gp_value; + Elf32_Addr ent_top; + Elf32_Addr ent_end; + Elf32_Addr stub_top; + Elf32_Addr stub_end; +} sceModuleInfo_ppu32; + +typedef struct _scemoduleinfo_ppu64 { + sceModuleInfo_common c; + Elf64_Addr gp_value; + Elf64_Addr ent_top; + Elf64_Addr ent_end; + Elf64_Addr stub_top; + Elf64_Addr stub_end; +} sceModuleInfo_ppu64; + + +/* IMPORTS */ + +typedef struct _scelibstub_common { + unsigned char structsize; + unsigned char reserved1[1]; + unsigned short version; + unsigned short attribute; + unsigned short nfunc; + unsigned short nvar; + unsigned short ntlsvar; + unsigned char reserved2[4]; +} sceKernelLibraryStubTable_common; + +typedef sceKernelLibraryStubTable_common + sceKernelLibraryStubTable_ppu_common; + +typedef struct _scelibstub_ppu32 { + sceKernelLibraryStubTable_ppu_common c; + Elf32_Addr libname; + Elf32_Addr func_nidtable; + Elf32_Addr func_table; + Elf32_Addr var_nidtable; + Elf32_Addr var_table; + Elf32_Addr tls_nidtable; + Elf32_Addr tls_table; +} sceKernelLibraryStubTable_ppu32; + +typedef struct _scelibstub_ppu64 { + sceKernelLibraryStubTable_ppu_common c; + Elf64_Addr libname; + Elf64_Addr func_nidtable; + Elf64_Addr func_table; + Elf64_Addr var_nidtable; + Elf64_Addr var_table; + Elf64_Addr tls_nidtable; + Elf64_Addr tls_table; +} sceKernelLibraryStubTable_ppu64; + +/* EXPORTS */ + +typedef struct _scelibent_common { + unsigned char structsize; + unsigned char auxattribute; + short unsigned int version; + short unsigned int attribute; + short unsigned int nfunc; + short unsigned int nvar; + short unsigned int ntlsvar; + unsigned char hashinfo; + unsigned char hashinfotls; + unsigned char reserved2[1]; + unsigned char nidaltsets; +} sceKernelLibraryEntryTable_common; + +typedef sceKernelLibraryEntryTable_common + sceKernelLibraryEntryTable_ppu_common; + +typedef struct _scelibent_ppu32 { + sceKernelLibraryEntryTable_ppu_common c; + Elf32_Addr libname; + Elf32_Addr nidtable; + Elf32_Addr addtable; +} sceKernelLibraryEntryTable_ppu32; + +typedef struct _scelibent_ppu64 { + sceKernelLibraryEntryTable_ppu_common c; + Elf64_Addr libname; + Elf64_Addr nidtable; + Elf64_Addr addtable; +} sceKernelLibraryEntryTable_ppu64; + +/* PROCESS PARAM */ + +#define SYS_PROCESS_PARAM_MAGIC 0x13bcc5f6 + +typedef struct { + unsigned int size; + unsigned int magic; + unsigned int version; + unsigned int sdk_version; + int primary_prio; + unsigned int primary_stacksize; + unsigned int malloc_pagesize; + unsigned int ppc_seg; + unsigned int crash_dump_param_addr; +} sys_process_param_t; + +/* PROCESS PRX */ + +#define SYS_PROCESS_PRX_MAGIC 0x1b434cec +#define SYS_PROCESS_PRX_VERSION 4 /* latest */ + +typedef struct sys_process_prx_info_t { + unsigned int size; + unsigned int magic; + unsigned int version; + unsigned int sdk_version; + unsigned int libent_start; + unsigned int libent_end; + unsigned int libstub_start; + unsigned int libstub_end; + unsigned char major_version; + unsigned char minor_version; + unsigned char reserved[6]; +} sys_process_prx_info_t; |
