Commit aa0effbd authored by Harvey Harrison's avatar Harvey Harrison Committed by Linus Torvalds

cris: introduce asm/swab.h

Adjust the arch overrides to the new names as well.
Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5bf431fa
#ifndef _CRIS_ARCH_BYTEORDER_H #ifndef _CRIS_ARCH_SWAB_H
#define _CRIS_ARCH_BYTEORDER_H #define _CRIS_ARCH_SWAB_H
#include <asm/types.h> #include <asm/types.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#define __SWAB_64_THRU_32__
/* we just define these two (as we can do the swap in a single /* we just define these two (as we can do the swap in a single
* asm instruction in CRIS) and the arch-independent files will put * asm instruction in CRIS) and the arch-independent files will put
* them together into ntohl etc. * them together into ntohl etc.
*/ */
static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
{ {
__asm__ ("swapwb %0" : "=r" (x) : "0" (x)); __asm__ ("swapwb %0" : "=r" (x) : "0" (x));
return(x); return(x);
} }
#define __arch_swab32 __arch_swab32
static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) static inline __attribute_const__ __u16 __arch_swab16(__u16 x)
{ {
__asm__ ("swapb %0" : "=r" (x) : "0" (x)); __asm__ ("swapb %0" : "=r" (x) : "0" (x));
return(x); return(x);
} }
#define __arch_swab16 __arch_swab16
#endif #endif
#ifndef _ASM_CRIS_ARCH_BYTEORDER_H #ifndef _ASM_CRIS_ARCH_SWAB_H
#define _ASM_CRIS_ARCH_BYTEORDER_H #define _ASM_CRIS_ARCH_SWAB_H
#include <asm/types.h> #include <asm/types.h>
#define __SWAB_64_THRU_32__
static inline __const__ __u32 static inline __const__ __u32
___arch__swab32(__u32 x) __arch_swab32(__u32 x)
{ {
__asm__ __volatile__ ("swapwb %0" : "=r" (x) : "0" (x)); __asm__ __volatile__ ("swapwb %0" : "=r" (x) : "0" (x));
return (x); return (x);
} }
#define __arch_swab32 __arch_swab32
static inline __const__ __u16 static inline __const__ __u16
___arch__swab16(__u16 x) __arch_swab16(__u16 x)
{ {
__asm__ __volatile__ ("swapb %0" : "=r" (x) : "0" (x)); __asm__ __volatile__ ("swapb %0" : "=r" (x) : "0" (x));
return (x); return (x);
} }
#define __arch_swab16 __arch_swab16
#endif /* _ASM_CRIS_ARCH_BYTEORDER_H */ #endif /* _ASM_CRIS_ARCH_SWAB_H */
...@@ -9,3 +9,4 @@ header-y += sync_serial.h ...@@ -9,3 +9,4 @@ header-y += sync_serial.h
unifdef-y += etraxgpio.h unifdef-y += etraxgpio.h
unifdef-y += rs485.h unifdef-y += rs485.h
unifdef-y += swab.h
#ifndef _CRIS_BYTEORDER_H #ifndef _CRIS_BYTEORDER_H
#define _CRIS_BYTEORDER_H #define _CRIS_BYTEORDER_H
#ifdef __GNUC__ #include <asm/swab.h>
#ifdef __KERNEL__
#include <arch/byteorder.h>
/* defines are necessary because the other files detect the presence
* of a defined __arch_swab32, not an inline
*/
#define __arch__swab32(x) ___arch__swab32(x)
#define __arch__swab16(x) ___arch__swab16(x)
#endif /* __KERNEL__ */
#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
# define __BYTEORDER_HAS_U64__
# define __SWAB_64_THRU_32__
#endif
#endif /* __GNUC__ */
#include <linux/byteorder/little_endian.h> #include <linux/byteorder/little_endian.h>
#endif #endif
......
#ifndef _CRIS_SWAB_H
#define _CRIS_SWAB_H
#ifdef __KERNEL__
#include <arch/swab.h>
#endif /* __KERNEL__ */
#endif /* _CRIS_SWAB_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment