mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-04-28 13:55:39 -06:00
Add Mach-O support for fiber switching and stack management
This commit is contained in:
parent
fc9cde2f51
commit
19ce9ac146
@ -117,6 +117,32 @@ extern "C" void PS4_SYSV_ABI __sanitizer_finish_switch_fiber(void* fake_stack_sa
|
||||
|
||||
extern "C" void PS4_SYSV_ABI __asan_destroy_fake_stack() {}
|
||||
|
||||
#if defined(__APPLE__)
|
||||
extern "C" void PS4_SYSV_ABI
|
||||
__sanitizer_start_switch_fiber_macho(void** fake_stack_save, const void* stack_addr,
|
||||
size_t stack_size) asm("__sanitizer_start_switch_fiber");
|
||||
extern "C" void PS4_SYSV_ABI __sanitizer_finish_switch_fiber_macho(
|
||||
void* fake_stack_save, const void** old_stack_addr,
|
||||
size_t* old_stack_size) asm("__sanitizer_finish_switch_fiber");
|
||||
extern "C" void PS4_SYSV_ABI __asan_destroy_fake_stack_macho(void) asm("__asan_destroy_fake_stack");
|
||||
|
||||
extern "C" void PS4_SYSV_ABI __sanitizer_start_switch_fiber_macho(void** fake_stack_save,
|
||||
const void* stack_addr,
|
||||
size_t stack_size) {
|
||||
__sanitizer_start_switch_fiber(fake_stack_save, stack_addr, stack_size);
|
||||
}
|
||||
|
||||
extern "C" void PS4_SYSV_ABI __sanitizer_finish_switch_fiber_macho(void* fake_stack_save,
|
||||
const void** old_stack_addr,
|
||||
size_t* old_stack_size) {
|
||||
__sanitizer_finish_switch_fiber(fake_stack_save, old_stack_addr, old_stack_size);
|
||||
}
|
||||
|
||||
extern "C" void PS4_SYSV_ABI __asan_destroy_fake_stack_macho(void) {
|
||||
__asan_destroy_fake_stack();
|
||||
}
|
||||
#endif
|
||||
|
||||
static void EnsureFiberGlobalsInitialized() {
|
||||
u32 expected = 0;
|
||||
if (fiber_globals_init.compare_exchange_strong(expected, 1u, std::memory_order_relaxed)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user