/*
 *  Copyright (C) 2011 Texas Instruments Incorporated
 *  Author: Mark Salter <msalter@redhat.com>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 */
#ifndef _ASM_C6X_SWAB_H
#define _ASM_C6X_SWAB_H

static inline __attribute_const__ __u16 __c6x_swab16(__u16 val)
{
	asm("swap4 .l1 %0,%0\n" : "+a"(val));
	return val;
}

static inline __attribute_const__ __u32 __c6x_swab32(__u32 val)
{
	asm("swap4 .l1 %0,%0\n"
	    "swap2 .l1 %0,%0\n"
	    : "+a"(val));
	return val;
}

static inline __attribute_const__ __u64 __c6x_swab64(__u64 val)
{
	asm("   swap2 .s1 %p0,%P0\n"
	    "|| swap2 .l1 %P0,%p0\n"
	    "   swap4 .l1 %p0,%p0\n"
	    "   swap4 .l1 %P0,%P0\n"
	    : "+a"(val));
	return val;
}

static inline __attribute_const__ __u32 __c6x_swahw32(__u32 val)
{
	asm("swap2 .l1 %0,%0\n" : "+a"(val));
	return val;
}

static inline __attribute_const__ __u32 __c6x_swahb32(__u32 val)
{
	asm("swap4 .l1 %0,%0\n" : "+a"(val));
	return val;
}

#define __arch_swab16 __c6x_swab16
#define __arch_swab32 __c6x_swab32
#define __arch_swab64 __c6x_swab64
#define __arch_swahw32 __c6x_swahw32
#define __arch_swahb32 __c6x_swahb32

#endif /* _ASM_C6X_SWAB_H */
