cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

irqflags_32.h (1058B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * include/asm/irqflags.h
      4 *
      5 * IRQ flags handling
      6 *
      7 * This file gets included from lowlevel asm headers too, to provide
      8 * wrapped versions of the local_irq_*() APIs, based on the
      9 * arch_local_irq_*() functions from the lowlevel headers.
     10 */
     11#ifndef _ASM_IRQFLAGS_H
     12#define _ASM_IRQFLAGS_H
     13
     14#ifndef __ASSEMBLY__
     15
     16#include <linux/types.h>
     17#include <asm/psr.h>
     18
     19void arch_local_irq_restore(unsigned long);
     20unsigned long arch_local_irq_save(void);
     21void arch_local_irq_enable(void);
     22
     23static inline notrace unsigned long arch_local_save_flags(void)
     24{
     25	unsigned long flags;
     26
     27	asm volatile("rd        %%psr, %0" : "=r" (flags));
     28	return flags;
     29}
     30
     31static inline notrace void arch_local_irq_disable(void)
     32{
     33	arch_local_irq_save();
     34}
     35
     36static inline notrace bool arch_irqs_disabled_flags(unsigned long flags)
     37{
     38	return (flags & PSR_PIL) != 0;
     39}
     40
     41static inline notrace bool arch_irqs_disabled(void)
     42{
     43	return arch_irqs_disabled_flags(arch_local_save_flags());
     44}
     45
     46#endif /* (__ASSEMBLY__) */
     47
     48#endif /* !(_ASM_IRQFLAGS_H) */