blob: 26718a68d6a545a145f80a13546d15150014585e [file] [log] [blame]
/*
* Copyright (c) 2018 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <ztest.h>
#include <irq_offload.h>
#include <kernel_structs.h>
#if defined(CONFIG_ARM)
#include <arch/arm/cortex_m/cmsis.h>
static void trigger_irq(int irq)
{
printk("Triggering irq : %d\n", irq);
#if defined(CONFIG_SOC_TI_LM3S6965_QEMU) || defined(CONFIG_CPU_CORTEX_M0) \
|| defined(CONFIG_CPU_CORTEX_M0PLUS)
NVIC_SetPendingIRQ(irq);
#else
NVIC->STIR = irq;
#endif
}
#elif defined(CONFIG_RISCV32)
static void trigger_irq(int irq)
{
u32_t mip;
printk("Triggering irq : %d\n", irq);
__asm__ volatile ("csrrs %0, mip, %1\n"
: "=r" (mip)
: "r" (1 << irq));
}
#elif defined(CONFIG_CPU_ARCV2)
static void trigger_irq(int irq)
{
printk("Triggering irq : %d\n", irq);
z_arc_v2_aux_reg_write(_ARC_V2_AUX_IRQ_HINT, irq);
}
#else
/* for not supported architecture */
#define NO_TRIGGER_FROM_SW
#endif