From f98f9bccb85aed0a7fdf8244edbde979a7f333c0 Mon Sep 17 00:00:00 2001 From: David Karoly Date: Sat, 19 Feb 2022 10:30:30 +0100 Subject: [PATCH] libroot/arm: implement syscalls Change-Id: Id9b37d29b802b7f469fb109054ec6446f93511b5 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4979 Tested-by: Commit checker robot Reviewed-by: X512 Reviewed-by: Fredrik Holmqvist Reviewed-by: waddlesplash --- src/system/libroot/os/arch/arm/syscalls.inc | 119 ++++++-------------- 1 file changed, 35 insertions(+), 84 deletions(-) diff --git a/src/system/libroot/os/arch/arm/syscalls.inc b/src/system/libroot/os/arch/arm/syscalls.inc index 1e691f2416..a700043c1b 100644 --- a/src/system/libroot/os/arch/arm/syscalls.inc +++ b/src/system/libroot/os/arch/arm/syscalls.inc @@ -1,88 +1,39 @@ /* -** Copyright 2001, Travis Geiselbrecht. All rights reserved. -** Distributed under the terms of the NewOS License. -*/ -#define SYSCALL0(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: + * Copyright 2022 Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Copyright 2001, Travis Geiselbrecht. All rights reserved. + * Distributed under the terms of the NewOS License. + */ -#define SYSCALL1(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: +#include +#include -#define SYSCALL2(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL3(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL4(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL5(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL6(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL7(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL8(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL9(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL10(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL11(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL12(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: - -#define SYSCALL13(name, n) \ -.globl name; \ -.type name,%function; \ -.align 4; \ -name: +#define _SYSCALL(name, n) \ + .align 8; \ + FUNCTION(name): \ + svc n; \ + bx lr; \ + FUNCTION_END(name) +#define SYSCALL0(name, n) _SYSCALL(name, n) +#define SYSCALL1(name, n) _SYSCALL(name, n) +#define SYSCALL2(name, n) _SYSCALL(name, n) +#define SYSCALL3(name, n) _SYSCALL(name, n) +#define SYSCALL4(name, n) _SYSCALL(name, n) +#define SYSCALL5(name, n) _SYSCALL(name, n) +#define SYSCALL6(name, n) _SYSCALL(name, n) +#define SYSCALL7(name, n) _SYSCALL(name, n) +#define SYSCALL8(name, n) _SYSCALL(name, n) +#define SYSCALL9(name, n) _SYSCALL(name, n) +#define SYSCALL10(name, n) _SYSCALL(name, n) +#define SYSCALL11(name, n) _SYSCALL(name, n) +#define SYSCALL12(name, n) _SYSCALL(name, n) +#define SYSCALL13(name, n) _SYSCALL(name, n) +#define SYSCALL14(name, n) _SYSCALL(name, n) +#define SYSCALL15(name, n) _SYSCALL(name, n) +#define SYSCALL16(name, n) _SYSCALL(name, n) +#define SYSCALL17(name, n) _SYSCALL(name, n) +#define SYSCALL18(name, n) _SYSCALL(name, n) +#define SYSCALL19(name, n) _SYSCALL(name, n) +#define SYSCALL20(name, n) _SYSCALL(name, n)