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