blob: bacb2d186ad61b75c4eae207778099d6d1a98667 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001/*
2 * Copyright (C) 2006 Atmel Corporation
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6#include <common.h>
7
8#include <asm/sysreg.h>
9
10void enable_interrupts(void)
11{
12 asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET));
13}
14
15int disable_interrupts(void)
16{
17 unsigned long sr;
18
19 sr = sysreg_read(SR);
20 asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET));
21
22#ifdef CONFIG_AT32UC3A0xxx
23 /* Two NOPs are required after masking interrupts on the
24 * AT32UC3A0512ES. See errata 41.4.5.5. */
25 asm("nop");
26 asm("nop");
27#endif
28
29 return !SYSREG_BFEXT(GM, sr);
30}