bcmendian.h
上传用户:yuanda199
上传日期:2022-06-26
资源大小:412k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /*
  2.     Copyright 2001, Broadcom Corporation
  3.     All Rights Reserved.
  4.     
  5.     This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
  6.     the contents of this file may not be disclosed to third parties, copied or
  7.     duplicated in any form, in whole or in part, without the prior written
  8.     permission of Broadcom Corporation.
  9. */
  10. /*******************************************************************************
  11.  * $Id: bcmendian.h,v 1.1 Broadcom SDK $
  12.  * local version of endian.h - byte order defines
  13.  ******************************************************************************/
  14. #ifndef _BCMENDIAN_H_
  15. #define _BCMENDIAN_H_
  16. #include <hnbutypedefs.h>
  17. /* Byte swap a 16 bit value */
  18. #define BCMSWAP16(val) 
  19. ((uint16)( 
  20. (((uint16)(val) & (uint16)0x00ffU) << 8) | 
  21. (((uint16)(val) & (uint16)0xff00U) >> 8) ))
  22. /* Byte swap a 32 bit value */
  23. #define BCMSWAP32(val) 
  24. ((uint32)( 
  25. (((uint32)(val) & (uint32)0x000000ffUL) << 24) | 
  26. (((uint32)(val) & (uint32)0x0000ff00UL) <<  8) | 
  27. (((uint32)(val) & (uint32)0x00ff0000UL) >>  8) | 
  28. (((uint32)(val) & (uint32)0xff000000UL) >> 24) ))
  29. static INLINE uint16
  30. bcmswap16(uint16 val)
  31. {
  32. return BCMSWAP16(val);
  33. }
  34. static INLINE uint32
  35. bcmswap32(uint32 val)
  36. {
  37. return BCMSWAP32(val);
  38. }
  39. /* buf - start of buffer of shorts to swap */
  40. /* len  - byte length of buffer */
  41. static INLINE void
  42. bcmswap16_buf(uint16 *buf, uint len)
  43. {
  44. len = len/2;
  45. while(len--){
  46. *buf = bcmswap16(*buf);
  47. buf++;
  48. }
  49. }
  50. #ifndef hton16
  51. #ifndef IL_BIGENDIAN
  52. #define HTON16(i) BCMSWAP16(i)
  53. #define hton16(i) bcmswap16(i)
  54. #define hton32(i) bcmswap32(i)
  55. #define ntoh16(i) bcmswap16(i)
  56. #define ntoh32(i) bcmswap32(i)
  57. #define ltoh16(i) (i)
  58. #define ltoh32(i) (i)
  59. #define htol16(i) (i)
  60. #define htol32(i) (i)
  61. #else
  62. #define HTON16(i) (i)
  63. #define hton16(i) (i)
  64. #define hton32(i) (i)
  65. #define ntoh16(i) (i)
  66. #define ntoh32(i) (i)
  67. #define ltoh16(i) bcmswap16(i)
  68. #define ltoh32(i) bcmswap32(i)
  69. #define htol16(i) bcmswap16(i)
  70. #define htol32(i) bcmswap32(i)
  71. #endif
  72. #endif
  73. #ifndef IL_BIGENDIAN
  74. #define ltoh16_buf(buf, i)
  75. #define htol16_buf(buf, i)
  76. #else
  77. #define ltoh16_buf(buf, i) bcmswap16_buf((uint16*)buf, i)
  78. #define htol16_buf(buf, i) bcmswap16_buf((uint16*)buf, i)
  79. #endif
  80. #endif /* _BCMENDIAN_H_ */