sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
Loading...
Searching...
No Matches
exit.c
Go to the documentation of this file.
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Licenced under Academic Free License version 2.0
7
# Review ps2sdk README & LICENSE files for further details.
8
*/
9
14
15
#include "
kernel.h
"
16
#include "
string.h
"
17
18
extern
char
**_kExecArg;
19
const
char
*SetArg(
const
char
*filename,
int
argc,
char
*argv[]);
20
21
char
**_kExecArg;
22
23
struct
SyscallData
24
{
25
int
syscall;
26
void
*function;
27
};
28
29
static
const
struct
SyscallData
SysEntry = {
30
0x5A,
31
&kCopyBytes};
32
33
#define SETARG_MAX_ARGS 15
34
35
const
char
*SetArg(
const
char
*filename,
int
argc,
char
*argv[])
36
{
37
const
char
*filenameOut;
38
char
*ptr;
39
int
len, i;
40
41
ptr = (
char
*)(_kExecArg + 16);
42
filenameOut = ptr;
43
setup(SysEntry.syscall, SysEntry.function);
44
argc = (argc > SETARG_MAX_ARGS) ? SETARG_MAX_ARGS : argc;
45
Copy(&_kExecArg[0], &ptr, 4);
46
len = strlen(filename) + 1;
47
Copy(ptr, filename, len);
48
ptr += len;
49
50
for
(i = 0; i < argc; i++) {
51
Copy(&_kExecArg[1 + i], &ptr, 4);
52
len = strlen(argv[i]) + 1;
53
Copy(ptr, argv[i], len);
54
ptr += len;
55
}
56
57
return
filenameOut;
58
}
59
60
__attribute__
((weak))
61
void
Exit(s32 exit_code)
62
{
63
TerminateLibrary();
64
KExit(exit_code);
65
}
66
67
__attribute__
((weak))
68
s32 ExecPS2(
void
*entry,
void
*gp,
int
num_args,
char
*args[])
69
{
70
SetArg(
""
, num_args, args);
71
TerminateLibrary();
72
return
_ExecPS2(entry, gp, num_args, &_kExecArg[1]);
73
}
74
75
__attribute__
((weak))
76
void
LoadExecPS2(
const
char
*filename, s32 num_args,
char
*args[])
77
{
78
const
char
*pFilename;
79
80
pFilename = SetArg(filename, num_args, args);
81
TerminateLibrary();
82
_LoadExecPS2(pFilename, num_args, &_kExecArg[1]);
83
}
84
85
__attribute__
((weak))
86
void
ExecOSD(
int
num_args,
char
*args[])
87
{
88
SetArg(
""
, num_args, args);
89
TerminateLibrary();
90
_ExecOSD(num_args, &_kExecArg[1]);
91
}
kernel.h
string.h
SyscallData
Definition
alarm.c:23
__attribute__
Definition
gif_registers.h:40
core
kernel
src
exit.c
Generated by
1.18.0