| unsigned long __cdecl _byteswap_ulong (unsigned long _Long); |
| |
| unsigned long __cdecl _byteswap_ulong (unsigned long _Long) |
| { |
| #if defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__) |
| unsigned long retval; |
| __asm__ __volatile__ ("bswapl %[retval]" : [retval] "=rm" (retval) : "[retval]" (_Long)); |
| return retval; |
| #else |
| unsigned char *b = (void*)&_Long; |
| unsigned char tmp; |
| tmp = b[0]; |
| b[0] = b[3]; |
| b[3] = tmp; |
| tmp = b[1]; |
| b[1] = b[2]; |
| b[2] = tmp; |
| return _Long; |
| #endif /* defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__) */ |
| } |