root/arch/c6x/include/uapi/asm/swab.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __c6x_swab16
  2. __c6x_swab32
  3. __c6x_swab64
  4. __c6x_swahw32
  5. __c6x_swahb32

   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 
  13 static inline __attribute_const__ __u16 __c6x_swab16(__u16 val)
  14 {
  15         asm("swap4 .l1 %0,%0\n" : "+a"(val));
  16         return val;
  17 }
  18 
  19 static 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 
  27 static 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 
  37 static inline __attribute_const__ __u32 __c6x_swahw32(__u32 val)
  38 {
  39         asm("swap2 .l1 %0,%0\n" : "+a"(val));
  40         return val;
  41 }
  42 
  43 static 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 */

/* [<][>][^][v][top][bottom][index][help] */