1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* Fallback per-CPU frame pointer holder 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. 5*4882a593Smuzhiyun * Written by David Howells (dhowells@redhat.com) 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef _ASM_GENERIC_IRQ_REGS_H 9*4882a593Smuzhiyun #define _ASM_GENERIC_IRQ_REGS_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/percpu.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* 14*4882a593Smuzhiyun * Per-cpu current frame pointer - the location of the last exception frame on 15*4882a593Smuzhiyun * the stack 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun DECLARE_PER_CPU(struct pt_regs *, __irq_regs); 18*4882a593Smuzhiyun get_irq_regs(void)19*4882a593Smuzhiyunstatic inline struct pt_regs *get_irq_regs(void) 20*4882a593Smuzhiyun { 21*4882a593Smuzhiyun return __this_cpu_read(__irq_regs); 22*4882a593Smuzhiyun } 23*4882a593Smuzhiyun set_irq_regs(struct pt_regs * new_regs)24*4882a593Smuzhiyunstatic inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun struct pt_regs *old_regs; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun old_regs = __this_cpu_read(__irq_regs); 29*4882a593Smuzhiyun __this_cpu_write(__irq_regs, new_regs); 30*4882a593Smuzhiyun return old_regs; 31*4882a593Smuzhiyun } 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #endif /* _ASM_GENERIC_IRQ_REGS_H */ 34