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