mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-07 04:33:24 +00:00
[nce] signal hanlder fixes for sigaction
Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
@@ -66,19 +66,20 @@ _ZN4Core6ArmNce37ReturnToRunCodeByExceptionLevelChangeEiPv:
|
||||
#endif
|
||||
/* This jumps to the signal handler, which will restore the entire context. */
|
||||
/* On entry, x0 = thread id, which is already in the right place. Even on macOS. */
|
||||
/* Move tpidr to x9 so it is not trampled. */
|
||||
mov x9, x1
|
||||
mov x9, x1 /* Move tpidr to x9 so it is not trampled. */
|
||||
mov x1, #(ReturnToRunCodeByExceptionLevelChangeSignal)
|
||||
#ifdef __APPLE__
|
||||
/* I can never be happy, why no tkill in mach kernel? Ugh ... */
|
||||
/* Signature: 328 AUE_PTHREADKILL ALL { int __pthread_kill(int thread_port, int sig); } */
|
||||
mov x16, #(328)
|
||||
svc #0x80 /* Tail call the signal handler. */
|
||||
brk #0xF000 /* See: https://discourse.llvm.org/t/stepping-over-a-brk-instruction-on-arm64/69766/7 */
|
||||
#else
|
||||
/* Signature: int tgkill(pid_t tgid, pid_t tid, int sig); */
|
||||
mov x8, #(__NR_tkill)
|
||||
svc #0 /* Tail call the signal handler. */
|
||||
brk #1000 /* Block execution from flowing here. */
|
||||
#endif
|
||||
svc #0 /* Tail call the signal handler. */
|
||||
brk #1000 /* Block execution from flowing here. */
|
||||
|
||||
/* static void Core::ArmNce::ReturnToRunCodeByExceptionLevelChangeSignalHandler(int sig, void* info, void* raw_context) */
|
||||
#ifdef __APPLE__
|
||||
|
||||
Reference in New Issue
Block a user