cregit-Linux how code gets into the kernel

Release 4.14 arch/xtensa/include/asm/irqflags.h

/*
 * Xtensa IRQ flags handling functions
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 2001 - 2005 Tensilica Inc.
 * Copyright (C) 2015 Cadence Design Systems Inc.
 */

#ifndef _XTENSA_IRQFLAGS_H

#define _XTENSA_IRQFLAGS_H

#include <linux/types.h>
#include <asm/processor.h>


static inline unsigned long arch_local_save_flags(void) { unsigned long flags; asm volatile("rsr %0, ps" : "=a" (flags)); return flags; }

Contributors

PersonTokensPropCommitsCommitProp
David Howells1995.00%150.00%
Max Filippov15.00%150.00%
Total20100.00%2100.00%


static inline unsigned long arch_local_irq_save(void) { unsigned long flags; #if XTENSA_FAKE_NMI #if defined(CONFIG_DEBUG_KERNEL) && (LOCKLEVEL | TOPLEVEL) >= XCHAL_DEBUGLEVEL unsigned long tmp; asm volatile("rsr %0, ps\t\n" "extui %1, %0, 0, 4\t\n" "bgei %1, "__stringify(LOCKLEVEL)", 1f\t\n" "rsil %0, "__stringify(LOCKLEVEL)"\n" "1:" : "=a" (flags), "=a" (tmp) :: "memory"); #else asm volatile("rsr %0, ps\t\n" "or %0, %0, %1\t\n" "xsr %0, ps\t\n" "rsync" : "=&a" (flags) : "a" (LOCKLEVEL) : "memory"); #endif #else asm volatile("rsil %0, "__stringify(LOCKLEVEL) : "=a" (flags) :: "memory"); #endif return flags; }

Contributors

PersonTokensPropCommitsCommitProp
Max Filippov3665.45%150.00%
David Howells1934.55%150.00%
Total55100.00%2100.00%


static inline void arch_local_irq_disable(void) { arch_local_irq_save(); }

Contributors

PersonTokensPropCommitsCommitProp
David Howells12100.00%1100.00%
Total12100.00%1100.00%


static inline void arch_local_irq_enable(void) { unsigned long flags; asm volatile("rsil %0, 0" : "=a" (flags) :: "memory"); }

Contributors

PersonTokensPropCommitsCommitProp
David Howells16100.00%1100.00%
Total16100.00%1100.00%


static inline void arch_local_irq_restore(unsigned long flags) { asm volatile("wsr %0, ps; rsync" :: "a" (flags) : "memory"); }

Contributors

PersonTokensPropCommitsCommitProp
David Howells1392.86%150.00%
Max Filippov17.14%150.00%
Total14100.00%2100.00%


static inline bool arch_irqs_disabled_flags(unsigned long flags) { #if XCHAL_EXCM_LEVEL < LOCKLEVEL || (1 << PS_EXCM_BIT) < LOCKLEVEL #error "XCHAL_EXCM_LEVEL and 1<<PS_EXCM_BIT must be no less than LOCKLEVEL" #endif return (flags & (PS_INTLEVEL_MASK | (1 << PS_EXCM_BIT))) >= LOCKLEVEL; }

Contributors

PersonTokensPropCommitsCommitProp
Max Filippov2963.04%150.00%
David Howells1736.96%150.00%
Total46100.00%2100.00%


static inline bool arch_irqs_disabled(void) { return arch_irqs_disabled_flags(arch_local_save_flags()); }

Contributors

PersonTokensPropCommitsCommitProp
David Howells16100.00%1100.00%
Total16100.00%1100.00%

#endif /* _XTENSA_IRQFLAGS_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
David Howells12463.59%120.00%
Max Filippov7136.41%480.00%
Total195100.00%5100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.