This source file includes following definitions.
- arch_local_irq_save
- arch_local_irq_disable
- arch_local_irq_enable
- arch_local_irq_save
- arch_local_irq_disable
- arch_local_irq_enable
- arch_local_save_flags
- arch_local_irq_restore
- arch_irqs_disabled_flags
- arch_irqs_disabled
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 #ifndef _ASM_MICROBLAZE_IRQFLAGS_H
  10 #define _ASM_MICROBLAZE_IRQFLAGS_H
  11 
  12 #include <linux/types.h>
  13 #include <asm/registers.h>
  14 
  15 #if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
  16 
  17 static inline notrace unsigned long arch_local_irq_save(void)
  18 {
  19         unsigned long flags;
  20         asm volatile("  msrclr %0, %1   \n"
  21                      "  nop             \n"
  22                      : "=r"(flags)
  23                      : "i"(MSR_IE)
  24                      : "memory");
  25         return flags;
  26 }
  27 
  28 static inline notrace void arch_local_irq_disable(void)
  29 {
  30         
  31         asm volatile("  msrclr r0, %0   \n"
  32                      "  nop             \n"
  33                      :
  34                      : "i"(MSR_IE)
  35                      : "memory");
  36 }
  37 
  38 static inline notrace void arch_local_irq_enable(void)
  39 {
  40         
  41         asm volatile("  msrset  r0, %0  \n"
  42                      "  nop             \n"
  43                      :
  44                      : "i"(MSR_IE)
  45                      : "memory");
  46 }
  47 
  48 #else 
  49 
  50 static inline notrace unsigned long arch_local_irq_save(void)
  51 {
  52         unsigned long flags, tmp;
  53         asm volatile (" mfs     %0, rmsr        \n"
  54                       " nop                     \n"
  55                       " andi    %1, %0, %2      \n"
  56                       " mts     rmsr, %1        \n"
  57                       " nop                     \n"
  58                       : "=r"(flags), "=r"(tmp)
  59                       : "i"(~MSR_IE)
  60                       : "memory");
  61         return flags;
  62 }
  63 
  64 static inline notrace void arch_local_irq_disable(void)
  65 {
  66         unsigned long tmp;
  67         asm volatile("  mfs     %0, rmsr        \n"
  68                      "  nop                     \n"
  69                      "  andi    %0, %0, %1      \n"
  70                      "  mts     rmsr, %0        \n"
  71                      "  nop                     \n"
  72                      : "=r"(tmp)
  73                      : "i"(~MSR_IE)
  74                      : "memory");
  75 }
  76 
  77 static inline notrace void arch_local_irq_enable(void)
  78 {
  79         unsigned long tmp;
  80         asm volatile("  mfs     %0, rmsr        \n"
  81                      "  nop                     \n"
  82                      "  ori     %0, %0, %1      \n"
  83                      "  mts     rmsr, %0        \n"
  84                      "  nop                     \n"
  85                      : "=r"(tmp)
  86                      : "i"(MSR_IE)
  87                      : "memory");
  88 }
  89 
  90 #endif 
  91 
  92 static inline notrace unsigned long arch_local_save_flags(void)
  93 {
  94         unsigned long flags;
  95         asm volatile("  mfs     %0, rmsr        \n"
  96                      "  nop                     \n"
  97                      : "=r"(flags)
  98                      :
  99                      : "memory");
 100         return flags;
 101 }
 102 
 103 static inline notrace void arch_local_irq_restore(unsigned long flags)
 104 {
 105         asm volatile("  mts     rmsr, %0        \n"
 106                      "  nop                     \n"
 107                      :
 108                      : "r"(flags)
 109                      : "memory");
 110 }
 111 
 112 static inline notrace bool arch_irqs_disabled_flags(unsigned long flags)
 113 {
 114         return (flags & MSR_IE) == 0;
 115 }
 116 
 117 static inline notrace bool arch_irqs_disabled(void)
 118 {
 119         return arch_irqs_disabled_flags(arch_local_save_flags());
 120 }
 121 
 122 #endif