Files
acrn-hypervisor/hypervisor/include/arch/riscv/asm/offset.h
Haicheng Li 6276763cd5 hv: riscv: implement cpu_ctx_save and cpu_ctx_restore
Implement cpu_ctx_save and cpu_ctx_restore to save and restore CPU
registers around exception and interrupt handling on RISC-V.

Tracked-On: #8813
Signed-off-by: Haicheng Li <haicheng.li@intel.com>
Co-developed-by: Shiqing Gao <shiqing.gao@intel.com>
Signed-off-by: Yifan Liu <yifan1.liu@intel.com>
Signed-off-by: Shiqing Gao <shiqing.gao@intel.com>
Reviewed-by: Yifan Liu  <yifan1.liu@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>
2025-09-29 14:01:00 +08:00

62 lines
1.8 KiB
C

/*
* Copyright (C) 2023-2025 Intel Corporation.
*
* SPDX-License-Identifier: BSD-3-Clause
*
* Authors:
* Haicheng Li <haicheng.li@intel.com>
*/
#ifndef RISCV_OFFSET_H
#define RISCV_OFFSET_H
/* The following symbols must remain consistent:
* - CPU_REGS_OFFSET_* macros in `include/arch/riscv/asm/offset.h`
* - struct cpu_regs
* - cpu_ctx_save/cpu_ctx_restore macros used in assembly
*/
/* General purpose registers. */
#define CPU_REGS_OFFSET_ZERO 0x0
#define CPU_REGS_OFFSET_RA 0x8
#define CPU_REGS_OFFSET_SP 0x10
#define CPU_REGS_OFFSET_GP 0x18
#define CPU_REGS_OFFSET_TP 0x20
#define CPU_REGS_OFFSET_T0 0x28
#define CPU_REGS_OFFSET_T1 0x30
#define CPU_REGS_OFFSET_T2 0x38
#define CPU_REGS_OFFSET_S0 0x40
#define CPU_REGS_OFFSET_S1 0x48
#define CPU_REGS_OFFSET_A0 0x50
#define CPU_REGS_OFFSET_A1 0x58
#define CPU_REGS_OFFSET_A2 0x60
#define CPU_REGS_OFFSET_A3 0x68
#define CPU_REGS_OFFSET_A4 0x70
#define CPU_REGS_OFFSET_A5 0x78
#define CPU_REGS_OFFSET_A6 0x80
#define CPU_REGS_OFFSET_A7 0x88
#define CPU_REGS_OFFSET_S2 0x90
#define CPU_REGS_OFFSET_S3 0x98
#define CPU_REGS_OFFSET_S4 0xA0
#define CPU_REGS_OFFSET_S5 0xA8
#define CPU_REGS_OFFSET_S6 0xB0
#define CPU_REGS_OFFSET_S7 0xB8
#define CPU_REGS_OFFSET_S8 0xC0
#define CPU_REGS_OFFSET_S9 0xC8
#define CPU_REGS_OFFSET_S10 0xD0
#define CPU_REGS_OFFSET_S11 0xD8
#define CPU_REGS_OFFSET_T3 0xE0
#define CPU_REGS_OFFSET_T4 0xE8
#define CPU_REGS_OFFSET_T5 0xF0
#define CPU_REGS_OFFSET_T6 0xF8
/* Control and Status Registers (CSRs). */
#define CPU_REGS_OFFSET_EPC 0x100
#define CPU_REGS_OFFSET_STATUS 0x108
#define CPU_REGS_OFFSET_CAUSE 0x110
#define CPU_REGS_OFFSET_TVAL 0x118
#define CPU_REGS_OFFSET_SCRATCH 0x120
#define CPU_REGS_OFFSET_LAST CPU_REGS_OFFSET_SCRATCH
#endif /* RISCV_OFFSET_H */