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