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.

Reply via email to