/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (c) 2023 Intel Corporation */ #ifndef __ASSEMBLY__ #define __ASSEMBLY__ #endif #include .macro save_context addi sp, sp, (-8*34) sd x1, 0(sp) sd x2, 8(sp) sd x3, 16(sp) sd x4, 24(sp) sd x5, 32(sp) sd x6, 40(sp) sd x7, 48(sp) sd x8, 56(sp) sd x9, 64(sp) sd x10, 72(sp) sd x11, 80(sp) sd x12, 88(sp) sd x13, 96(sp) sd x14, 104(sp) sd x15, 112(sp) sd x16, 120(sp) sd x17, 128(sp) sd x18, 136(sp) sd x19, 144(sp) sd x20, 152(sp) sd x21, 160(sp) sd x22, 168(sp) sd x23, 176(sp) sd x24, 184(sp) sd x25, 192(sp) sd x26, 200(sp) sd x27, 208(sp) sd x28, 216(sp) sd x29, 224(sp) sd x30, 232(sp) sd x31, 240(sp) csrr s0, CSR_SEPC csrr s1, CSR_SSTATUS csrr s2, CSR_SCAUSE sd s0, 248(sp) sd s1, 256(sp) sd s2, 264(sp) .endm .macro restore_context ld s2, 264(sp) ld s1, 256(sp) ld s0, 248(sp) csrw CSR_SCAUSE, s2 csrw CSR_SSTATUS, s1 csrw CSR_SEPC, s0 ld x31, 240(sp) ld x30, 232(sp) ld x29, 224(sp) ld x28, 216(sp) ld x27, 208(sp) ld x26, 200(sp) ld x25, 192(sp) ld x24, 184(sp) ld x23, 176(sp) ld x22, 168(sp) ld x21, 160(sp) ld x20, 152(sp) ld x19, 144(sp) ld x18, 136(sp) ld x17, 128(sp) ld x16, 120(sp) ld x15, 112(sp) ld x14, 104(sp) ld x13, 96(sp) ld x12, 88(sp) ld x11, 80(sp) ld x10, 72(sp) ld x9, 64(sp) ld x8, 56(sp) ld x7, 48(sp) ld x6, 40(sp) ld x5, 32(sp) ld x4, 24(sp) ld x3, 16(sp) ld x2, 8(sp) ld x1, 0(sp) addi sp, sp, (8*34) .endm .balign 4 .global exception_vectors exception_vectors: save_context move a0, sp call route_exception restore_context sret