brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 463407d Raw
34 lines · c
1//===---------------------- Darwin syscalls ---------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_SRC___SUPPORT_OSUTIL_DARWIN_SYSCALL_H10#define LLVM_LIBC_SRC___SUPPORT_OSUTIL_DARWIN_SYSCALL_H11 12#include "src/__support/CPP/bit.h"13#include "src/__support/common.h"14#include "src/__support/macros/config.h"15#include "src/__support/macros/properties/architectures.h"16 17#ifdef LIBC_TARGET_ARCH_IS_ANY_ARM18#include "aarch64/syscall.h"19#else20#error "Unsupported architecture"21#endif22 23namespace LIBC_NAMESPACE_DECL {24 25template <typename R, typename... Ts>26LIBC_INLINE R syscall_impl(long __number, Ts... ts) {27  static_assert(sizeof...(Ts) <= 6, "Too many arguments for syscall");28  return cpp::bit_or_static_cast<R>(syscall_impl(__number, (long)ts...));29}30 31} // namespace LIBC_NAMESPACE_DECL32 33#endif // LLVM_LIBC_SRC___SUPPORT_OSUTIL_DARWIN_SYSCALL_H34