blob: bbe0204387258c516067d8d6f6b7b0816389ffea [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001/* IRQ functions
2 *
3 * (C) Copyright 2007
4 * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
5 *
6 * SPDX-License-Identifier: GPL-2.0+
7 */
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