brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 692350e Raw
90 lines · plain
1//===-- xray_trampoline_riscv64.s ----------------------------------*- ASM -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file is a part of XRay, a dynamic runtime instrumentation system.10//11// This implements the riscv64-specific assembler for the trampolines.12//13//===----------------------------------------------------------------------===//14 15#include "../sanitizer_common/sanitizer_asm.h"16 17.macro SAVE_ARG_REGISTERS18	// Push return registers to stack19	addi	sp, sp, -14420        CFI_DEF_CFA_OFFSET(144)21        sd	ra, 136(sp)22        sd	a7, 128(sp)23        sd	a6, 120(sp)24        sd	a5, 112(sp)25        sd	a4, 104(sp)26        sd	a3, 96(sp)27        sd	a2, 88(sp)28        sd	a1, 80(sp)29        sd	a0, 72(sp)30        fsd	fa7, 64(sp)31        fsd	fa6, 56(sp)32        fsd	fa5, 48(sp)33        fsd	fa4, 40(sp)34        fsd	fa3, 32(sp)35        fsd	fa2, 24(sp)36        fsd	fa1, 16(sp)37        fsd	fa0, 8(sp)38.endm39 40.macro SAVE_RET_REGISTERS41	// Push return registers to stack42        addi    sp, sp, -4843        CFI_DEF_CFA_OFFSET(48)44        sd      ra, 40(sp)45        sd      a1, 32(sp)46        sd      a0, 24(sp)47        fsd     fa1, 16(sp)48        fsd     fa0, 8(sp)49.endm50 51.macro RESTORE_RET_REGISTERS52	// Restore return registers53        fld     fa0, 8(sp)54        fld     fa1, 16(sp)55        ld      a0, 24(sp)56        ld      a1, 32(sp)57        ld      ra, 40(sp)58        addi    sp, sp, 4859        CFI_DEF_CFA_OFFSET(0)60.endm61 62.macro RESTORE_ARG_REGISTERS63        // Restore argument registers64	fld	fa0, 8(sp)65	fld	fa1, 16(sp)66	fld	fa2, 24(sp)67	fld	fa3, 32(sp)68	fld	fa4, 40(sp)69	fld	fa5, 48(sp)70	fld	fa6, 56(sp)71	fld	fa7, 64(sp)72	ld	a0, 72(sp)73	ld	a1, 80(sp)74	ld	a2, 88(sp)75	ld	a3, 96(sp)76	ld	a4, 104(sp)77	ld	a5, 112(sp)78	ld	a6, 120(sp)79	ld	a7, 128(sp)80	ld	ra, 136(sp)81	addi	sp, sp, 14482        CFI_DEF_CFA_OFFSET(0)83.endm84 85.macro LOAD_XLEN, rd, src86        ld      \rd, \src87.endm88 89#include "xray_trampoline_riscv_common.S"90