mirror of
https://github.com/ps5-linux/ps5-linux-loader.git
synced 2026-07-16 06:00:44 +00:00
some tidy up
This commit is contained in:
@@ -6,8 +6,6 @@
|
||||
|
||||
__attribute__((section(".entry_point"), naked)) uint32_t main(void) {
|
||||
|
||||
// We enter this function after CR3 was updated to 1:1 mapping
|
||||
// We need to point RSP/RBP to a good known valid address
|
||||
uint32_t ebax, ebx, ecx, edx;
|
||||
uint32_t cpu_id;
|
||||
|
||||
@@ -17,12 +15,10 @@ __attribute__((section(".entry_point"), naked)) uint32_t main(void) {
|
||||
|
||||
cpu_id = (ebx >> 24) & 0xFF;
|
||||
|
||||
// We point to a location after the main linux boot code
|
||||
// Each CPU should have a different location
|
||||
// Each CPU should have a different stack
|
||||
uintptr_t new_rsp =
|
||||
(uintptr_t)hv_base_rsp + ((uint64_t)(cpu_id)*hv_stack_size);
|
||||
|
||||
// WARNING: This invalidates current local variables
|
||||
__asm__ volatile("movq %0, %%rsp \n\t"
|
||||
"movq %%rsp, %%rbp \n\t"
|
||||
:
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
// This file is shared between kernel shellcode and hypervisor shellcode
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct {
|
||||
uint64_t bzimage_pa; // Already relocated by Kernel shellcode
|
||||
uint64_t initrd_pa; // Already relocated by Kernel shellcode
|
||||
uint64_t linux_info_pa; // Already relocated by Kernel shellcode
|
||||
uint64_t bzimage_pa;
|
||||
uint64_t initrd_pa;
|
||||
uint64_t linux_info_pa;
|
||||
} shellcode_hypervisor_args;
|
||||
@@ -96,12 +96,10 @@ void wrmsr(uint32_t msr, uint64_t val) {
|
||||
__asm__ __volatile__("wrmsr" : : "a"(low), "d"(high), "c"(msr));
|
||||
}
|
||||
|
||||
// Map FreeBSD atomic_add_32 to GCC builtin
|
||||
void atomic_add_32(volatile uint32_t *p, uint32_t v) {
|
||||
__sync_fetch_and_add(p, v);
|
||||
}
|
||||
|
||||
// Map FreeBSD atomic_cmpset_32 to GCC builtin
|
||||
int atomic_cmpset_32(volatile uint32_t *dst, uint32_t exp, uint32_t src) {
|
||||
return __sync_bool_compare_and_swap(dst, exp, src);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user