1*e53d2818SNick Kossifidis/* SPDX-License-Identifier: GPL-2.0 */ 2*e53d2818SNick Kossifidis/* 3*e53d2818SNick Kossifidis * Copyright (C) 2020 FORTH-ICS/CARV 4*e53d2818SNick Kossifidis * Nick Kossifidis <mick@ics.forth.gr> 5*e53d2818SNick Kossifidis */ 6*e53d2818SNick Kossifidis 7*e53d2818SNick Kossifidis#include <asm/asm.h> /* For RISCV_* and REG_* macros */ 8*e53d2818SNick Kossifidis#include <asm/csr.h> /* For CSR_* macros */ 9*e53d2818SNick Kossifidis#include <asm/asm-offsets.h> /* For offsets on pt_regs */ 10*e53d2818SNick Kossifidis#include <linux/linkage.h> /* For SYM_* macros */ 11*e53d2818SNick Kossifidis 12*e53d2818SNick Kossifidis.section ".text" 13*e53d2818SNick KossifidisSYM_CODE_START(riscv_crash_save_regs) 14*e53d2818SNick Kossifidis REG_S ra, PT_RA(a0) /* x1 */ 15*e53d2818SNick Kossifidis REG_S sp, PT_SP(a0) /* x2 */ 16*e53d2818SNick Kossifidis REG_S gp, PT_GP(a0) /* x3 */ 17*e53d2818SNick Kossifidis REG_S tp, PT_TP(a0) /* x4 */ 18*e53d2818SNick Kossifidis REG_S t0, PT_T0(a0) /* x5 */ 19*e53d2818SNick Kossifidis REG_S t1, PT_T1(a0) /* x6 */ 20*e53d2818SNick Kossifidis REG_S t2, PT_T2(a0) /* x7 */ 21*e53d2818SNick Kossifidis REG_S s0, PT_S0(a0) /* x8/fp */ 22*e53d2818SNick Kossifidis REG_S s1, PT_S1(a0) /* x9 */ 23*e53d2818SNick Kossifidis REG_S a0, PT_A0(a0) /* x10 */ 24*e53d2818SNick Kossifidis REG_S a1, PT_A1(a0) /* x11 */ 25*e53d2818SNick Kossifidis REG_S a2, PT_A2(a0) /* x12 */ 26*e53d2818SNick Kossifidis REG_S a3, PT_A3(a0) /* x13 */ 27*e53d2818SNick Kossifidis REG_S a4, PT_A4(a0) /* x14 */ 28*e53d2818SNick Kossifidis REG_S a5, PT_A5(a0) /* x15 */ 29*e53d2818SNick Kossifidis REG_S a6, PT_A6(a0) /* x16 */ 30*e53d2818SNick Kossifidis REG_S a7, PT_A7(a0) /* x17 */ 31*e53d2818SNick Kossifidis REG_S s2, PT_S2(a0) /* x18 */ 32*e53d2818SNick Kossifidis REG_S s3, PT_S3(a0) /* x19 */ 33*e53d2818SNick Kossifidis REG_S s4, PT_S4(a0) /* x20 */ 34*e53d2818SNick Kossifidis REG_S s5, PT_S5(a0) /* x21 */ 35*e53d2818SNick Kossifidis REG_S s6, PT_S6(a0) /* x22 */ 36*e53d2818SNick Kossifidis REG_S s7, PT_S7(a0) /* x23 */ 37*e53d2818SNick Kossifidis REG_S s8, PT_S8(a0) /* x24 */ 38*e53d2818SNick Kossifidis REG_S s9, PT_S9(a0) /* x25 */ 39*e53d2818SNick Kossifidis REG_S s10, PT_S10(a0) /* x26 */ 40*e53d2818SNick Kossifidis REG_S s11, PT_S11(a0) /* x27 */ 41*e53d2818SNick Kossifidis REG_S t3, PT_T3(a0) /* x28 */ 42*e53d2818SNick Kossifidis REG_S t4, PT_T4(a0) /* x29 */ 43*e53d2818SNick Kossifidis REG_S t5, PT_T5(a0) /* x30 */ 44*e53d2818SNick Kossifidis REG_S t6, PT_T6(a0) /* x31 */ 45*e53d2818SNick Kossifidis 46*e53d2818SNick Kossifidis csrr t1, CSR_STATUS 47*e53d2818SNick Kossifidis csrr t2, CSR_EPC 48*e53d2818SNick Kossifidis csrr t3, CSR_TVAL 49*e53d2818SNick Kossifidis csrr t4, CSR_CAUSE 50*e53d2818SNick Kossifidis 51*e53d2818SNick Kossifidis REG_S t1, PT_STATUS(a0) 52*e53d2818SNick Kossifidis REG_S t2, PT_EPC(a0) 53*e53d2818SNick Kossifidis REG_S t3, PT_BADADDR(a0) 54*e53d2818SNick Kossifidis REG_S t4, PT_CAUSE(a0) 55*e53d2818SNick Kossifidis ret 56*e53d2818SNick KossifidisSYM_CODE_END(riscv_crash_save_regs) 57