diff --git a/kernel/trunk/posix/futex.inc b/kernel/trunk/posix/futex.inc index 79e385788f..09edc92dab 100644 --- a/kernel/trunk/posix/futex.inc +++ b/kernel/trunk/posix/futex.inc @@ -185,13 +185,12 @@ align 4 lea esi, [ebp + FUTEX.wait_list] list_add_tail esp, esi ;esp= new waiter, esi= list head - sti .again_timeout: + mov [ebx + APPDATA.state], TSTATE_WAITING call change_task mov eax, [ebx + APPDATA.wait_param] test eax, eax jz .timeout - DEBUGF 1, "FUTEX no timeout [ecx]=%x edx=%x\n", [ecx], edx mov eax, edx lock cmpxchg [ecx], edx jz .again_timeout @@ -205,11 +204,8 @@ align 4 ret .timeout: - cli list_del esp - sti add esp, sizeof.MUTEX_WAITER - DEBUGF 1, "FUTEX timeout\n" popfd mov [esp + SYSCALL_STACK.eax], -1 ret