Skip to content

Commit

Permalink
[MIPS] MIPS R2 optimized endianess swapping.
Browse files Browse the repository at this point in the history
From Franck Bui-Huu <vagabon.xyz@gmail.com> with modifications by me.
    
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Ralf Baechle committed Feb 7, 2006
1 parent 7e5b24a commit 1e32cee
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions include/asm-mips/byteorder.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,39 @@
#ifndef _ASM_BYTEORDER_H
#define _ASM_BYTEORDER_H

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

#ifdef __GNUC__

#ifdef CONFIG_CPU_MIPSR2

static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x)
{
__asm__(
" wsbh %0, %1 \n"
: "=r" (x)
: "r" (x));

return x;
}
#define __arch__swab16(x) ___arch__swab16(x)

static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
{
__asm__(
" wsbh %0, %1 \n"
" rotr %0, %0, 16 \n"
: "=r" (x)
: "r" (x));

return x;
}
#define __arch__swab32(x) ___arch__swab32(x)

#endif /* CONFIG_CPU_MIPSR2 */

#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
# define __BYTEORDER_HAS_U64__
# define __SWAB_64_THRU_32__
Expand Down

0 comments on commit 1e32cee

Please sign in to comment.