--- 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()