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.h (1046B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __PARISC_IRQFLAGS_H
      3#define __PARISC_IRQFLAGS_H
      4
      5#include <linux/types.h>
      6#include <asm/psw.h>
      7
      8static inline unsigned long arch_local_save_flags(void)
      9{
     10	unsigned long flags;
     11	asm volatile("ssm 0, %0" : "=r" (flags) : : "memory");
     12	return flags;
     13}
     14
     15static inline void arch_local_irq_disable(void)
     16{
     17	asm volatile("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory");
     18}
     19
     20static inline void arch_local_irq_enable(void)
     21{
     22	asm volatile("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory");
     23}
     24
     25static inline unsigned long arch_local_irq_save(void)
     26{
     27	unsigned long flags;
     28	asm volatile("rsm %1,%0" : "=r" (flags) : "i" (PSW_I) : "memory");
     29	return flags;
     30}
     31
     32static inline void arch_local_irq_restore(unsigned long flags)
     33{
     34	asm volatile("mtsm %0" : : "r" (flags) : "memory");
     35}
     36
     37static inline bool arch_irqs_disabled_flags(unsigned long flags)
     38{
     39	return (flags & PSW_I) == 0;
     40}
     41
     42static inline bool arch_irqs_disabled(void)
     43{
     44	return arch_irqs_disabled_flags(arch_local_save_flags());
     45}
     46
     47#endif /* __PARISC_IRQFLAGS_H */