Path: blob/master/tools/testing/selftests/kvm/lib/riscv/handlers.S
51259 views
/* SPDX-License-Identifier: GPL-2.0 */1/*2* Copyright (c) 2023 Intel Corporation3*/45#ifndef __ASSEMBLY__6#define __ASSEMBLY__7#endif89#include <asm/csr.h>1011.macro save_context12addi sp, sp, (-8*36)13sd x1, 8(sp)14sd x2, 16(sp)15sd x3, 24(sp)16sd x4, 32(sp)17sd x5, 40(sp)18sd x6, 48(sp)19sd x7, 56(sp)20sd x8, 64(sp)21sd x9, 72(sp)22sd x10, 80(sp)23sd x11, 88(sp)24sd x12, 96(sp)25sd x13, 104(sp)26sd x14, 112(sp)27sd x15, 120(sp)28sd x16, 128(sp)29sd x17, 136(sp)30sd x18, 144(sp)31sd x19, 152(sp)32sd x20, 160(sp)33sd x21, 168(sp)34sd x22, 176(sp)35sd x23, 184(sp)36sd x24, 192(sp)37sd x25, 200(sp)38sd x26, 208(sp)39sd x27, 216(sp)40sd x28, 224(sp)41sd x29, 232(sp)42sd x30, 240(sp)43sd x31, 248(sp)44csrr s0, CSR_SEPC45csrr s1, CSR_SSTATUS46csrr s2, CSR_STVAL47csrr s3, CSR_SCAUSE48sd s0, 0(sp)49sd s1, 256(sp)50sd s2, 264(sp)51sd s3, 272(sp)52.endm5354.macro restore_context55ld s3, 272(sp)56ld s2, 264(sp)57ld s1, 256(sp)58ld s0, 0(sp)59csrw CSR_SCAUSE, s360csrw CSR_SSTATUS, s161csrw CSR_SEPC, s062ld x31, 248(sp)63ld x30, 240(sp)64ld x29, 232(sp)65ld x28, 224(sp)66ld x27, 216(sp)67ld x26, 208(sp)68ld x25, 200(sp)69ld x24, 192(sp)70ld x23, 184(sp)71ld x22, 176(sp)72ld x21, 168(sp)73ld x20, 160(sp)74ld x19, 152(sp)75ld x18, 144(sp)76ld x17, 136(sp)77ld x16, 128(sp)78ld x15, 120(sp)79ld x14, 112(sp)80ld x13, 104(sp)81ld x12, 96(sp)82ld x11, 88(sp)83ld x10, 80(sp)84ld x9, 72(sp)85ld x8, 64(sp)86ld x7, 56(sp)87ld x6, 48(sp)88ld x5, 40(sp)89ld x4, 32(sp)90ld x3, 24(sp)91ld x2, 16(sp)92ld x1, 8(sp)93addi sp, sp, (8*36)94.endm9596.balign 497.global exception_vectors98exception_vectors:99save_context100move a0, sp101call route_exception102restore_context103sret104105106