Commit | Line | Data |
---|---|---|
9a8fd558 CZ |
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 */ |