53 lines
996 B
ArmAsm
53 lines
996 B
ArmAsm
/*
|
|
* Copyright (c) 2021 Andes Technology Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "soc_v5.h"
|
|
|
|
#include <offsets.h>
|
|
#include <zephyr/toolchain.h>
|
|
|
|
#ifdef CONFIG_RISCV_SOC_CONTEXT_SAVE
|
|
|
|
/* Exports */
|
|
GTEXT(__soc_save_context)
|
|
GTEXT(__soc_restore_context)
|
|
|
|
SECTION_FUNC(exception.other, __soc_save_context)
|
|
|
|
#ifdef CONFIG_SOC_ANDES_V5_PFT
|
|
csrr t0, NDS_MXSTATUS
|
|
#endif
|
|
#ifdef CONFIG_SOC_ANDES_V5_HWDSP
|
|
csrr t1, NDS_UCODE
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_ANDES_V5_PFT
|
|
sw t0, __soc_esf_t_mxstatus_OFFSET(a0)
|
|
#endif
|
|
#ifdef CONFIG_SOC_ANDES_V5_HWDSP
|
|
sw t1, __soc_esf_t_ucode_OFFSET(a0)
|
|
#endif
|
|
ret
|
|
|
|
SECTION_FUNC(exception.other, __soc_restore_context)
|
|
|
|
#ifdef CONFIG_SOC_ANDES_V5_PFT
|
|
lw t0, __soc_esf_t_mxstatus_OFFSET(a0)
|
|
#endif
|
|
#ifdef CONFIG_SOC_ANDES_V5_HWDSP
|
|
lw t1, __soc_esf_t_ucode_OFFSET(a0)
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_ANDES_V5_PFT
|
|
csrw NDS_MXSTATUS, t0
|
|
#endif
|
|
#ifdef CONFIG_SOC_ANDES_V5_HWDSP
|
|
csrw NDS_UCODE, t1
|
|
#endif
|
|
ret
|
|
|
|
#endif /* CONFIG_RISCV_SOC_CONTEXT_SAVE */
|