File Index
Files and directories
Sign in
FILE

irqflags.h

File preview with syntax highlighting.

linux-6.19.14/arch/riscv/include/asm/irqflags.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (C) 2012 Regents of the University of California
 4 */
 5
 6
 7#ifndef _ASM_RISCV_IRQFLAGS_H
 8#define _ASM_RISCV_IRQFLAGS_H
 9
10#include <asm/csr.h>
11
12/* read interrupt enabled status */
13static inline unsigned long arch_local_save_flags(void)
14{
15	return csr_read(CSR_STATUS);
16}
17
18/* unconditionally enable interrupts */
19static inline void arch_local_irq_enable(void)
20{
21	csr_set(CSR_STATUS, SR_IE);
22}
23
24/* unconditionally disable interrupts */
25static inline void arch_local_irq_disable(void)
26{
27	csr_clear(CSR_STATUS, SR_IE);
28}
29
30/* get status and disable interrupts */
31static inline unsigned long arch_local_irq_save(void)
32{
33	return csr_read_clear(CSR_STATUS, SR_IE);
34}
35
36/* test flags */
37static inline int arch_irqs_disabled_flags(unsigned long flags)
38{
39	return !(flags & SR_IE);
40}
41
42/* test hardware interrupt enable bit */
43static inline int arch_irqs_disabled(void)
44{
45	return arch_irqs_disabled_flags(arch_local_save_flags());
46}
47
48/* set interrupt enabled status */
49static inline void arch_local_irq_restore(unsigned long flags)
50{
51	csr_set(CSR_STATUS, flags & SR_IE);
52}
53
54#endif /* _ASM_RISCV_IRQFLAGS_H */
~/ Read-only file preview.