sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
Loading...
Searching...
No Matches
ldrsrc.c
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright ps2dev - http://www.ps2dev.org
7
# Licenced under Academic Free License version 2.0
8
# Review ps2sdk README & LICENSE files for further details.
9
*/
10
11
#include <
elf_loader_common.h
>
12
#include <
kernel.h
>
13
#include <
ps2sdkapi.h
>
14
#include <stdint.h>
15
#include <
string.h
>
16
#include <
tamtypes.h
>
17
18
#ifdef LOADER_ENABLE_DEBUG_COLORS
19
#define SET_GS_BGCOLOUR(colour) \
20
do \
21
{ \
22
*((volatile unsigned long int *)0x120000E0) = colour; \
23
} while ( 0 )
24
#else
25
#define SET_GS_BGCOLOUR(colour) \
26
do \
27
{ \
28
} while ( 0 )
29
#endif
30
31
// Color status helper in BGR format
32
#define WHITE_BG 0xFFFFFF
// start main
33
#define CYAN_BG 0xFFFF00
// move memory
34
#define GREEN_BG 0x00FF00
// set memory to 0
35
#define RED_BG 0x0000FF
// never encountered execution command
36
#define MAGENTA_BG 0xFF00FF
// malformed loader info
37
#define BROWN_BG 0x2A2AA5
// before FlushCache
38
#define PURPLE_BG 0x800080
// before ExecPS2
39
40
//--------------------------------------------------------------
41
// Redefinition of init/deinit libc:
42
//--------------------------------------------------------------
43
// DON'T REMOVE, as it is for reducing binary size.
44
// These functions are defined as weak in /libc/src/init.c
45
//--------------------------------------------------------------
46
void
_libcglue_init() {}
47
void
_libcglue_deinit() {}
48
void
_libcglue_args_parse(
int
argc,
char
**argv) {}
49
50
DISABLE_PATCHED_FUNCTIONS();
51
DISABLE_EXTRA_TIMERS_FUNCTIONS();
52
PS2_DISABLE_AUTOSTART_PTHREAD();
53
54
void
__attribute__
((section(
".start"
))) ldr_proc(
void
);
55
void
ldr_proc(
void
)
56
{
57
elf_loader_loaderinfo_t *ldrinfo;
58
elf_loader_arginfo_t *arginfo;
59
60
SET_GS_BGCOLOUR(WHITE_BG);
61
ldrinfo = (
void
*)0x11004000;
62
arginfo = (
void
*)0x00088000;
63
64
{
65
int
i;
66
for
( i = 0; i < (
sizeof
(ldrinfo->items) /
sizeof
(ldrinfo->items[0])); i += 1 )
67
{
68
elf_loader_loaderinfo_item_t *item;
69
70
item = &(ldrinfo->items[i]);
71
if
( item->dest_addr != NULL && item->src_addr != NULL && item->size != 0 )
72
{
73
SET_GS_BGCOLOUR(CYAN_BG);
74
memmove(item->dest_addr, item->src_addr, item->size);
75
}
76
else
if
( item->dest_addr != NULL && item->src_addr == NULL && item->size != 0 )
77
{
78
SET_GS_BGCOLOUR(GREEN_BG);
79
memset(item->dest_addr, 0, item->size);
80
}
81
else
if
( item->dest_addr != NULL && item->size == 0 )
82
{
83
SET_GS_BGCOLOUR(BROWN_BG);
84
FlushCache(0);
85
FlushCache(2);
86
SET_GS_BGCOLOUR(PURPLE_BG);
87
ExecPS2(item->dest_addr, item->src_addr, arginfo->argc, arginfo->argv);
88
}
89
else
90
{
91
SET_GS_BGCOLOUR(MAGENTA_BG);
92
break
;
93
}
94
}
95
}
96
SET_GS_BGCOLOUR(RED_BG);
97
__builtin_trap();
98
}
elf_loader_common.h
kernel.h
ps2sdkapi.h
string.h
__attribute__
Definition
gif_registers.h:40
tamtypes.h
core
elf-loader2
src
ldrsrc
ldrsrc.c
Generated by
1.18.0