// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

#ifndef OPENTITAN_SW_DEVICE_LIB_BASE_STDASM_H_
#define OPENTITAN_SW_DEVICE_LIB_BASE_STDASM_H_

/**
 * @file
 * @brief The `asm` keyword.
 *
 * This header simply provides the `asm` keyword, in analogy with the ISO
 * C headers `stdbool.h`, `stdnoreturn.h`, and so on.
 */

#define asm __asm__

#endif  // OPENTITAN_SW_DEVICE_LIB_BASE_STDASM_H_
