[Bug 18787] Implement interlocked.c for Solaris/x86 using Sun C
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Jun 5 13:50:54 CDT 2009
http://bugs.winehq.org/show_bug.cgi?id=18787
--- Comment #2 from Patrick Baggett <baggett.patrick at gmail.com> 2009-06-05 13:50:53 ---
No, I haven't tested it, but given the trivial nature of the functions (3-5
instructions), it is sufficient to simply check the instructions generated.
Using objdump I find that they all have correct assembly language code. Any x86
programmer may verify the code generated below:
00000060 <interlocked_cmpxchg>:
60: 8b 44 24 0c mov 0xc(%esp),%eax
64: 8b 4c 24 08 mov 0x8(%esp),%ecx
68: 8b 54 24 04 mov 0x4(%esp),%edx
6c: f0 0f b1 0a lock cmpxchg %ecx,(%edx)
70: c3 ret
0000007c <interlocked_cmpxchg_ptr>:
7c: 8b 44 24 0c mov 0xc(%esp),%eax
80: 8b 4c 24 08 mov 0x8(%esp),%ecx
84: 8b 54 24 04 mov 0x4(%esp),%edx
88: f0 0f b1 0a lock cmpxchg %ecx,(%edx)
8c: c3 ret
00000098 <interlocked_cmpxchg64>:
98: 53 push %ebx
99: 56 push %esi
9a: 8b 74 24 0c mov 0xc(%esp),%esi
9e: 8b 5c 24 10 mov 0x10(%esp),%ebx
a2: 8b 4c 24 14 mov 0x14(%esp),%ecx
a6: 8b 44 24 18 mov 0x18(%esp),%eax
aa: 8b 54 24 1c mov 0x1c(%esp),%edx
ae: f0 0f c7 0e lock cmpxchg8b (%esi)
b2: 5e pop %esi
b3: 5b pop %ebx
b4: c3 ret
000000c0 <interlocked_xchg>:
c0: 8b 44 24 08 mov 0x8(%esp),%eax
c4: 8b 54 24 04 mov 0x4(%esp),%edx
c8: f0 87 02 lock xchg %eax,(%edx)
cb: c3 ret
000000d8 <interlocked_xchg_ptr>:
d8: 8b 44 24 08 mov 0x8(%esp),%eax
dc: 8b 54 24 04 mov 0x4(%esp),%edx
e0: f0 87 02 lock xchg %eax,(%edx)
e3: c3 ret
000000f0 <interlocked_xchg_add>:
f0: 8b 44 24 08 mov 0x8(%esp),%eax
f4: 8b 54 24 04 mov 0x4(%esp),%edx
f8: f0 0f c1 02 lock xadd %eax,(%edx)
fc: c3 ret
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list