PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
elf_loader_compat.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
13#include <iopcontrol.h>
14#include <loadfile.h>
15#include <sifrpc.h>
16#include <stdlib.h>
17
18int LoadELFFromFileWithPartition(const char *filename, const char *partition, int argc, char *argv[])
19{
20 int ret;
22 elf_loader_execinfo_t execinfo;
23
24 ret = elf_loader_reader_read_elf_file_stdio(&resultbuf, filename, "rb");
25 if ( ret < 0 )
26 {
27 return ret;
28 }
29 ret = elf_loader_exec_elf_prepare_loadinfo(&execinfo, resultbuf.m_buf, resultbuf.m_bufsize);
30 if ( ret < 0 )
31 {
32 free(resultbuf.m_buf);
33 return ret;
34 }
35 ret = elf_loader_exec_elf_prepare_arginfo(&execinfo, filename, partition, argc, argv);
36 if ( ret < 0 )
37 {
38 free(resultbuf.m_buf);
39 return ret;
40 }
41
42 // No turning back here.
43 while ( !SifIopReset(NULL, 0) )
44 ;
45 while ( !SifIopSync() )
46 ;
47
48 sceSifInitRpc(0);
50 SifLoadModule("rom0:SIO2MAN", 0, NULL);
51 SifLoadModule("rom0:MCMAN", 0, NULL);
52 SifLoadModule("rom0:MCSERV", 0, NULL);
54 sceSifExitRpc();
55
56 return elf_loader_exec_elf(&execinfo);
57}
58
59int LoadELFFromFile(const char *filename, int argc, char *argv[])
60{
61 return LoadELFFromFileWithPartition(filename, NULL, argc, argv);
62}
int SifLoadModule(const char *path, int arg_len, const char *args)
void SifLoadFileExit(void)
int SifLoadFileInit(void)
int LoadELFFromFileWithPartition(const char *filename, const char *partition, int argc, char *argv[])
Definition elf.c:53
int SifIopReset(const char *arg, int mode)
int SifIopSync(void)