b060b7d0c1
__switch_to() is final step of context switch, swapping kernel modes stack (and callee regs) of outgoing task with next task. It is also the starting point of stack unwinging of a sleeping task and captures SP, FP, BLINK and the corresponding dwarf info. Back when dinosaurs still roamed around, ARC gas didn't support CFI pseudo ops and gcc was responsible for generating dwarf info. Thus it had to be written in "C" with inline asm to do the hand crafting of stack. The function prologue (and crucial saving of blink etc) was still gcc generated but not visible in code. Likewise dwarf info was missing. Now with modern tools, we can make things more obvious by writing the code in asm and adding approproate dwarf cfi pseudo ops. This is mostly non functional change, except for slight chnages to asm - ARCompact doesn't support MOV_S fp, sp, so we use MOV Signed-off-by: Vineet Gupta <vgupta@kernel.org>
44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2016-17 Synopsys, Inc. (www.synopsys.com)
|
|
*/
|
|
|
|
#ifndef _ASM_ARC_DWARF_H
|
|
#define _ASM_ARC_DWARF_H
|
|
|
|
#ifdef __ASSEMBLY__
|
|
|
|
#ifdef ARC_DW2_UNWIND_AS_CFI
|
|
|
|
#define CFI_STARTPROC .cfi_startproc
|
|
#define CFI_ENDPROC .cfi_endproc
|
|
#define CFI_DEF_CFA .cfi_def_cfa
|
|
#define CFI_DEF_CFA_OFFSET .cfi_def_cfa_offset
|
|
#define CFI_DEF_CFA_REGISTER .cfi_def_cfa_register
|
|
#define CFI_OFFSET .cfi_offset
|
|
#define CFI_REL_OFFSET .cfi_rel_offset
|
|
#define CFI_REGISTER .cfi_register
|
|
#define CFI_RESTORE .cfi_restore
|
|
#define CFI_UNDEFINED .cfi_undefined
|
|
|
|
#else
|
|
|
|
#define CFI_IGNORE #
|
|
|
|
#define CFI_STARTPROC CFI_IGNORE
|
|
#define CFI_ENDPROC CFI_IGNORE
|
|
#define CFI_DEF_CFA CFI_IGNORE
|
|
#define CFI_DEF_CFA_OFFSET CFI_IGNORE
|
|
#define CFI_DEF_CFA_REGISTER CFI_IGNORE
|
|
#define CFI_OFFSET CFI_IGNORE
|
|
#define CFI_REL_OFFSET CFI_IGNORE
|
|
#define CFI_REGISTER CFI_IGNORE
|
|
#define CFI_RESTORE CFI_IGNORE
|
|
#define CFI_UNDEFINED CFI_IGNORE
|
|
|
|
#endif /* !ARC_DW2_UNWIND_AS_CFI */
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
#endif /* _ASM_ARC_DWARF_H */
|