15cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison/* MN10300 Byte-order primitive construction
25cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison *
35cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
45cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison * Written by David Howells (dhowells@redhat.com)
55cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison *
65cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison * This program is free software; you can redistribute it and/or
75cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison * modify it under the terms of the GNU General Public Licence
85cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison * as published by the Free Software Foundation; either version
95cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison * 2 of the Licence, or (at your option) any later version.
105cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison */
115cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#ifndef _ASM_SWAB_H
125cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#define _ASM_SWAB_H
135cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
14bef53ca086e069a3fb8e6bf4ecf06221de9b445fJaswinder Singh Rajput#include <linux/types.h>
155cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
165cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#ifdef __GNUC__
175cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
185cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrisonstatic inline __attribute__((const))
195cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison__u32 __arch_swab32(__u32 x)
205cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison{
215cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison	__u32 ret;
225cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison	asm("swap %1,%0" : "=r" (ret) : "r" (x));
235cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison	return ret;
245cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison}
255cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#define __arch_swab32 __arch_swab32
265cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
275cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrisonstatic inline __attribute__((const))
285cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison__u16 __arch_swab16(__u16 x)
295cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison{
305cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison	__u16 ret;
315cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison	asm("swaph %1,%0" : "=r" (ret) : "r" (x));
325cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison	return ret;
335cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison}
345cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#define __arch_swab32 __arch_swab32
355cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
365cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
375cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#  define __SWAB_64_THRU_32__
385cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#endif
395cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
405cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#endif /* __GNUC__ */
415cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison
425cbd04ae36fcb8fd1f38c71dacbbe59f3166f074Harvey Harrison#endif /* _ASM_SWAB_H */
43