diff --git a/linux/Makefile b/linux/Makefile index a8ad420..23c2882 100644 --- a/linux/Makefile +++ b/linux/Makefile @@ -1,7 +1,7 @@ -all: payload.bin payload-702.bin +all: payload.bin payload-702.bin payload-3gb.bin payload-702-3gb.bin clean: - rm payload.elf payload.bin + rm -f payload.elf payload.bin payload-702.elf payload-702.bin payload-3gb.elf payload-3gb.bin payload-702-3gb.elf payload-702-3gb.bin ../lib/lib.a: cd ../lib; make @@ -20,5 +20,19 @@ payload-702.bin: payload-702.elf objcopy payload-702.elf --only-section .text --only-section .data --only-section .bss --only-section .rodata -O binary payload-702.bin file payload-702.bin | fgrep -q 'payload-702.bin: DOS executable (COM)' +payload-3gb.elf: ../lib/lib.a main.c ps4-kexec/kexec.bin + gcc -isystem ../../8cc/freebsd-headers -nostdinc -nostdlib -static ../lib/lib.a -DVRAM_GB=3 main.c -Wl,-gc-sections -o payload-3gb.elf + +payload-3gb.bin: payload-3gb.elf + objcopy payload-3gb.elf --only-section .text --only-section .data --only-section .bss --only-section .rodata -O binary payload-3gb.bin + file payload-3gb.bin | fgrep -q 'payload-3gb.bin: DOS executable (COM)' + +payload-702-3gb.elf: ../lib/lib.a main.c ps4-kexec/kexec.bin + gcc -isystem ../../8cc/freebsd-headers -nostdinc -nostdlib -static ../lib/lib.a -D__7_02__ -DVRAM_GB=3 main.c -Wl,-gc-sections -o payload-702-3gb.elf + +payload-702-3gb.bin: payload-702-3gb.elf + objcopy payload-702-3gb.elf --only-section .text --only-section .data --only-section .bss --only-section .rodata -O binary payload-702-3gb.bin + file payload-702-3gb.bin | fgrep -q 'payload-702-3gb.bin: DOS executable (COM)' + ps4-kexec/kexec.bin: cd ps4-kexec; make diff --git a/linux/main.c b/linux/main.c index d83abd6..4e0db5a 100644 --- a/linux/main.c +++ b/linux/main.c @@ -48,7 +48,7 @@ void kernel_main() asm("kexec_load:\nmov %rcx, %r10\nmov $153, %rax\nsyscall\nret"); -int kexec_load(char* kernel, unsigned long long kernel_size, char* initrd, unsigned long long initrd_size, char* cmdline); +int kexec_load(char* kernel, unsigned long long kernel_size, char* initrd, unsigned long long initrd_size, char* cmdline, int vram_gb); int read_file(char* path, char** ptr, unsigned long long* sz) { @@ -99,6 +99,10 @@ void alert(const char* msg) sceSysUtilSendSystemNotificationWithText(222, msg); } +#ifndef VRAM_GB +#define VRAM_GB 1 +#endif + int main() { struct sigaction sa = { @@ -141,6 +145,6 @@ int main() .rtp = NULL }; thr_new(&thr, sizeof(thr)); - kexec_load(kernel, kernel_size, initrd, initrd_size, cmdline); + kexec_load(kernel, kernel_size, initrd, initrd_size, cmdline, VRAM_GB); for(;;); } diff --git a/src/payloads/linux/ps4-kexec b/src/payloads/linux/ps4-kexec index e157ffd..4d8f7ef 160000 --- a/src/payloads/linux/ps4-kexec +++ b/src/payloads/linux/ps4-kexec @@ -1 +1 @@ -Subproject commit e157ffd144958f326dddb18a5a52dc71c0fe78fa +Subproject commit 4d8f7efe96ff513d408e791bf71357f72d3259e8