1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * RISC-V SSE events entry point. 4 * 5 * Copyright (C) 2025, Rivos Inc., Clément Léger <cleger@rivosinc.com> 6 */ 7#include <asm/asm.h> 8#include <asm/asm-offsets.h> 9#include <asm/csr.h> 10#include <generated/sbi-asm-offsets.h> 11 12.section .text 13.global sbi_sse_entry 14sbi_sse_entry: 15 /* Save stack temporarily */ 16 REG_S sp, SBI_SSE_REG_TMP(a7) 17 /* Set entry stack */ 18 REG_L sp, SBI_SSE_HANDLER_STACK(a7) 19 20 addi sp, sp, -(PT_SIZE) 21 REG_S ra, PT_RA(sp) 22 REG_S s0, PT_S0(sp) 23 REG_S s1, PT_S1(sp) 24 REG_S s2, PT_S2(sp) 25 REG_S s3, PT_S3(sp) 26 REG_S s4, PT_S4(sp) 27 REG_S s5, PT_S5(sp) 28 REG_S s6, PT_S6(sp) 29 REG_S s7, PT_S7(sp) 30 REG_S s8, PT_S8(sp) 31 REG_S s9, PT_S9(sp) 32 REG_S s10, PT_S10(sp) 33 REG_S s11, PT_S11(sp) 34 REG_S tp, PT_TP(sp) 35 REG_S t0, PT_T0(sp) 36 REG_S t1, PT_T1(sp) 37 REG_S t2, PT_T2(sp) 38 REG_S t3, PT_T3(sp) 39 REG_S t4, PT_T4(sp) 40 REG_S t5, PT_T5(sp) 41 REG_S t6, PT_T6(sp) 42 REG_S gp, PT_GP(sp) 43 REG_S a0, PT_A0(sp) 44 REG_S a1, PT_A1(sp) 45 REG_S a2, PT_A2(sp) 46 REG_S a3, PT_A3(sp) 47 REG_S a4, PT_A4(sp) 48 REG_S a5, PT_A5(sp) 49 csrr a1, CSR_SEPC 50 REG_S a1, PT_EPC(sp) 51 csrr a2, CSR_SSTATUS 52 REG_S a2, PT_STATUS(sp) 53 54 REG_L a0, SBI_SSE_REG_TMP(a7) 55 REG_S a0, PT_SP(sp) 56 57 REG_L t0, SBI_SSE_HANDLER(a7) 58 REG_L a0, SBI_SSE_HANDLER_DATA(a7) 59 mv a1, sp 60 mv a2, a6 61 jalr t0 62 63 REG_L a1, PT_EPC(sp) 64 REG_L a2, PT_STATUS(sp) 65 csrw CSR_SEPC, a1 66 csrw CSR_SSTATUS, a2 67 68 REG_L ra, PT_RA(sp) 69 REG_L s0, PT_S0(sp) 70 REG_L s1, PT_S1(sp) 71 REG_L s2, PT_S2(sp) 72 REG_L s3, PT_S3(sp) 73 REG_L s4, PT_S4(sp) 74 REG_L s5, PT_S5(sp) 75 REG_L s6, PT_S6(sp) 76 REG_L s7, PT_S7(sp) 77 REG_L s8, PT_S8(sp) 78 REG_L s9, PT_S9(sp) 79 REG_L s10, PT_S10(sp) 80 REG_L s11, PT_S11(sp) 81 REG_L tp, PT_TP(sp) 82 REG_L t0, PT_T0(sp) 83 REG_L t1, PT_T1(sp) 84 REG_L t2, PT_T2(sp) 85 REG_L t3, PT_T3(sp) 86 REG_L t4, PT_T4(sp) 87 REG_L t5, PT_T5(sp) 88 REG_L t6, PT_T6(sp) 89 REG_L gp, PT_GP(sp) 90 REG_L a0, PT_A0(sp) 91 REG_L a1, PT_A1(sp) 92 REG_L a2, PT_A2(sp) 93 REG_L a3, PT_A3(sp) 94 REG_L a4, PT_A4(sp) 95 REG_L a5, PT_A5(sp) 96 97 REG_L sp, PT_SP(sp) 98 99 li a7, ASM_SBI_EXT_SSE 100 li a6, ASM_SBI_EXT_SSE_COMPLETE 101 ecall 102 103