diff --git a/sys/amd64/linux/linux_locore.asm b/sys/amd64/linux/linux_locore.asm index 4e358f583a45..dd482cb87cc8 100644 --- a/sys/amd64/linux/linux_locore.asm +++ b/sys/amd64/linux/linux_locore.asm @@ -1,108 +1,82 @@ /* $FreeBSD$ */ #include "linux_assym.h" /* system definitions */ #include /* miscellaneous asm macros */ #include /* system call numbers */ .data .globl linux_platform linux_platform: .asciz "x86_64" .text /* * To avoid excess stack frame the signal trampoline code emulates * the 'call' instruction. */ ENTRY(linux_rt_sigcode) movq %rsp, %rbx /* preserve sigframe */ call .getip .getip: popq %rax add $.startrtsigcode-.getip, %rax /* ret address */ pushq %rax jmp *LINUX_RT_SIGF_HANDLER(%rbx) .startrtsigcode: movq $LINUX_SYS_linux_rt_sigreturn,%rax /* linux_rt_sigreturn() */ syscall /* enter kernel with args */ hlt .endrtsigcode: 0: jmp 0b -ENTRY(__vdso_clock_gettime) - movq $LINUX_SYS_linux_clock_gettime,%rax - syscall - ret -.weak clock_gettime -.set clock_gettime, __vdso_clock_gettime - -ENTRY(__vdso_time) - movq $LINUX_SYS_linux_time,%rax - syscall - ret -.weak time -.set time, __vdso_time - -ENTRY(__vdso_gettimeofday) - movq $LINUX_SYS_gettimeofday,%rax - syscall - ret -.weak gettimeofday -.set gettimeofday, __vdso_gettimeofday - -ENTRY(__vdso_getcpu) - movq $-38,%rax /* not implemented */ - ret -.weak getcpu -.set getcpu, __vdso_getcpu #if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 .long 4f - 3f /* descsz */ .long 0 1: .asciz "Linux" 2: .balign 4 3: .long LINUX_VERSION_CODE 4: .balign 4 .previous #endif .section .eh_frame,"a",@progbits .LSTARTFRAMEDLSI0: .long .LENDCIEDLSI0-.LSTARTCIEDLSI0 .LSTARTCIEDLSI0: .long 0 /* CIE ID */ .byte 1 /* Version number */ .string "zR" /* NULL-terminated * augmentation string */ .uleb128 1 /* Code alignment factor */ .sleb128 -4 /* Data alignment factor */ .byte 8 /* Return address register column */ .uleb128 1 /* Augmentation value length */ .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ .byte 0x0c /* DW_CFA_def_cfa */ .uleb128 4 .uleb128 4 .byte 0x88 /* DW_CFA_offset, column 0x8 */ .uleb128 1 .align 4 .LENDCIEDLSI0: .long .LENDFDEDLSI0-.LSTARTFDEDLSI0 /* Length FDE */ .LSTARTFDEDLSI0: .long .LSTARTFDEDLSI0-.LSTARTFRAMEDLSI0 /* CIE pointer */ .long .startrtsigcode-. /* PC-relative start address */ .long .endrtsigcode-.startrtsigcode .uleb128 0 .align 4 .LENDFDEDLSI0: .previous diff --git a/sys/arm64/linux/linux_locore.asm b/sys/arm64/linux/linux_locore.asm index 5f0729b363e8..24a48d74f7b5 100644 --- a/sys/arm64/linux/linux_locore.asm +++ b/sys/arm64/linux/linux_locore.asm @@ -1,67 +1,50 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (C) 2018 Turing Robotic Industries Inc. * Copyright (C) 2020 Andrew Turner * * 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. * * $FreeBSD$ */ /* * arm64 Linux VDSO implementation. */ #include #include .data .globl linux_platform linux_platform: .asciz "aarch64" .text ENTRY(__kernel_rt_sigreturn) brk #0 /* LINUXTODO: implement __kernel_rt_sigreturn */ ret END(__kernel_rt_sigreturn) - -ENTRY(__kernel_gettimeofday) - ldr x8, =LINUX_SYS_gettimeofday - svc #0 - ret -END(__kernel_gettimeofday) - -ENTRY(__kernel_clock_gettime) - ldr x8, =LINUX_SYS_linux_clock_gettime - svc #0 - ret -END(__kernel_clock_gettime) - -ENTRY(__kernel_clock_getres) - brk #0 /* LINUXTODO: implement __kernel_clock_getres */ - ret -END(__kernel_clock_getres)