>From arnd@xxxxxxxx Mon Apr 27 16:28:40 2009 References: <20090427142010.587518220@xxxxxxxx> User-Agent: quilt/0.46-1 Date: Mon, 27 Apr 2009 16:20:22 +0200 From: arnd@xxxxxxxx To: linux-kernel@xxxxxxxxxxxxxxx Cc: john.williams@xxxxxxxxxxxxx, monstr@xxxxxxxxx, linux-api@xxxxxxxxxxxxxxx, linux-arch@xxxxxxxxxxxxxxx, liqin.chen@xxxxxxxxxxxxx, Sam Ravnborg <sam@xxxxxxxxxxxx>, Harvey Harrison <harvey.harrison@xxxxxxxxx>, Remis Lima Baima <remis.developer@xxxxxxxxxxxxxx> Subject: [RFC 12/17] asm-generic: add generic unaligned.h Content-Disposition: inline; filename=0009-asm-generic-add-generic-unaligned.h.patch X-Provags-ID: V01U2FsdGVkX180uRkKPtTR6NE5qs40yQi4ziqxITkI8KKYXbv ceZfZA4rNxQHTjaGg5pO05a3RFhyObTUvhsERRtOhJTrzruub3 3XgHSsqqDkZJnfLEIfR2g== This implementation can be used by any architecture as a generic way to provide the unaligned helpers. Many architectures can override this by using linux/unaligned/access_ok.h. Cc: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> Signed-off-by: Remis Lima Baima <remis.developer@xxxxxxxxxxxxxx> --- include/asm-generic/unaligned.h | 30 30 + 0 - 0 ! 1 file changed, 30 insertions(+) create mode 100644 include/asm-generic/unaligned.h Index: linux-2.6/include/asm-generic/unaligned.h =================================================================== --- /dev/null +++ linux-2.6/include/asm-generic/unaligned.h @@ -0,0 +1,30 @@ +#ifndef __ASM_GENERIC_UNALIGNED_H +#define __ASM_GENERIC_UNALIGNED_H + +/* + * This is the most generic implementation of unaligned accesses + * and should work almost anywhere. + * + * If an architecture can handle unaligned accesses in hardware, + * it may want to use the linux/unaligned/access_ok.h implementation + * instead. + */ +#include <asm/byteorder.h> + +#if defined(__LITTLE_ENDIAN) +# include <linux/unaligned/le_struct.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_struct.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_GENERIC_UNALIGNED_H */ -- -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html