Xenomai 3.3.2
Loading...
Searching...
No Matches
machine.h
1/*
2 * SPDX-License-Identifier: GPL-2.0
3 *
4 * Copyright (C) 2015 Dmitriy Cherkasov <dmitriy@mperpetuo.com>
5 */
6
7#ifndef _COBALT_ARM64_MACHINE_H
8#define _COBALT_ARM64_MACHINE_H
9
10#include <linux/version.h>
11#include <asm/byteorder.h>
12#include <cobalt/kernel/assert.h>
13
14/* D-side always behaves as PIPT on AArch64 (see arch/arm64/include/asm/cachetype.h) */
15#define xnarch_cache_aliasing() 0
16
17static inline __attribute_const__ unsigned long ffnz(unsigned long ul)
18{
19 int __r;
20
21 /* zero input is not valid */
22 XENO_WARN_ON(COBALT, ul == 0);
23
24 __asm__ ("rbit\t%0, %1\n"
25 "clz\t%0, %0\n"
26 : "=r" (__r) : "r"(ul) : "cc");
27
28 return __r;
29}
30
31#include <asm-generic/xenomai/machine.h>
32
33#endif /* !_COBALT_ARM64_MACHINE_H */