Loading...
Searching...
No Matches
 
 
 
 
 
   39#define TDS_GET_A1LE(ptr)  (((uint8_t *)(ptr))[0]) 
   40#define TDS_GET_A1BE(ptr)  TDS_GET_A1LE(ptr) 
   41#define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr) 
   42#define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr) 
   44#define TDS_PUT_A1LE(ptr,val)  do { ((uint8_t *)(ptr))[0] = (val); } while(0) 
   45#define TDS_PUT_A1BE(ptr,val)  TDS_PUT_A1LE(ptr,val) 
   46#define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val) 
   47#define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val) 
   50#define TDS_GET_UA2LE(ptr) (((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0]) 
   51#define TDS_GET_UA2BE(ptr) (((uint8_t *)(ptr))[0] * 0x100u + ((uint8_t *)(ptr))[1]) 
   52#define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr) 
   53#define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr) 
   55#define TDS_PUT_UA2LE(ptr,val) do {\ 
   56 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0) 
   57#define TDS_PUT_UA2BE(ptr,val) do {\ 
   58 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[1] = (uint8_t)(val); } while(0) 
   59#define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val) 
   60#define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val) 
   63#define TDS_GET_UA4LE(ptr) \ 
   64    (((uint8_t *)(ptr))[3] * 0x1000000u + ((uint8_t *)(ptr))[2] * 0x10000u +\ 
   65     ((uint8_t *)(ptr))[1] * 0x100u + ((uint8_t *)(ptr))[0]) 
   66#define TDS_GET_UA4BE(ptr) \ 
   67    (((uint8_t *)(ptr))[0] * 0x1000000u + ((uint8_t *)(ptr))[1] * 0x10000u +\ 
   68     ((uint8_t *)(ptr))[2] * 0x100u + ((uint8_t *)(ptr))[3]) 
   69#define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr) 
   70#define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr) 
   72#define TDS_PUT_UA4LE(ptr,val) do {\ 
   73 ((uint8_t *)(ptr))[3] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>16);\ 
   74 ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[0] = (uint8_t)(val); } while(0) 
   75#define TDS_PUT_UA4BE(ptr,val) do {\ 
   76 ((uint8_t *)(ptr))[0] = (uint8_t)((val)>>24); ((uint8_t *)(ptr))[1] = (uint8_t)((val)>>16);\ 
   77 ((uint8_t *)(ptr))[2] = (uint8_t)((val)>>8); ((uint8_t *)(ptr))[3] = (uint8_t)(val); } while(0) 
   78#define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val) 
   79#define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val) 
   82#  define TDS_MAY_ALIAS __attribute__((__may_alias__)) 
  100# define TDS_GET_A1(ptr)  TDS_GET_A1BE(ptr) 
  101# define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr) 
  102# define TDS_GET_A2(ptr)  TDS_GET_A2BE(ptr) 
  103# define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr) 
  104# define TDS_GET_A4(ptr)  TDS_GET_A4BE(ptr) 
  105# define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr) 
  108# define TDS_GET_A2BE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi) 
  109# define TDS_GET_A4BE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui) 
  111# define TDS_PUT_A1(ptr,val)  TDS_PUT_A1BE(ptr,val) 
  112# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val) 
  113# define TDS_PUT_A2(ptr,val)  TDS_PUT_A2BE(ptr,val) 
  114# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val) 
  115# define TDS_PUT_A4(ptr,val)  TDS_PUT_A4BE(ptr,val) 
  116# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val) 
  119# define TDS_PUT_A2BE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val)) 
  120# define TDS_PUT_A4BE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val)) 
  121# define TDS_HOST2LE(val) TDS_BYTE_SWAP16(val) 
  122# define TDS_HOST4LE(val) TDS_BYTE_SWAP32(val) 
  123# define TDS_HOST2BE(val) (val) 
  124# define TDS_HOST4BE(val) (val) 
  126# define TDS_GET_A1(ptr)  TDS_GET_A1LE(ptr) 
  127# define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr) 
  128# define TDS_GET_A2(ptr)  TDS_GET_A2LE(ptr) 
  129# define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr) 
  130# define TDS_GET_A4(ptr)  TDS_GET_A4LE(ptr) 
  131# define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr) 
  134# define TDS_GET_A2LE(ptr) (((TDS_BYTE_CONVERT2*)(ptr))->usi) 
  135# define TDS_GET_A4LE(ptr) (((TDS_BYTE_CONVERT4*)(ptr))->ui) 
  137# define TDS_PUT_A1(ptr,val)  TDS_PUT_A1LE(ptr,val) 
  138# define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val) 
  139# define TDS_PUT_A2(ptr,val)  TDS_PUT_A2LE(ptr,val) 
  140# define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val) 
  141# define TDS_PUT_A4(ptr,val)  TDS_PUT_A4LE(ptr,val) 
  142# define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val) 
  145# define TDS_PUT_A2LE(ptr,val) (((TDS_BYTE_CONVERT2*)(ptr))->usi = (val)) 
  146# define TDS_PUT_A4LE(ptr,val) (((TDS_BYTE_CONVERT4*)(ptr))->ui = (val)) 
  147# define TDS_HOST2LE(val) (val) 
  148# define TDS_HOST4LE(val) (val) 
  149# define TDS_HOST2BE(val) TDS_BYTE_SWAP16(val) 
  150# define TDS_HOST4BE(val) TDS_BYTE_SWAP32(val) 
  155#if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\ 
  156  defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) ||\ 
  157  defined(__s390__) || defined(__s390x__) || defined(__m68k__) ||\ 
  158  (defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86) || defined(_M_X64))) ||\ 
  159  defined(__ARM_FEATURE_UNALIGNED) ||\ 
  160  defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_8__) ||\ 
  161  (defined(_M_ARM) && (_M_ARM >= 7)) 
  162# ifdef WORDS_BIGENDIAN 
  165#  define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr) 
  166#  define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr) 
  170#  define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val) 
  171#  define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val) 
  175#  define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr) 
  176#  define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr) 
  180#  define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val) 
  181#  define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val) 
  188#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && defined(__OPTIMIZE__) 
  189# define TDS_BSWAP16(val) __builtin_bswap16(val) 
  190# define TDS_BSWAP32(val) __builtin_bswap32(val) 
  192#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && defined(__OPTIMIZE__) 
  193# define TDS_BSWAP32(val) __builtin_bswap32(val) 
  194#elif defined(_MSC_VER) 
  195# define TDS_BSWAP16(val) _byteswap_ushort(val) 
  196# define TDS_BSWAP32(val) _byteswap_ulong(val) 
  199#if defined(TDS_BSWAP16) && !defined(WORDS_BIGENDIAN) 
  201# define TDS_GET_UA2BE(ptr) TDS_BSWAP16(TDS_GET_UA2LE(ptr)) 
  204# define TDS_PUT_UA2BE(ptr,val) do {\ 
  205   uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0) 
  206#elif defined(TDS_BSWAP16) && defined(WORDS_BIGENDIAN) 
  208# define TDS_GET_UA2LE(ptr) TDS_BSWAP16(TDS_GET_UA2BE(ptr)) 
  211# define TDS_PUT_UA2LE(ptr,val) do {\ 
  212   uint16_t _tds_si = TDS_BSWAP16(val); TDS_PUT_UA2BE(ptr,_tds_si); } while(0) 
  215#if defined(TDS_BSWAP32) && !defined(WORDS_BIGENDIAN) 
  217# define TDS_GET_UA4BE(ptr) TDS_BSWAP32(TDS_GET_UA4LE(ptr)) 
  220# define TDS_PUT_UA4BE(ptr,val) do {\ 
  221   uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0) 
  222#elif defined(TDS_BSWAP32) && defined(WORDS_BIGENDIAN) 
  224# define TDS_GET_UA4LE(ptr) TDS_BSWAP32(TDS_GET_UA4BE(ptr)) 
  227# define TDS_PUT_UA4LE(ptr,val) do {\ 
  228   uint32_t _tds_i = TDS_BSWAP32(val); TDS_PUT_UA4BE(ptr,_tds_i); } while(0) 
  231#if defined(__GNUC__) && defined(__powerpc__) && defined(WORDS_BIGENDIAN) 
  234static inline uint16_t
 
  235TDS_GET_UA2LE(
void *ptr)
 
  238    __asm__ (
"lhbrx %0,0,%1\n" : 
"=r" (res) : 
"r" (ptr), 
"m"(*(uint16_t *)ptr));
 
  239    return (uint16_t) res;
 
  241static inline uint32_t
 
  242TDS_GET_UA4LE(
void *ptr)
 
  245    __asm__ (
"lwbrx %0,0,%1\n" : 
"=r" (res) : 
"r" (ptr), 
"m"(*(uint32_t *)ptr));
 
  246    return (uint32_t) res;
 
  252TDS_PUT_UA2LE(
void *ptr, 
unsigned data)
 
  254    __asm__ (
"sthbrx %1,0,%2\n" : 
"=m" (*(uint16_t *)ptr) : 
"r" (data), 
"r" (ptr));
 
  257TDS_PUT_UA4LE(
void *ptr, 
unsigned data)
 
  259    __asm__ (
"stwbrx %1,0,%2\n" : 
"=m" (*(uint32_t *)ptr) : 
"r" (data), 
"r" (ptr));