diff --git a/cpu/native/irq_cpu.c b/cpu/native/irq_cpu.c index b4b8026dee..e107f24794 100644 --- a/cpu/native/irq_cpu.c +++ b/cpu/native/irq_cpu.c @@ -319,6 +319,7 @@ void native_isr_entry(int sig, siginfo_t *info, void *context) if (_native_in_syscall == 0) { DEBUG("\n\n\t\treturn to _native_sig_leave_tramp\n\n"); #ifdef __MACH__ + isr_set_sigmask((ucontext_t *)context); _native_in_isr = 1; _native_saved_eip = ((ucontext_t *)context)->uc_mcontext->__ss.__eip; ((ucontext_t *)context)->uc_mcontext->__ss.__eip = (unsigned int)&_native_sig_leave_tramp; diff --git a/cpu/native/tramp.S b/cpu/native/tramp.S index b7798072a0..cd269e3003 100644 --- a/cpu/native/tramp.S +++ b/cpu/native/tramp.S @@ -11,6 +11,8 @@ __native_sig_leave_tramp: call _swapcontext addl $8, %esp + call _eINT + movl $0x0, __native_in_isr popa popf