1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun #ifndef _M68K_SWAB_H 3*4882a593Smuzhiyun #define _M68K_SWAB_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/types.h> 6*4882a593Smuzhiyun #include <linux/compiler.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #define __SWAB_64_THRU_32__ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #if defined (__mcfisaaplus__) || defined (__mcfisac__) __arch_swab32(__u32 val)11*4882a593Smuzhiyunstatic inline __attribute_const__ __u32 __arch_swab32(__u32 val) 12*4882a593Smuzhiyun { 13*4882a593Smuzhiyun __asm__("byterev %0" : "=d" (val) : "0" (val)); 14*4882a593Smuzhiyun return val; 15*4882a593Smuzhiyun } 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define __arch_swab32 __arch_swab32 18*4882a593Smuzhiyun #elif !defined(__mcoldfire__) 19*4882a593Smuzhiyun __arch_swab32(__u32 val)20*4882a593Smuzhiyunstatic inline __attribute_const__ __u32 __arch_swab32(__u32 val) 21*4882a593Smuzhiyun { 22*4882a593Smuzhiyun __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val)); 23*4882a593Smuzhiyun return val; 24*4882a593Smuzhiyun } 25*4882a593Smuzhiyun #define __arch_swab32 __arch_swab32 26*4882a593Smuzhiyun #endif 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #endif /* _M68K_SWAB_H */ 29