brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 05e3d61 Raw
90 lines · plain
1//===-- xray_trampoline_riscv32.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 riscv32-specific assembler for the trampolines.12//13//===----------------------------------------------------------------------===//14 15#include "../sanitizer_common/sanitizer_asm.h"16 17.macro SAVE_ARG_REGISTERS18	// Push argument registers to stack19	addi	sp, sp, -11220        CFI_DEF_CFA_OFFSET(112)21	sw	ra, 108(sp)22	sw	a7, 104(sp)23	sw	a6, 100(sp)24	sw	a5, 96(sp)25	sw	a4, 92(sp)26	sw	a3, 88(sp)27	sw	a2, 84(sp)28	sw	a1, 80(sp)29	sw	a0, 76(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 RESTORE_ARG_REGISTERS41	// Restore argument registers42	fld	fa0, 8(sp)43	fld	fa1, 16(sp)44	fld	fa2, 24(sp)45	fld	fa3, 32(sp)46	fld	fa4, 40(sp)47	fld	fa5, 48(sp)48	fld	fa6, 56(sp)49	fld	fa7, 64(sp)50	lw	a0, 76(sp)51	lw	a1, 80(sp)52	lw	a2, 84(sp)53	lw	a3, 88(sp)54	lw	a4, 92(sp)55	lw	a5, 96(sp)56	lw	a6, 100(sp)57	lw	a7, 104(sp)58	lw	ra, 108(sp)59	addi	sp, sp, 11260        CFI_DEF_CFA_OFFSET(0)61.endm62 63.macro SAVE_RET_REGISTERS64	// Push return registers to stack65	addi	sp, sp, -3266        CFI_DEF_CFA_OFFSET(32)67	sw	ra, 28(sp)68	sw	a1, 24(sp)69	sw	a0, 20(sp)70	fsd	fa1, 8(sp)71	fsd	fa0, 0(sp)72.endm73 74.macro RESTORE_RET_REGISTERS75	// Restore return registers76	fld	fa0, 0(sp)77	fld	fa1, 8(sp)78	lw	a0, 20(sp)79	lw	a1, 24(sp)80	lw	ra, 28(sp)81	addi	sp, sp, 3282        CFI_DEF_CFA_OFFSET(0)83.endm84 85.macro LOAD_XLEN, rd, src86        lw      \rd, \src87.endm88 89#include "xray_trampoline_riscv_common.S"90