summaryrefslogtreecommitdiffstats
path: root/qemu/roms/u-boot/arch/avr32/lib/interrupts.c
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/u-boot/arch/avr32/lib/interrupts.c')
-rw-r--r--qemu/roms/u-boot/arch/avr32/lib/interrupts.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/qemu/roms/u-boot/arch/avr32/lib/interrupts.c b/qemu/roms/u-boot/arch/avr32/lib/interrupts.c
new file mode 100644
index 000000000..bacb2d186
--- /dev/null
+++ b/qemu/roms/u-boot/arch/avr32/lib/interrupts.c
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2006 Atmel Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+#include <common.h>
+
+#include <asm/sysreg.h>
+
+void enable_interrupts(void)
+{
+ asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET));
+}
+
+int disable_interrupts(void)
+{
+ unsigned long sr;
+
+ sr = sysreg_read(SR);
+ asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET));
+
+#ifdef CONFIG_AT32UC3A0xxx
+ /* Two NOPs are required after masking interrupts on the
+ * AT32UC3A0512ES. See errata 41.4.5.5. */
+ asm("nop");
+ asm("nop");
+#endif
+
+ return !SYSREG_BFEXT(GM, sr);
+}