diff -r a179b74831c9 -r c1f20ce4abcf kernel/eka/euser/epoc/x86/uc_utl.cia --- a/kernel/eka/euser/epoc/x86/uc_utl.cia Thu Aug 19 11:14:22 2010 +0300 +++ b/kernel/eka/euser/epoc/x86/uc_utl.cia Tue Aug 31 16:34:26 2010 +0300 @@ -42,6 +42,22 @@ THISCALL_EPILOG0() } +EXPORT_C __NAKED__ TInt RFastLock::Poll() + { + THISCALL_PROLOG0() + asm("xor eax, eax "); + asm("xor edx, edx "); + asm("dec edx "); + + /* if ([ecx+4]==0) { [ecx+4]=-1; ZF=1;} else {eax=[ecx+4]; ZF=0;} */ + asm("lock cmpxchg [ecx+4], edx "); + asm("jz short fastlock_poll_done "); + asm("mov eax, %0": : "i"(KErrTimedOut)); + + asm("fastlock_poll_done: "); + THISCALL_EPILOG0() + } + EXPORT_C __NAKED__ void RFastLock::Signal() { THISCALL_PROLOG0()