/* * SPDX-License-Identifier: GPL-2.0 * * Copyright (C) 2015 Dmitriy Cherkasov */ #ifndef _COBALT_ARM64_DOVETAIL_MACHINE_H #define _COBALT_ARM64_DOVETAIL_MACHINE_H #include #include #include /* D-side always behaves as PIPT on AArch64 (see arch/arm64/include/asm/cachetype.h) */ #define xnarch_cache_aliasing() 0 static inline __attribute_const__ unsigned long ffnz(unsigned long ul) { int __r; /* zero input is not valid */ XENO_WARN_ON(COBALT, ul == 0); __asm__ ("rbit\t%0, %1\n" "clz\t%0, %0\n" : "=r" (__r) : "r"(ul) : "cc"); return __r; } #include #endif /* !_COBALT_ARM64_DOVETAIL_MACHINE_H */