1 /* MN10300 Byte-order primitive construction 2 * 3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 4 * Written by David Howells (dhowells@redhat.com) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public Licence 8 * as published by the Free Software Foundation; either version 9 * 2 of the Licence, or (at your option) any later version. 10 */ 11 #ifndef _ASM_SWAB_H 12 #define _ASM_SWAB_H 13 14 #include <linux/types.h> 15 16 #ifdef __GNUC__ 17 18 static inline __attribute__((const)) __arch_swab32(__u32 x)19__u32 __arch_swab32(__u32 x) 20 { 21 __u32 ret; 22 asm("swap %1,%0" : "=r" (ret) : "r" (x)); 23 return ret; 24 } 25 #define __arch_swab32 __arch_swab32 26 27 static inline __attribute__((const)) __arch_swab16(__u16 x)28__u16 __arch_swab16(__u16 x) 29 { 30 __u16 ret; 31 asm("swaph %1,%0" : "=r" (ret) : "r" (x)); 32 return ret; 33 } 34 #define __arch_swab32 __arch_swab32 35 36 #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) 37 # define __SWAB_64_THRU_32__ 38 #endif 39 40 #endif /* __GNUC__ */ 41 42 #endif /* _ASM_SWAB_H */ 43