[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13979991#comment-13979991
 ] 

Joe Gamache commented on ZOOKEEPER-1635:
----------------------------------------

While the description of this bug clearly calls for one type of implementation, 
the title does not.  The remarks made simply state something, probably 
unbeknown to the vast majority of readers, is being used.  The resolution is 
"invalid".  One branch of logic would then state that "Support x64 architecture 
for Windows" is "Invalid".    While this seems clear because the link above to 
supported platforms still clearly states that windows is for "Development 
Only", can some from ZooKeeper just confirm?

Thank you.

> Support x64 architecture for Windows
> ------------------------------------
>
>                 Key: ZOOKEEPER-1635
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1635
>             Project: ZooKeeper
>          Issue Type: Improvement
>         Environment: Windows x64 systems.
>            Reporter: Tomas Gutierrez
>             Fix For: 3.5.0
>
>
> x64 target does not support _asm inline  (See: 
> http://msdn.microsoft.com/en-us/library/4ks26t93(v=vs.80).aspx)
> The proposal is to use native windows function which still valid for i386 and 
> x64 architecture.
> In order to avoid any potential break, a compilation directive has been 
> added. But, the best should be the removal of the asm part.
> -----------
> sample code
> -----------
> int32_t fetch_and_add(volatile int32_t* operand, int incr)
> {
> #ifndef WIN32
>     int32_t result;
>     asm __volatile__(
>          "lock xaddl %0,%1\n"
>          : "=r"(result), "=m"(*(int *)operand)
>          : "0"(incr)
>          : "memory");
>    return result;
> #else
> #ifdef WIN32_NOASM
>                 InterlockedExchangeAdd(operand, incr);
>                 return *operand;
> #else
>     volatile int32_t result;
>     _asm
>     {
>         mov eax, operand; //eax = v;
>        mov ebx, incr; // ebx = i;
>         mov ecx, 0x0; // ecx = 0;
>         lock xadd dword ptr [eax], ecx; 
>        lock xadd dword ptr [eax], ebx; 
>         mov result, ecx; // result = ebx;        
>      }
>      return result;*/
> #endif
> #endif
> }



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to