diff --git a/src/header/signal/redox.rs b/src/header/signal/redox.rs index 7c8036faf3a19ef565f9a11f4023211c35d14769..1e8b227a8c1c5b277d9d3cf084703e153caf9e75 100644 --- a/src/header/signal/redox.rs +++ b/src/header/signal/redox.rs @@ -1,24 +1,35 @@ use core::arch::global_asm; +// x8 is register, 119 is SIGRETURN +#[cfg(target_arch = "aarch64")] +global_asm!( + " + .global __restore_rt + __restore_rt: + mov x8, #119 + svc 0 +" +); // Needs to be defined in assembly because it can't have a function prologue -// rax is register, 119 is SIGRETURN -#[cfg(target_arch = "x86_64")] +// eax is register, 119 is SIGRETURN +#[cfg(target_arch = "x86")] global_asm!( " .global __restore_rt __restore_rt: - mov rax, 119 - syscall + mov eax, 119 + int 0x80 " ); -// x8 is register, 119 is SIGRETURN -#[cfg(target_arch = "aarch64")] +// Needs to be defined in assembly because it can't have a function prologue +// rax is register, 119 is SIGRETURN +#[cfg(target_arch = "x86_64")] global_asm!( " .global __restore_rt __restore_rt: - mov x8, #119 - svc 0 + mov rax, 119 + syscall " );