[PATCH] __get_unaligned() gcc-4 fix
If the 'ptr' is a const, this code cause "assignment of read-only variable" error on gcc 4.x. Use __u64 instead of __typeof__(*(ptr)) for temporary variable to get rid of errors on gcc 4.x. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Cc: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
81c29a857d
commit
707ced0d71
1 changed files with 2 additions and 2 deletions
|
@ -78,7 +78,7 @@ static inline void __ustw(__u16 val, __u16 *addr)
|
||||||
|
|
||||||
#define __get_unaligned(ptr, size) ({ \
|
#define __get_unaligned(ptr, size) ({ \
|
||||||
const void *__gu_p = ptr; \
|
const void *__gu_p = ptr; \
|
||||||
__typeof__(*(ptr)) val; \
|
__u64 val; \
|
||||||
switch (size) { \
|
switch (size) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
val = *(const __u8 *)__gu_p; \
|
val = *(const __u8 *)__gu_p; \
|
||||||
|
@ -95,7 +95,7 @@ static inline void __ustw(__u16 val, __u16 *addr)
|
||||||
default: \
|
default: \
|
||||||
bad_unaligned_access_length(); \
|
bad_unaligned_access_length(); \
|
||||||
}; \
|
}; \
|
||||||
val; \
|
(__typeof__(*(ptr)))val; \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define __put_unaligned(val, ptr, size) \
|
#define __put_unaligned(val, ptr, size) \
|
||||||
|
|
Loading…
Add table
Reference in a new issue