xref: /linux/include/asm-generic/irq_regs.h (revision 2874c5fd)
1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
27d12e780SDavid Howells /* Fallback per-CPU frame pointer holder
37d12e780SDavid Howells  *
47d12e780SDavid Howells  * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
57d12e780SDavid Howells  * Written by David Howells (dhowells@redhat.com)
67d12e780SDavid Howells  */
77d12e780SDavid Howells 
87d12e780SDavid Howells #ifndef _ASM_GENERIC_IRQ_REGS_H
97d12e780SDavid Howells #define _ASM_GENERIC_IRQ_REGS_H
107d12e780SDavid Howells 
117d12e780SDavid Howells #include <linux/percpu.h>
127d12e780SDavid Howells 
137d12e780SDavid Howells /*
147d12e780SDavid Howells  * Per-cpu current frame pointer - the location of the last exception frame on
157d12e780SDavid Howells  * the stack
167d12e780SDavid Howells  */
177d12e780SDavid Howells DECLARE_PER_CPU(struct pt_regs *, __irq_regs);
187d12e780SDavid Howells 
get_irq_regs(void)197d12e780SDavid Howells static inline struct pt_regs *get_irq_regs(void)
207d12e780SDavid Howells {
21909ea964SChristoph Lameter 	return __this_cpu_read(__irq_regs);
227d12e780SDavid Howells }
237d12e780SDavid Howells 
set_irq_regs(struct pt_regs * new_regs)247d12e780SDavid Howells static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs)
257d12e780SDavid Howells {
26909ea964SChristoph Lameter 	struct pt_regs *old_regs;
277d12e780SDavid Howells 
28909ea964SChristoph Lameter 	old_regs = __this_cpu_read(__irq_regs);
29909ea964SChristoph Lameter 	__this_cpu_write(__irq_regs, new_regs);
307d12e780SDavid Howells 	return old_regs;
317d12e780SDavid Howells }
327d12e780SDavid Howells 
337d12e780SDavid Howells #endif /* _ASM_GENERIC_IRQ_REGS_H */
34