1/* 2 * Copyright (c) 2021 Andes Technology Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7#include <offsets.h> 8#include <zephyr/toolchain.h> 9 10#include <soc.h> 11 12#ifdef CONFIG_RISCV_SOC_CONTEXT_SAVE 13 14/* Exports */ 15GTEXT(__soc_save_context) 16GTEXT(__soc_restore_context) 17 18SECTION_FUNC(exception.other, __soc_save_context) 19 20#ifdef CONFIG_SOC_ANDES_V5_PFT 21 csrr t0, NDS_MXSTATUS 22#endif 23#ifdef CONFIG_SOC_ANDES_V5_HWDSP 24 csrr t1, NDS_UCODE 25#endif 26 27#ifdef CONFIG_SOC_ANDES_V5_PFT 28 sw t0, __soc_esf_t_mxstatus_OFFSET(a0) 29#endif 30#ifdef CONFIG_SOC_ANDES_V5_HWDSP 31 sw t1, __soc_esf_t_ucode_OFFSET(a0) 32#endif 33 ret 34 35SECTION_FUNC(exception.other, __soc_restore_context) 36 37#ifdef CONFIG_SOC_ANDES_V5_PFT 38 lw t0, __soc_esf_t_mxstatus_OFFSET(a0) 39#endif 40#ifdef CONFIG_SOC_ANDES_V5_HWDSP 41 lw t1, __soc_esf_t_ucode_OFFSET(a0) 42#endif 43 44#ifdef CONFIG_SOC_ANDES_V5_PFT 45 csrw NDS_MXSTATUS, t0 46#endif 47#ifdef CONFIG_SOC_ANDES_V5_HWDSP 48 csrw NDS_UCODE, t1 49#endif 50 ret 51 52#endif /* CONFIG_RISCV_SOC_CONTEXT_SAVE */ 53