| /* |
| * Copyright (c) 2016 Jean-Paul Etienne <fractalclone@gmail.com> |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @file |
| * @brief Kernel event logger support for RISCV32 |
| */ |
| |
| #ifndef __KERNEL_EVENT_LOGGER_ARCH_H__ |
| #define __KERNEL_EVENT_LOGGER_ARCH_H__ |
| |
| #include <arch/cpu.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * @brief Get the identification of the current interrupt. |
| * |
| * This routine obtain the key of the interrupt that is currently processed |
| * if it is called from an IRQ context. |
| * |
| * @return The key of the interrupt that is currently being processed. |
| */ |
| static inline int _sys_current_irq_key_get(void) |
| { |
| u32_t mcause; |
| |
| __asm__ volatile("csrr %0, mcause" : "=r" (mcause)); |
| |
| mcause &= SOC_MCAUSE_EXP_MASK; |
| |
| return mcause; |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __KERNEL_EVENT_LOGGER_ARCH_H__ */ |