File Index
Files and directories
Sign in
FILE

handlers.S

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/kvm/lib/riscv/handlers.S GAS
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * Copyright (c) 2023 Intel Corporation
  4 */
  5
  6#ifndef __ASSEMBLY__
  7#define __ASSEMBLY__
  8#endif
  9
 10#include <asm/csr.h>
 11
 12.macro save_context
 13	addi  sp, sp, (-8*36)
 14	sd    x1, 8(sp)
 15	sd    x2, 16(sp)
 16	sd    x3, 24(sp)
 17	sd    x4, 32(sp)
 18	sd    x5, 40(sp)
 19	sd    x6, 48(sp)
 20	sd    x7, 56(sp)
 21	sd    x8, 64(sp)
 22	sd    x9, 72(sp)
 23	sd    x10, 80(sp)
 24	sd    x11, 88(sp)
 25	sd    x12, 96(sp)
 26	sd    x13, 104(sp)
 27	sd    x14, 112(sp)
 28	sd    x15, 120(sp)
 29	sd    x16, 128(sp)
 30	sd    x17, 136(sp)
 31	sd    x18, 144(sp)
 32	sd    x19, 152(sp)
 33	sd    x20, 160(sp)
 34	sd    x21, 168(sp)
 35	sd    x22, 176(sp)
 36	sd    x23, 184(sp)
 37	sd    x24, 192(sp)
 38	sd    x25, 200(sp)
 39	sd    x26, 208(sp)
 40	sd    x27, 216(sp)
 41	sd    x28, 224(sp)
 42	sd    x29, 232(sp)
 43	sd    x30, 240(sp)
 44	sd    x31, 248(sp)
 45	csrr  s0, CSR_SEPC
 46	csrr  s1, CSR_SSTATUS
 47	csrr  s2, CSR_STVAL
 48	csrr  s3, CSR_SCAUSE
 49	sd    s0, 0(sp)
 50	sd    s1, 256(sp)
 51	sd    s2, 264(sp)
 52	sd    s3, 272(sp)
 53.endm
 54
 55.macro restore_context
 56	ld    s3, 272(sp)
 57	ld    s2, 264(sp)
 58	ld    s1, 256(sp)
 59	ld    s0, 0(sp)
 60	csrw  CSR_SCAUSE, s3
 61	csrw  CSR_SSTATUS, s1
 62	csrw  CSR_SEPC, s0
 63	ld    x31, 248(sp)
 64	ld    x30, 240(sp)
 65	ld    x29, 232(sp)
 66	ld    x28, 224(sp)
 67	ld    x27, 216(sp)
 68	ld    x26, 208(sp)
 69	ld    x25, 200(sp)
 70	ld    x24, 192(sp)
 71	ld    x23, 184(sp)
 72	ld    x22, 176(sp)
 73	ld    x21, 168(sp)
 74	ld    x20, 160(sp)
 75	ld    x19, 152(sp)
 76	ld    x18, 144(sp)
 77	ld    x17, 136(sp)
 78	ld    x16, 128(sp)
 79	ld    x15, 120(sp)
 80	ld    x14, 112(sp)
 81	ld    x13, 104(sp)
 82	ld    x12, 96(sp)
 83	ld    x11, 88(sp)
 84	ld    x10, 80(sp)
 85	ld    x9, 72(sp)
 86	ld    x8, 64(sp)
 87	ld    x7, 56(sp)
 88	ld    x6, 48(sp)
 89	ld    x5, 40(sp)
 90	ld    x4, 32(sp)
 91	ld    x3, 24(sp)
 92	ld    x2, 16(sp)
 93	ld    x1, 8(sp)
 94	addi  sp, sp, (8*36)
 95.endm
 96
 97.balign 4
 98.global exception_vectors
 99exception_vectors:
100	save_context
101	move  a0, sp
102	call  route_exception
103	restore_context
104	sret
~/ Read-only file preview.