blob: bbe0204387258c516067d8d6f6b7b0816389ffea [file] [log] [blame]
Daniel Hellstrom9d7c6b22008-03-28 09:47:00 +01001/* IRQ functions
2 *
3 * (C) Copyright 2007
4 * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
5 *
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02006 * SPDX-License-Identifier: GPL-2.0+
Daniel Hellstrom9d7c6b22008-03-28 09:47:00 +01007 */
8
9#ifndef __SPARC_IRQ_H__
10#define __SPARC_IRQ_H__
11
12#include <asm/psr.h>
13
14/* Set SPARC Processor Interrupt Level */
15extern inline void set_pil(unsigned int level)
16{
17 unsigned int psr = get_psr();
18
19 put_psr((psr & ~PSR_PIL) | ((level & 0xf) << PSR_PIL_OFS));
20}
21
22/* Get SPARC Processor Interrupt Level */
23extern inline unsigned int get_pil(void)
24{
25 unsigned int psr = get_psr();
26 return (psr & PSR_PIL) >> PSR_PIL_OFS;
27}
28
29/* Disables interrupts and return current PIL value */
30extern int intLock(void);
31
32/* Sets the PIL to oldLevel */
33extern void intUnlock(int oldLevel);
34
35#endif