Signed-off-by: Ralf Ramsauer <[email protected]>
---
inmates/lib/arm/include/arch/inmate.h | 5 +++++
inmates/lib/arm64/include/arch/inmate.h | 5 +++++
inmates/lib/x86/inmate.h | 5 +++++
3 files changed, 15 insertions(+)
diff --git a/inmates/lib/arm/include/arch/inmate.h
b/inmates/lib/arm/include/arch/inmate.h
index 9a0353a3..0df386c8 100644
--- a/inmates/lib/arm/include/arch/inmate.h
+++ b/inmates/lib/arm/include/arch/inmate.h
@@ -37,3 +37,8 @@
*/
void __attribute__((interrupt("IRQ"), used)) vector_irq(void);
+
+static inline void arch_disable_irqs(void)
+{
+ asm volatile("cpsid if"); /* disable IRQs and FIQs */
+}
diff --git a/inmates/lib/arm64/include/arch/inmate.h
b/inmates/lib/arm64/include/arch/inmate.h
index 8ea3dd5e..dd1cc332 100644
--- a/inmates/lib/arm64/include/arch/inmate.h
+++ b/inmates/lib/arm64/include/arch/inmate.h
@@ -37,3 +37,8 @@
*/
void __attribute__((used)) vector_irq(void);
+
+static inline void arch_disable_irqs(void)
+{
+ asm volatile("msr daifset, #3"); /* disable IRQs and FIQs */
+}
diff --git a/inmates/lib/x86/inmate.h b/inmates/lib/x86/inmate.h
index fe20549d..19942dcf 100644
--- a/inmates/lib/x86/inmate.h
+++ b/inmates/lib/x86/inmate.h
@@ -101,6 +101,11 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+static inline void arch_disable_irqs(void)
+{
+ asm volatile("cli");
+}
+
static inline void cpu_relax(void)
{
asm volatile("rep; nop" : : : "memory");
--
2.17.0
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.