openrisc: Add unaligned support
Copied directly from Linux header file Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
e83bd38479
commit
72f26b709f
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* OpenRISC Linux
|
||||
*
|
||||
* Linux architectural port borrowing liberally from similar works of
|
||||
* others. All original copyrights apply as per the original source
|
||||
* declaration.
|
||||
*
|
||||
* OpenRISC implementation:
|
||||
* Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
|
||||
* Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
|
||||
* et al.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_OPENRISC_UNALIGNED_H
|
||||
#define __ASM_OPENRISC_UNALIGNED_H
|
||||
|
||||
/*
|
||||
* This is copied from the generic implementation and the C-struct
|
||||
* variant replaced with the memmove variant. The GCC compiler
|
||||
* for the OR32 arch optimizes too aggressively for the C-struct
|
||||
* variant to work, so use the memmove variant instead.
|
||||
*
|
||||
* It may be worth considering implementing the unaligned access
|
||||
* exception handler and allowing unaligned accesses (access_ok.h)...
|
||||
* not sure if it would be much of a performance win without further
|
||||
* investigation.
|
||||
*/
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#if defined(__LITTLE_ENDIAN)
|
||||
# include <linux/unaligned/le_memmove.h>
|
||||
# include <linux/unaligned/be_byteshift.h>
|
||||
# include <linux/unaligned/generic.h>
|
||||
# define get_unaligned __get_unaligned_le
|
||||
# define put_unaligned __put_unaligned_le
|
||||
#elif defined(__BIG_ENDIAN)
|
||||
# include <linux/unaligned/be_memmove.h>
|
||||
# include <linux/unaligned/le_byteshift.h>
|
||||
# include <linux/unaligned/generic.h>
|
||||
# define get_unaligned __get_unaligned_be
|
||||
# define put_unaligned __put_unaligned_be
|
||||
#else
|
||||
# error need to define endianess
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_OPENRISC_UNALIGNED_H */
|
Loading…
Reference in New Issue