[arch][arm][arm-m] Implement arch_in_int_handler for ARM-M V7 CPUs

This commit is contained in:
Gurjant Kalsi
2016-06-01 15:44:58 -07:00
parent 6faa2957e1
commit 5007eb75e8

View File

@@ -29,6 +29,10 @@
#include <reg.h>
#include <arch/arm.h>
#if ARM_ISA_ARMV7M
#include <arch/arm/cm.h>
#endif
__BEGIN_CDECLS;
#if ARM_ISA_ARMV7 || (ARM_ISA_ARMV6 && !__thumb__)
@@ -87,10 +91,16 @@ static inline bool arch_fiqs_disabled(void)
static inline bool arch_in_int_handler(void)
{
#if ARM_ISA_ARMV7M
uint32_t ipsr;
__asm volatile ("MRS %0, ipsr" : "=r" (ipsr) );
return (ipsr & IPSR_ISR_Msk);
#else
/* set by the interrupt glue to track that the cpu is inside a handler */
extern bool __arm_in_handler;
return __arm_in_handler;
#endif
}
static inline int atomic_add(volatile int *ptr, int val)