[haiku-commits] haiku: hrev53059 - in src/system/libroot/os/arch/riscv64: . src/system/libroot/os

  • From: Alex von Gluck IV <kallisti5@xxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 10 Apr 2019 10:54:33 -0400 (EDT)

hrev53059 adds 1 changeset to branch 'master'
old head: d5ee99bbd7a278b668cab78341acc83b28ac3eaf
new head: f481aba1a636f8c420b3fda2b70cc3d017a5f17e
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=f481aba1a636+%5Ed5ee99bbd7a2

----------------------------------------------------------------------------

f481aba1a636: 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 <kallisti5@xxxxxxxxxxx>

                          [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev53059
Commit:      f481aba1a636f8c420b3fda2b70cc3d017a5f17e
URL:         https://git.haiku-os.org/haiku/commit/?id=f481aba1a636
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Wed Apr 10 13:17:22 2019 UTC
Committer:   Alex von Gluck IV <kallisti5@xxxxxxxxxxx>
Commit-Date: Wed Apr 10 14:54:30 2019 UTC

----------------------------------------------------------------------------

2 files changed, 51 insertions(+), 17 deletions(-)
src/system/libroot/os/arch/riscv64/syscalls.inc | 33 +++++++++++++++++++
src/system/libroot/os/syscalls.S                | 35 +++++++++++----------

----------------------------------------------------------------------------

diff --git a/src/system/libroot/os/arch/riscv64/syscalls.inc 
b/src/system/libroot/os/arch/riscv64/syscalls.inc
new file mode 100644
index 0000000000..031585d2d7
--- /dev/null
+++ b/src/system/libroot/os/arch/riscv64/syscalls.inc
@@ -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)
diff --git a/src/system/libroot/os/syscalls.S b/src/system/libroot/os/syscalls.S
index 2d773dda1e..4e4fb30593 100644
--- a/src/system/libroot/os/syscalls.S
+++ b/src/system/libroot/os/syscalls.S
@@ -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 */


Other related posts:

  • » [haiku-commits] haiku: hrev53059 - in src/system/libroot/os/arch/riscv64: . src/system/libroot/os - Alex von Gluck IV