|
@@ -1205,12 +1205,10 @@ DispatchSignalResult Thread::dispatch_signal(u8 signal)
|
|
auto signal_trampoline_addr = process.signal_trampoline().get();
|
|
auto signal_trampoline_addr = process.signal_trampoline().get();
|
|
regs.set_ip(signal_trampoline_addr);
|
|
regs.set_ip(signal_trampoline_addr);
|
|
|
|
|
|
|
|
+#if ARCH(X86_64)
|
|
// Userspace flags might be invalid for function entry, according to SYSV ABI (section 3.2.1).
|
|
// Userspace flags might be invalid for function entry, according to SYSV ABI (section 3.2.1).
|
|
// Set them to a known-good value to avoid weird handler misbehavior.
|
|
// Set them to a known-good value to avoid weird handler misbehavior.
|
|
// Only IF (and the reserved bit 1) are set.
|
|
// Only IF (and the reserved bit 1) are set.
|
|
-#if ARCH(I386)
|
|
|
|
- regs.set_flags(2 | (regs.eflags & ~safe_eflags_mask));
|
|
|
|
-#elif ARCH(X86_64)
|
|
|
|
regs.set_flags(2 | (regs.rflags & ~safe_eflags_mask));
|
|
regs.set_flags(2 | (regs.rflags & ~safe_eflags_mask));
|
|
#endif
|
|
#endif
|
|
|
|
|