Commit 7a65eaf4 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: SH-5 byteorder routines.



Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 4690bdc7
Loading
Loading
Loading
Loading
+30 −15
Original line number Diff line number Diff line
@@ -3,26 +3,41 @@

/*
 * Copyright (C) 1999  Niibe Yutaka
 * Copyright (C) 2000, 2001  Paolo Alberelli
 */

#include <asm/types.h>
#include <linux/compiler.h>
#include <linux/types.h>

static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
{
	__asm__("swap.b	%0, %0\n\t"
	__asm__(
#ifdef CONFIG_SUPERH32
		"swap.b		%0, %0\n\t"
		"swap.w		%0, %0\n\t"
		"swap.b		%0, %0"
#else
		"byterev	%0, %0\n\t"
		"shari		%0, 32, %0"
#endif
		: "=r" (x)
		: "0" (x));

	return x;
}

static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x)
static inline __attribute_const__ __u16 ___arch__swab16(__u16 x)
{
	__asm__("swap.b %0, %0"
	__asm__(
#ifdef CONFIG_SUPERH32
		"swap.b		%0, %0"
#else
		"byterev	%0, %0\n\t"
		"shari		%0, 32, %0"

#endif
		: "=r" (x)
		:  "0" (x));

	return x;
}