Files
acrn-hypervisor/hypervisor/arch/riscv/sched.S
Haicheng Li 65927b4f03 hv: add arch_switch_to support for riscv
add stack_frame definition, and implement acrh_switch_to for riscv.

Tracked-On: #8812
Signed-off-by: Xue Bosheng <bosheng.xue@intel.com>
Signed-off-by: Haicheng Li <haicheng.li@outlook.com>
Reviewed-by: Yifan Liu  <yifan1.liu@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>
2025-09-30 12:31:07 +08:00

84 lines
1.7 KiB
ArmAsm

/*
* Copyright (C) 2023-2025 Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
* Authors:
* Haicheng Li <haicheng.li@intel.com>
*/
.text
.align 8
.global arch_switch_to
arch_switch_to:
/* refer to struct stack_frame */
addi sp, sp, -0x80
/*
* 0x0=STACK_FRAME_OFFSET_RA
* 0x8=STACK_FRAME_OFFSET_S0
* 0x10=STACK_FRAME_OFFSET_S1
* 0x18=STACK_FRAME_OFFSET_S2
* 0x20=STACK_FRAME_OFFSET_S3
* 0x28=STACK_FRAME_OFFSET_S4
* 0x30=STACK_FRAME_OFFSET_S5
* 0x38=STACK_FRAME_OFFSET_S6
* 0x40=STACK_FRAME_OFFSET_S7
* 0x48=STACK_FRAME_OFFSET_S8
* 0x50=STACK_FRAME_OFFSET_S9
* 0x58=STACK_FRAME_OFFSET_S10
* 0x60=STACK_FRAME_OFFSET_S11
* 0x68=STACK_FRAME_OFFSET_A0
*/
sd ra, 0x0(sp)
sd s0, 0x8(sp)
sd s1, 0x10(sp)
sd s2, 0x18(sp)
sd s3, 0x20(sp)
sd s4, 0x28(sp)
sd s5, 0x30(sp)
sd s6, 0x38(sp)
sd s7, 0x40(sp)
sd s8, 0x48(sp)
sd s9, 0x50(sp)
sd s10, 0x58(sp)
sd s11, 0x60(sp)
sd a0, 0x68(sp)
sd sp, 0(a0)
ld sp, 0(a1)
/*
* 0x0=STACK_FRAME_OFFSET_RA
* 0x8=STACK_FRAME_OFFSET_S0
* 0x10=STACK_FRAME_OFFSET_S1
* 0x18=STACK_FRAME_OFFSET_S2
* 0x20=STACK_FRAME_OFFSET_S3
* 0x28=STACK_FRAME_OFFSET_S4
* 0x30=STACK_FRAME_OFFSET_S5
* 0x38=STACK_FRAME_OFFSET_S6
* 0x40=STACK_FRAME_OFFSET_S7
* 0x48=STACK_FRAME_OFFSET_S8
* 0x50=STACK_FRAME_OFFSET_S9
* 0x58=STACK_FRAME_OFFSET_S10
* 0x60=STACK_FRAME_OFFSET_S11
* 0x68=STACK_FRAME_OFFSET_A0
*/
ld ra, 0x0(sp)
ld s0, 0x8(sp)
ld s1, 0x10(sp)
ld s2, 0x18(sp)
ld s3, 0x20(sp)
ld s4, 0x28(sp)
ld s5, 0x30(sp)
ld s6, 0x38(sp)
ld s7, 0x40(sp)
ld s8, 0x48(sp)
ld s9, 0x50(sp)
ld s10, 0x58(sp)
ld s11, 0x60(sp)
ld a0, 0x68(sp)
addi sp, sp, 0x80
ret