From abe30ba884d9fb3c6fe0b911a0158586ce1325ce Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 22 Jul 2022 19:24:05 -0600 Subject: [PATCH] Add i386 __restore_rt --- src/header/signal/redox.rs | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/header/signal/redox.rs b/src/header/signal/redox.rs index 7c8036faf3..1e8b227a8c 100644 --- a/src/header/signal/redox.rs +++ b/src/header/signal/redox.rs @@ -1,5 +1,26 @@ 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 +// eax is register, 119 is SIGRETURN +#[cfg(target_arch = "x86")] +global_asm!( + " + .global __restore_rt + __restore_rt: + mov eax, 119 + int 0x80 +" +); // 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")] @@ -11,16 +32,6 @@ global_asm!( syscall " ); -// x8 is register, 119 is SIGRETURN -#[cfg(target_arch = "aarch64")] -global_asm!( - " - .global __restore_rt - __restore_rt: - mov x8, #119 - svc 0 -" -); pub const SIGHUP: usize = 1; pub const SIGINT: usize = 2;