The _cas code in `atomic.nim` for `tcc` of windows is disabled. 
    
    
    elif defined(tcc) and not defined(windows):
      when defined(amd64):
        {.emit:"""
    static int __tcc_cas(int *ptr, int oldVal, int newVal)
    {
        unsigned char ret;
        __asm__ __volatile__ (
                "  lock\n"
                "  cmpxchgq %2,%1\n"
                "  sete %0\n"
                : "=q" (ret), "=m" (*ptr)
                : "r" (newVal), "m" (*ptr), "a" (oldVal)
                : "memory");
        
        if (ret)
          return 0;
        else
          return 1;
    }
    """.}
      else:
        assert sizeof(int) == 4
        {.emit:"""
    static int __tcc_cas(int *ptr, int oldVal, int newVal)
    {
        unsigned char ret;
        __asm__ __volatile__ (
                "  lock\n"
                "  cmpxchgl %2,%1\n"
                "  sete %0\n"
                : "=q" (ret), "=m" (*ptr)
                : "r" (newVal), "m" (*ptr), "a" (oldVal)
                : "memory");
        
        if (ret)
          return 0;
        else
          return 1;
    }
    """.}
      
      proc tcc_cas(p: ptr int; oldValue, newValue: int): bool
        {.importc: "__tcc_cas", nodecl.}
    

The code seems fine, is there any potential problem with the code in windows? 

Reply via email to