home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-xtensa / unaligned.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  767 b   |  29 lines

  1. /*
  2.  * include/asm-xtensa/unaligned.h
  3.  *
  4.  * Xtensa doesn't handle unaligned accesses efficiently.
  5.  *
  6.  * This file is subject to the terms and conditions of the GNU General Public
  7.  * License.  See the file "COPYING" in the main directory of this archive
  8.  * for more details.
  9.  *
  10.  * Copyright (C) 2001 - 2005 Tensilica Inc.
  11.  */
  12.  
  13. #ifndef _XTENSA_UNALIGNED_H
  14. #define _XTENSA_UNALIGNED_H
  15.  
  16. #include <linux/string.h>
  17.  
  18. /* Use memmove here, so gcc does not insert a __builtin_memcpy. */
  19.  
  20. #define get_unaligned(ptr) \
  21.   ({ __typeof__(*(ptr)) __tmp; memmove(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })
  22.  
  23. #define put_unaligned(val, ptr)                \
  24.   ({ __typeof__(*(ptr)) __tmp = (val);            \
  25.      memmove((ptr), &__tmp, sizeof(*(ptr)));        \
  26.      (void)0; })
  27.  
  28. #endif    /* _XTENSA_UNALIGNED_H */
  29.