diff options
Diffstat (limited to 'src/vita/sce.h')
| -rw-r--r-- | src/vita/sce.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/vita/sce.h b/src/vita/sce.h new file mode 100644 index 0000000..8557748 --- /dev/null +++ b/src/vita/sce.h @@ -0,0 +1,110 @@ +#pragma once + +#include "elf.h" + +#define ET_SCE_EXEC 0xfe00 +#define ET_SCE_RELEXEC 0xfe04 /* PRX */ + +#define ET_SCE_ARMRELEXEC 0xffa5 + +#define SHT_SCE_ARMRELA 0x700000a4 + +#define PT_SCE_RELA 0x60000000 + +#define PT_SCE_COMMENT 0x6fffff00 +#define PT_SCE_VERSION 0x6fffff01 + +#define PT_SCE_ARMRELA 0x700000A4 +#define PT_SCE_SEGSYM 0x700000A8 + +#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_prx2arm { + sceModuleInfo_common c; + Elf32_Addr resreve; + Elf32_Addr ent_top; + Elf32_Addr ent_end; + Elf32_Addr stub_top; + Elf32_Addr stub_end; + Elf32_Word dbg_fingerprint; + Elf32_Addr tls_top; + Elf32_Addr tls_filesz; + Elf32_Addr tls_memsz; + Elf32_Addr start_entry; + Elf32_Addr stop_entry; + Elf32_Addr arm_exidx_top; + Elf32_Addr arm_exidx_end; + Elf32_Addr arm_extab_top; + Elf32_Addr arm_extab_end; +} sceModuleInfo_prx2arm; + +/* 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_prx2_common; + +typedef struct _scelibstub_prx2arm { + sceKernelLibraryStubTable_prx2_common c; + Elf32_Word libname_nid; + Elf32_Addr libname; + Elf32_Word sce_sdk_version; + 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_prx2arm; + +/* 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_prx2_common; + +typedef struct _scelibent_prx2arm { + sceKernelLibraryEntryTable_prx2_common c; + Elf32_Word libname_nid; + Elf32_Addr libname; + Elf32_Addr nidtable; + Elf32_Addr addtable; +} sceKernelLibraryEntryTable_prx2arm; |
