unaligned.h 767 B

12345678910111213141516171819202122232425262728
  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. #ifndef _XTENSA_UNALIGNED_H
  13. #define _XTENSA_UNALIGNED_H
  14. #include <linux/string.h>
  15. /* Use memmove here, so gcc does not insert a __builtin_memcpy. */
  16. #define get_unaligned(ptr) \
  17. ({ __typeof__(*(ptr)) __tmp; memmove(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })
  18. #define put_unaligned(val, ptr) \
  19. ({ __typeof__(*(ptr)) __tmp = (val); \
  20. memmove((ptr), &__tmp, sizeof(*(ptr))); \
  21. (void)0; })
  22. #endif /* _XTENSA_UNALIGNED_H */