blob: bacb2d186ad61b75c4eae207778099d6d1a98667 [file] [log] [blame]
Wolfgang Denk7b64fef2006-10-24 14:21:16 +02001/*
2 * Copyright (C) 2006 Atmel Corporation
3 *
Wolfgang Denk1a459662013-07-08 09:37:19 +02004 * SPDX-License-Identifier: GPL-2.0+
Wolfgang Denk7b64fef2006-10-24 14:21:16 +02005 */
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
Olav Morkenb423f942009-01-23 12:56:32 +010022#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
Haavard Skinnemoendf9c25e2007-12-17 11:02:44 +010029 return !SYSREG_BFEXT(GM, sr);
Wolfgang Denk7b64fef2006-10-24 14:21:16 +020030}