PS2SDK
PS2 Homebrew Libraries
loadcore.h
Go to the documentation of this file.
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright (c) 2003 Marcus R. Brown <mrbrown@0xd6.org>
7
# Licenced under Academic Free License version 2.0
8
# Review ps2sdk README & LICENSE files for further details.
9
*/
10
16
#ifndef __LOADCORE_H__
17
#define __LOADCORE_H__
18
19
#include <types.h>
20
#include <
irx.h
>
21
22
#define MODULE_RESIDENT_END 0
23
#define MODULE_NO_RESIDENT_END 1
24
#define MODULE_REMOVABLE_END 2 // Only for 'modload' > v1.2
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
31
typedef
struct
_ModuleInfo
{
32
struct
_ModuleInfo
*next;
33
char
*name;
34
u16 version;
36
u16
newflags
;
37
u16 id;
39
u16
flags
;
41
u32
entry
;
42
u32 gp;
43
u32 text_start;
44
u32 text_size;
45
u32 data_size;
46
u32 bss_size;
47
u32 unused1;
48
u32 unused2;
49
}
ModuleInfo_t
;
50
51
typedef
struct
_IopModuleID
{
52
const
char
*name;
53
unsigned
short
int
version;
54
}
IopModuleID_t
;
55
56
typedef
struct
_FileInfo
{
57
u32 ModuleType;
58
void
*EntryPoint;
59
void
*gp;
60
void
*text_start;
61
u32 text_size;
62
u32 data_size;
63
u32 bss_size;
64
u32 MemSize;
65
IopModuleID_t
*mod_id;
66
}
FileInfo_t
;
67
68
typedef
struct
_iop_library
{
69
struct
_iop_library
*prev;
70
struct
irx_import_table
*caller;
71
u16 version;
72
u16 flags;
73
char
name[8];
74
void
*exports[];
75
}
iop_library_t
;
76
78
typedef
struct
tag_LC_internals
{
79
iop_library_t
* let_next, *let_prev;
//let_next = tail, let_prev = head. I don't know what "let" and "mda" stand for.
80
iop_library_t
* mda_next, *mda_prev;
82
ModuleInfo_t
*
image_info
;
83
int
module_count;
84
int
module_index;
85
/* The following members may change depending on the version of the module. */
86
void
*reboot_handlers;
87
void
*intr_suspend_tbl;
88
int
bootmodes[16];
89
int
bootmodes_size;
90
}
lc_internals_t
;
91
92
typedef
struct
{
93
u16 value;
94
u8 id;
95
u8 len;
96
u32 data[];
97
}
iop_bootmode_t
;
98
99
100
typedef
struct
{
//FIXME: Incomplete structure definition. Provided only for compatibility, as I don't know what the full structure is like.
101
void
*callback;
102
}
iop_init_entry_t
;
103
104
typedef
int (*BootupCallback_t)(
iop_init_entry_t
* next,
int
delayed);
105
109
typedef
struct
{
110
struct
_iop_library
*tail;
111
struct
_iop_library
*head;
112
}
iop_library_table_t
__attribute__
((deprecated));
113
117
extern
iop_library_table_t
*
GetLibraryEntryTable
(
void
)
__attribute__
((deprecated));
118
extern
lc_internals_t
*GetLoadcoreInternalData(
void
);
119
120
extern
void
FlushIcache(
void
);
121
extern
void
FlushDcache(
void
);
122
123
extern
int
RegisterLibraryEntries(
struct
irx_export_table
*exports);
124
extern
int
ReleaseLibraryEntries(
struct
irx_export_table
*exports);
125
126
// In liberx, the following is LinkLibraryClients
127
extern
int
LinkLibraryEntries(
void
* addr,
int
size);
128
// In liberx, the following is UnLinkLibraryClients
129
extern
int
UnLinkLibraryEntries(
void
* addr,
int
size);
130
131
extern
int
RegisterNonAutoLinkEntries(
struct
irx_export_table
*exports);
132
133
// In liberx, the following is SearchLibraryEntries
134
extern
void
*QueryLibraryEntryTable(
iop_library_t
*library);
135
extern
int
* QueryBootMode(
int
mode);
136
extern
void
RegisterBootMode(
iop_bootmode_t
*b);
137
138
extern
void
LockLibraryClient(
struct
irx_export_table
*export);
139
extern
void
UnLockLibraryClient(
struct
irx_export_table
*export);
140
141
extern
void
RegisterModule(
ModuleInfo_t
*mi);
142
extern
void
ReleaseModule(
ModuleInfo_t
*mi);
143
144
extern
int
AddRebootNotifyHandler(BootupCallback_t func,
int
priority,
int
*stat);
145
146
extern
void
SetCacheCtrl(u32 val);
147
148
extern
int
ProbeExecutableObject(
void
* image,
FileInfo_t
*result);
149
extern
int
LoadExecutableObject(
void
* image,
FileInfo_t
*fi);
150
extern
ModuleInfo_t
*SearchModuleCBByAddr(
void
* addr);
151
152
#define loadcore_IMPORTS \
153
loadcore_IMPORTS_start \
154
\
155
I_GetLibraryEntryTable \
156
\
157
I_FlushIcache \
158
I_FlushDcache \
159
\
160
I_RegisterLibraryEntries \
161
I_ReleaseLibraryEntries \
162
\
163
I_QueryLibraryEntryTable \
164
I_QueryBootMode \
165
\
166
loadcore_IMPORTS_end
167
168
#define loadcore_IMPORTS_start DECLARE_IMPORT_TABLE(loadcore, 1, 1)
169
#define loadcore_IMPORTS_end END_IMPORT_TABLE
170
171
#define I_GetLibraryEntryTable DECLARE_IMPORT(3, GetLibraryEntryTable)
172
#define I_GetLoadcoreInternalData DECLARE_IMPORT(3, GetLoadcoreInternalData)
173
#define I_FlushIcache DECLARE_IMPORT(4, FlushIcache)
174
#define I_FlushDcache DECLARE_IMPORT(5, FlushDcache)
175
#define I_RegisterLibraryEntries DECLARE_IMPORT(6, RegisterLibraryEntries)
176
#define I_ReleaseLibraryEntries DECLARE_IMPORT(7, ReleaseLibraryEntries)
177
#define I_LinkLibraryEntries DECLARE_IMPORT(8, LinkLibraryEntries)
178
#define I_UnLinkLibraryEntries DECLARE_IMPORT(9, UnLinkLibraryEntries)
179
#define I_RegisterNonAutoLinkEntries DECLARE_IMPORT(10, RegisterNonAutoLinkEntries)
180
#define I_QueryLibraryEntryTable DECLARE_IMPORT(11, QueryLibraryEntryTable)
181
#define I_QueryBootMode DECLARE_IMPORT(12, QueryBootMode)
182
#define I_RegisterBootMode DECLARE_IMPORT(13, RegisterBootMode)
183
#define I_LockLibraryClient DECLARE_IMPORT(14, LockLibraryClient)
184
#define I_UnLockLibraryClient DECLARE_IMPORT(15, UnLockLibraryClient)
185
#define I_RegisterModule DECLARE_IMPORT(16, RegisterModule)
186
#define I_ReleaseModule DECLARE_IMPORT(17, ReleaseModule)
187
#define I_AddRebootNotifyHandler DECLARE_IMPORT(20, AddRebootNotifyHandler)
188
#define I_SetCacheCtrl DECLARE_IMPORT(21, SetCacheCtrl)
189
#define I_ProbeExecutableObject DECLARE_IMPORT(22, ProbeExecutableObject)
190
#define I_LoadExecutableObject DECLARE_IMPORT(23, LoadExecutableObject)
191
#define I_SearchModuleCBByAddr DECLARE_IMPORT(24, SearchModuleCBByAddr)
192
193
// For backwards compatibility
194
#define LinkImports(...) LinkLibraryEntries(__VA_ARGS__)
195
#define UnlinkImports(...) UnLinkLibraryEntries(__VA_ARGS__)
196
#define SetNonAutoLinkFlag(...) LockLibraryClient(__VA_ARGS__)
197
#define UnsetNonAutoLinkFlag(...) UnLockLibraryClient(__VA_ARGS__)
198
#define LinkModule(...) RegisterModule(__VA_ARGS__)
199
#define UnlinkModule(...) ReleaseModule(__VA_ARGS__)
200
#define RegisterPostBootCallback(...) AddRebootNotifyHandler(__VA_ARGS__)
201
#define ReadModuleHeader(...) ProbeExecutableObject(__VA_ARGS__)
202
#define LoadModuleImage(...) LoadExecutableObject(__VA_ARGS__)
203
#define FindImageInfo(...) SearchModuleCBByAddr(__VA_ARGS__)
204
#define I_LinkImports I_LinkLibraryEntries
205
#define I_UnlinkImports I_UnLinkLibraryEntries
206
#define I_SetNonAutoLinkFlag I_LockLibraryClient
207
#define I_UnsetNonAutoLinkFlag I_UnLockLibraryClient
208
#define I_LinkModule I_RegisterModule
209
#define I_UnlinkModule I_ReleaseModule
210
#define I_RegisterPostBootCallback I_AddRebootNotifyHandler
211
#define I_ReadModuleHeader I_ProbeExecutableObject
212
#define I_LoadModuleImage I_LoadExecutableObject
213
#define I_FindImageInfo I_SearchModuleCBByAddr
214
215
#ifdef __cplusplus
216
}
217
#endif
218
219
#endif
/* __LOADCORE_H__ */
_ModuleInfo::newflags
u16 newflags
Definition:
loadcore.h:36
lc_internals_t
struct tag_LC_internals lc_internals_t
_IopModuleID
Definition:
loadcore.h:51
_ModuleInfo::entry
u32 entry
Definition:
loadcore.h:41
_iop_library
Definition:
loadcore.h:68
_FileInfo
Definition:
loadcore.h:56
irx.h
__attribute__
typedef __attribute__
Definition:
tlbfunc.c:60
irx_export_table
Definition:
irx.h:90
iop_bootmode_t
Definition:
loadcore.h:92
ModuleInfo_t
struct _ModuleInfo ModuleInfo_t
iop_init_entry_t
Definition:
loadcore.h:100
GetLibraryEntryTable
iop_library_table_t * GetLibraryEntryTable(void) __attribute__((deprecated))
tag_LC_internals
Definition:
loadcore.h:78
_ModuleInfo::flags
u16 flags
Definition:
loadcore.h:39
iop_library_table_t
Definition:
loadcore.h:109
irx_import_table
Definition:
irx.h:42
_ModuleInfo
Definition:
loadcore.h:31
tag_LC_internals::image_info
ModuleInfo_t * image_info
Definition:
loadcore.h:82
iop
system
loadcore
include
loadcore.h
Generated on Sat May 16 2026 16:59:27 for PS2SDK by
1.8.17