18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 28c2ecf20Sopenharmony_ci#ifndef _SPARC_SWAB_H 38c2ecf20Sopenharmony_ci#define _SPARC_SWAB_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <linux/types.h> 68c2ecf20Sopenharmony_ci#include <asm/asi.h> 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#if defined(__sparc__) && defined(__arch64__) 98c2ecf20Sopenharmony_cistatic inline __u16 __arch_swab16p(const __u16 *addr) 108c2ecf20Sopenharmony_ci{ 118c2ecf20Sopenharmony_ci __u16 ret; 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci __asm__ __volatile__ ("lduha [%2] %3, %0" 148c2ecf20Sopenharmony_ci : "=r" (ret) 158c2ecf20Sopenharmony_ci : "m" (*addr), "r" (addr), "i" (ASI_PL)); 168c2ecf20Sopenharmony_ci return ret; 178c2ecf20Sopenharmony_ci} 188c2ecf20Sopenharmony_ci#define __arch_swab16p __arch_swab16p 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic inline __u32 __arch_swab32p(const __u32 *addr) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci __u32 ret; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci __asm__ __volatile__ ("lduwa [%2] %3, %0" 258c2ecf20Sopenharmony_ci : "=r" (ret) 268c2ecf20Sopenharmony_ci : "m" (*addr), "r" (addr), "i" (ASI_PL)); 278c2ecf20Sopenharmony_ci return ret; 288c2ecf20Sopenharmony_ci} 298c2ecf20Sopenharmony_ci#define __arch_swab32p __arch_swab32p 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_cistatic inline __u64 __arch_swab64p(const __u64 *addr) 328c2ecf20Sopenharmony_ci{ 338c2ecf20Sopenharmony_ci __u64 ret; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci __asm__ __volatile__ ("ldxa [%2] %3, %0" 368c2ecf20Sopenharmony_ci : "=r" (ret) 378c2ecf20Sopenharmony_ci : "m" (*addr), "r" (addr), "i" (ASI_PL)); 388c2ecf20Sopenharmony_ci return ret; 398c2ecf20Sopenharmony_ci} 408c2ecf20Sopenharmony_ci#define __arch_swab64p __arch_swab64p 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci#else 438c2ecf20Sopenharmony_ci#define __SWAB_64_THRU_32__ 448c2ecf20Sopenharmony_ci#endif /* defined(__sparc__) && defined(__arch64__) */ 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#endif /* _SPARC_SWAB_H */ 47