libroot/syscall: Add riscv64, improve error handling

* Add generic riscv64 support.
* Previously, missing architecture syscall.inc's would
  result in obsecure unrecognized opcode messages.
* The logic should be identical, but with a friendly error.

Change-Id: I8f4878e99faf0f64465d2a27c3da2dd1e43c4ba5
Reviewed-on: https://review.haiku-os.org/c/1402
Reviewed-by: Alex von Gluck IV <[email protected]>
This commit is contained in:
Alexander von Gluck IV
2019-04-10 14:54:30 +00:00
committed by Alex von Gluck IV
parent d5ee99bbd7
commit f481aba1a6
2 changed files with 51 additions and 17 deletions
@@ -0,0 +1,33 @@
/*
** Copyright 2001-2007, Travis Geiselbrecht. All rights reserved.
** Distributed under the terms of the MIT License.
*/
/* TODO actuall syscalls? */
#define _SYSCALL(name, n) \
.globl name; \
.type name,%function; \
.align 4; \
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)
+18 -17
View File
@@ -1,29 +1,30 @@
#ifdef ARCH_x86
/*
* Copyright 2019, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#if defined(ARCH_x86)
# include "arch/x86/syscalls.inc"
#endif
#ifdef ARCH_x86_64
#elif defined(ARCH_x86_64)
# include "arch/x86_64/syscalls.inc"
#endif
#ifdef ARCH_alpha
#elif defined(ARCH_alpha)
# include "arch/alpha/syscalls.inc"
#endif
#ifdef ARCH_sh4
#elif defined(ARCH_sh4)
# include "arch/sh4/syscalls.inc"
#endif
#ifdef ARCH_sparc
#elif defined(ARCH_sparc)
# include "arch/sparc/syscalls.inc"
#endif
#ifdef ARCH_sparc64
#elif defined(ARCH_sparc64)
# include "arch/sparc64/syscalls.inc"
#endif
#ifdef ARCH_ppc
#elif defined(ARCH_ppc)
# include "arch/ppc/syscalls.inc"
#endif
#ifdef ARCH_arm
#elif defined(ARCH_arm)
# include "arch/arm/syscalls.inc"
#endif
#ifdef ARCH_m68k
#elif defined(ARCH_m68k)
# include "arch/m68k/syscalls.inc"
#elif defined(ARCH_riscv64)
# include "arch/riscv64/syscalls.inc"
#else
#error No syscalls macros defined for this architecture!
#endif
/* include the auto-generated file syscalls file */