]> granicus.if.org Git - gc/commitdiff
Add initial RISC-V support
authorShea Levy <shea@shealevy.com>
Sun, 18 Feb 2018 06:37:12 +0000 (01:37 -0500)
committerIvan Maidanski <ivmai@mail.ru>
Thu, 26 Apr 2018 21:49:50 +0000 (00:49 +0300)
(back-port of commits 4f7f0eebd3b008f79e from 'master')

Issue #208 (bdwgc).

* include/private/gcconfig.h [__riscv && LINUX] (RISCV,
mach_type_known): Define macro.
* include/private/gcconfig.h [RISCV] (MACH_TYPE): Likewise.
* include/private/gcconfig.h [RISCV && LINUX] (OS_TYPE, DATASTART,
LINUX_STACKBOTTOM, DYNAMIC_LOADING): Likewise.
* include/private/gcconfig.h [RISCV && LINUX] (__data_start): Declare
external variable.
* include/private/gcconfig.h [RISCV] (CPP_WORDSZ, ALIGNMENT): Define
using __riscv_xlen.

include/private/gcconfig.h

index 052e773a4e3e43b81be03ebd457f47cc0a881db5..30d4ef316d454e020b5d78840b8b6b2eb65e8703 100644 (file)
 #   endif
 #   define mach_type_known
 # endif
+# if defined(__riscv) && defined(LINUX)
+#   define RISCV
+#   define mach_type_known
+# endif
 
 # if defined(SYMBIAN)
 #   define mach_type_known
 #   endif
 # endif
 
+# ifdef RISCV
+#   define MACH_TYPE "RISC-V"
+#   define CPP_WORDSZ __riscv_xlen /* 32 or 64 */
+#   define ALIGNMENT (CPP_WORDSZ/8)
+#   ifdef LINUX
+#     define OS_TYPE "LINUX"
+      extern int __data_start[];
+#     define DATASTART ((ptr_t)__data_start)
+#     define LINUX_STACKBOTTOM
+#     define DYNAMIC_LOADING
+#   endif
+# endif /* RISCV */
+
 #if defined(__GLIBC__) && !defined(DONT_USE_LIBC_PRIVATES)
   /* Use glibc's stack-end marker. */
 # define USE_LIBC_PRIVATES