1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * Copyright (C) 2011 Texas Instruments Incorporated 4 * Author: Mark Salter <msalter@redhat.com> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10 #ifndef _ASM_C6X_SWAB_H 11 #define _ASM_C6X_SWAB_H 12 __c6x_swab16(__u16 val)13static inline __attribute_const__ __u16 __c6x_swab16(__u16 val) 14 { 15 asm("swap4 .l1 %0,%0\n" : "+a"(val)); 16 return val; 17 } 18 __c6x_swab32(__u32 val)19static inline __attribute_const__ __u32 __c6x_swab32(__u32 val) 20 { 21 asm("swap4 .l1 %0,%0\n" 22 "swap2 .l1 %0,%0\n" 23 : "+a"(val)); 24 return val; 25 } 26 __c6x_swab64(__u64 val)27static inline __attribute_const__ __u64 __c6x_swab64(__u64 val) 28 { 29 asm(" swap2 .s1 %p0,%P0\n" 30 "|| swap2 .l1 %P0,%p0\n" 31 " swap4 .l1 %p0,%p0\n" 32 " swap4 .l1 %P0,%P0\n" 33 : "+a"(val)); 34 return val; 35 } 36 __c6x_swahw32(__u32 val)37static inline __attribute_const__ __u32 __c6x_swahw32(__u32 val) 38 { 39 asm("swap2 .l1 %0,%0\n" : "+a"(val)); 40 return val; 41 } 42 __c6x_swahb32(__u32 val)43static inline __attribute_const__ __u32 __c6x_swahb32(__u32 val) 44 { 45 asm("swap4 .l1 %0,%0\n" : "+a"(val)); 46 return val; 47 } 48 49 #define __arch_swab16 __c6x_swab16 50 #define __arch_swab32 __c6x_swab32 51 #define __arch_swab64 __c6x_swab64 52 #define __arch_swahw32 __c6x_swahw32 53 #define __arch_swahb32 __c6x_swahb32 54 55 #endif /* _ASM_C6X_SWAB_H */ 56