/* SPDX-License-Identifier: BSD-2-Clause */ /* * Copyright (c) 2014, STMicroelectronics International N.V. * Copyright (c) 2015, Linaro Limited * Copyright (c) 2020, Arm Limited */ #include .section .text .balign 4 .code 32 .macro LDELF_SYSCALL name, scn, num_args FUNC \name , : .if \num_args > 8 .error "Too many arguments for syscall" .endif push {r5-r7, lr} UNWIND( .save {r5-r7, lr}) mov r7, #(\scn) .if \num_args <= 4 @ No arguments passed on stack mov r6, #0 .else @ Tell number of arguments passed on the stack mov r6, #(\num_args - 4) @ Point just before the push (4 registers) above on the first argument add r5, sp, #(4 * 4) .endif svc #0 pop {r5-r7, pc} END_FUNC \name .endm FUNC _ldelf_panic, : push {r0-r11, lr} UNWIND( .save {r0-r11, lr}) mov lr, pc push {lr} UNWIND( .save {lr}) mov r1, sp bl __ldelf_panic /* Not reached */ END_FUNC _ldelf_panic #include "syscalls_asm.S"