2 * entry.h - routines for context saving and restoring (for interrupts/exceptions)
4 * Copyright (c) 2005-2007 Analog Devices Inc.
6 * SPDX-License-Identifier: GPL-2.0+
9 #ifndef __BLACKFIN_ENTRY_H
10 #define __BLACKFIN_ENTRY_H
13 #define SAVE_ALL_INT save_context_no_interrupts
14 #define SAVE_ALL_SYS save_context_no_interrupts
15 #define SAVE_CONTEXT save_context_with_interrupts
17 #define RESTORE_ALL restore_context_no_interrupts
18 #define RESTORE_ALL_SYS restore_context_no_interrupts
19 #define RESTORE_CONTEXT restore_context_with_interrupts
22 * Code to save processor context.
23 * We even save the register which are preserved by a function call
24 * - r4, r5, r6, r7, p3, p4, p5
26 .macro save_context_with_interrupts
28 [--sp] = ( R7:0, P5:0 );
65 [--sp] = r0; /* Skip reserved */
73 #ifdef CONFIG_CMD_KGDB
78 [--sp] = r0; /* Skip IPEND as well. */
81 .macro save_context_no_interrupts
83 [--sp] = ( R7:0, P5:0 );
120 [--sp] = r0; /* Skip reserved */
129 #ifdef CONFIG_CMD_KGDB
134 [--sp] = r0; /* Skip IPEND as well. */
137 .macro restore_context_no_interrupts
186 ( R7 : 0, P5 : 0) = [ SP ++ ];
190 .macro restore_context_with_interrupts
238 ( R7 : 0, P5 : 0) = [ SP ++ ];