git: 8ddb4b9b6668 - main - Extract the arm64 signal code to a new file
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 24 Dec 2021 11:59:59 UTC
The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=8ddb4b9b6668f88acc70042923384383247340dc commit 8ddb4b9b6668f88acc70042923384383247340dc Author: Andrew Turner <andrew@FreeBSD.org> AuthorDate: 2021-12-14 18:05:29 +0000 Commit: Andrew Turner <andrew@FreeBSD.org> CommitDate: 2021-12-24 11:59:43 +0000 Extract the arm64 signal code to a new file This will be used by the vdso signal trampoline on arm64. While here fix the license as this part of locore.S to correct the copyright owner. Sponsored by: The FreeBSD Foundation --- sys/arm64/arm64/locore.S | 25 +-------------------- sys/arm64/arm64/sigtramp.S | 55 ++++++++++++++++++++++++++++++++++++++++++++++ sys/conf/files.arm64 | 1 + 3 files changed, 57 insertions(+), 24 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index bc9a7271e93a..f5b8aec52897 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -790,30 +790,7 @@ initstack: initstack_end: -ENTRY(sigcode) - mov x0, sp - add x0, x0, #SF_UC - -1: - mov x8, #SYS_sigreturn - svc 0 - - /* sigreturn failed, exit */ - mov x8, #SYS_exit - svc 0 - - b 1b -END(sigcode) - /* This may be copied to the stack, keep it 16-byte aligned */ - .align 3 -esigcode: - - .data - .align 3 - .global szsigcode -szsigcode: - .quad esigcode - sigcode - +.text EENTRY(aarch32_sigcode) .word 0xe1a0000d // mov r0, sp .word 0xe2800040 // add r0, r0, #SIGF_UC diff --git a/sys/arm64/arm64/sigtramp.S b/sys/arm64/arm64/sigtramp.S new file mode 100644 index 000000000000..b06ec6fa109c --- /dev/null +++ b/sys/arm64/arm64/sigtramp.S @@ -0,0 +1,55 @@ +/*- + * Copyright (c) 2014 The FreeBSD Foundation + * + * This software was developed by Andrew Turner under sponsorship from + * the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "assym.inc" +#include <sys/syscall.h> +#include <machine/asm.h> + +ENTRY(sigcode) + mov x0, sp + add x0, x0, #SF_UC + +1: + mov x8, #SYS_sigreturn + svc 0 + + /* sigreturn failed, exit */ + mov x8, #SYS_exit + svc 0 + + b 1b +END(sigcode) + /* This may be copied to the stack, keep it 16-byte aligned */ + .align 3 +esigcode: + + .data + .align 3 + .global szsigcode +szsigcode: + .quad esigcode - sigcode diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index f941764ebd0f..56712d859d69 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -68,6 +68,7 @@ arm64/arm64/nexus.c standard arm64/arm64/ofw_machdep.c optional fdt arm64/arm64/pmap.c standard arm64/arm64/ptrace_machdep.c standard +arm64/arm64/sigtramp.S standard arm64/arm64/stack_machdep.c optional ddb | stack arm64/arm64/support.S standard arm64/arm64/swtch.S standard