xref: /freebsd/sys/arm64/arm64/sigtramp.S (revision c2e0d56f5e493a8514324fd5e062ddc99a68b599)
18ddb4b9bSAndrew Turner/*-
28ddb4b9bSAndrew Turner * Copyright (c) 2014 The FreeBSD Foundation
38ddb4b9bSAndrew Turner *
48ddb4b9bSAndrew Turner * This software was developed by Andrew Turner under sponsorship from
58ddb4b9bSAndrew Turner * the FreeBSD Foundation.
68ddb4b9bSAndrew Turner *
78ddb4b9bSAndrew Turner * Redistribution and use in source and binary forms, with or without
88ddb4b9bSAndrew Turner * modification, are permitted provided that the following conditions
98ddb4b9bSAndrew Turner * are met:
108ddb4b9bSAndrew Turner * 1. Redistributions of source code must retain the above copyright
118ddb4b9bSAndrew Turner *    notice, this list of conditions and the following disclaimer.
128ddb4b9bSAndrew Turner * 2. Redistributions in binary form must reproduce the above copyright
138ddb4b9bSAndrew Turner *    notice, this list of conditions and the following disclaimer in the
148ddb4b9bSAndrew Turner *    documentation and/or other materials provided with the distribution.
158ddb4b9bSAndrew Turner *
168ddb4b9bSAndrew Turner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
178ddb4b9bSAndrew Turner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
188ddb4b9bSAndrew Turner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
198ddb4b9bSAndrew Turner * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
208ddb4b9bSAndrew Turner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
218ddb4b9bSAndrew Turner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
228ddb4b9bSAndrew Turner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
238ddb4b9bSAndrew Turner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
248ddb4b9bSAndrew Turner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
258ddb4b9bSAndrew Turner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
268ddb4b9bSAndrew Turner * SUCH DAMAGE.
278ddb4b9bSAndrew Turner */
288ddb4b9bSAndrew Turner
298ddb4b9bSAndrew Turner#include "assym.inc"
30*c2e0d56fSAndrew Turner#include <sys/elf_common.h>
318ddb4b9bSAndrew Turner#include <sys/syscall.h>
328ddb4b9bSAndrew Turner#include <machine/asm.h>
338ddb4b9bSAndrew Turner
3437c1ef5aSAndrew Turner	.section .rodata, "a", %progbits
3537c1ef5aSAndrew Turner	.globl	sigcode
3637c1ef5aSAndrew Turner	.align 2
3737c1ef5aSAndrew Turnersigcode:
38db3a1eecSAndrew Turner	blr	x8
398ddb4b9bSAndrew Turner	mov	x0, sp
408ddb4b9bSAndrew Turner	add	x0, x0, #SF_UC
418ddb4b9bSAndrew Turner
428ddb4b9bSAndrew Turner1:
438ddb4b9bSAndrew Turner	mov	x8, #SYS_sigreturn
448ddb4b9bSAndrew Turner	svc	0
458ddb4b9bSAndrew Turner
468ddb4b9bSAndrew Turner	/* sigreturn failed, exit */
478ddb4b9bSAndrew Turner	mov	x8, #SYS_exit
488ddb4b9bSAndrew Turner	svc	0
498ddb4b9bSAndrew Turner
508ddb4b9bSAndrew Turner	b	1b
518ddb4b9bSAndrew Turner	/* This may be copied to the stack, keep it 16-byte aligned */
528ddb4b9bSAndrew Turner	.align	3
5337c1ef5aSAndrew Turner	.size sigcode, . - sigcode
548ddb4b9bSAndrew Turneresigcode:
558ddb4b9bSAndrew Turner
568ddb4b9bSAndrew Turner	.data
578ddb4b9bSAndrew Turner	.align	3
588ddb4b9bSAndrew Turner	.global	szsigcode
598ddb4b9bSAndrew Turnerszsigcode:
608ddb4b9bSAndrew Turner	.quad	esigcode - sigcode
61*c2e0d56fSAndrew Turner
62*c2e0d56fSAndrew TurnerGNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
63