---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Julien Grall <julien.grall@xxxxxxx>
---
xen/include/asm-arm/arm32/system.h | 8 ++++++--
xen/include/asm-arm/arm64/system.h | 8 ++++++--
xen/include/asm-arm/system.h | 4 +++-
xen/include/asm-x86/system.h | 6 ++++--
4 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/xen/include/asm-arm/arm32/system.h
b/xen/include/asm-arm/arm32/system.h
index ab57abf..58c8fb3 100644
--- a/xen/include/asm-arm/arm32/system.h
+++ b/xen/include/asm-arm/arm32/system.h
@@ -28,10 +28,12 @@
: "memory", "cc"); \
})
-static inline int local_irq_is_enabled(void)
+static inline bool local_irq_is_enabled(void)
{
unsigned long flags;
+
local_save_flags(flags);
+
return !(flags & PSR_IRQ_MASK);
}
@@ -41,10 +43,12 @@ static inline int local_irq_is_enabled(void)
#define local_abort_enable() __asm__("cpsie a @ __sta\n" : : : "memory",
"cc")
#define local_abort_disable() __asm__("cpsid a @ __sta\n" : : : "memory",
"cc")
-static inline int local_fiq_is_enabled(void)
+static inline bool local_fiq_is_enabled(void)
{
unsigned long flags;
+
local_save_flags(flags);
+
return !(flags & PSR_FIQ_MASK);
}
diff --git a/xen/include/asm-arm/arm64/system.h b/xen/include/asm-arm/arm64/system.h
index 2e36573..d17fc9d 100644
--- a/xen/include/asm-arm/arm64/system.h
+++ b/xen/include/asm-arm/arm64/system.h
@@ -44,17 +44,21 @@
: "memory"); \
})
-static inline int local_irq_is_enabled(void)
+static inline bool local_irq_is_enabled(void)
{
unsigned long flags;
+
local_save_flags(flags);
+
return !(flags & PSR_IRQ_MASK);
}
-static inline int local_fiq_is_enabled(void)
+static inline bool local_fiq_is_enabled(void)
{
unsigned long flags;
+
local_save_flags(flags);
+
return !(flags & PSR_FIQ_MASK);
}
diff --git a/xen/include/asm-arm/system.h b/xen/include/asm-arm/system.h
index b94e56f..bc51300 100644
--- a/xen/include/asm-arm/system.h
+++ b/xen/include/asm-arm/system.h
@@ -51,10 +51,12 @@
# error "unknown ARM variant"
#endif
-static inline int local_abort_is_enabled(void)
+static inline bool local_abort_is_enabled(void)
{
unsigned long flags;
+
local_save_flags(flags);
+
return !(flags & PSR_ABT_MASK);
}
diff --git a/xen/include/asm-x86/system.h b/xen/include/asm-x86/system.h
index 483cd20..4b7056d 100644
--- a/xen/include/asm-x86/system.h
+++ b/xen/include/asm-x86/system.h
@@ -274,11 +274,13 @@ static inline unsigned long
array_index_mask_nospec(unsigned long index,
"ri" ( (x) & X86_EFLAGS_IF ) ); \
})
-static inline int local_irq_is_enabled(void)
+static inline bool local_irq_is_enabled(void)
{
unsigned long flags;
+
local_save_flags(flags);
- return !!(flags & X86_EFLAGS_IF);
+
+ return flags & X86_EFLAGS_IF;
}
#define BROKEN_ACPI_Sx 0x0001