]> 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>
Mon, 19 Feb 2018 07:50:31 +0000 (10:50 +0300)
Issue #208 (bdwgc).

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

include/private/gcconfig.h

index a8e55dd298e83685187b4f09e55a1d592f16608b..25f540937a3520ea377572ab210988d4f47f70b3 100644 (file)
 #   endif
 #   define mach_type_known
 # endif
+# if defined(__riscv) && defined(LINUX)
+#   if __riscv_xlen == 32
+#     define RISCV32
+#     define mach_type_known
+#   elif __riscv_xlen == 64
+#     define RISCV64
+#     define mach_type_known
+#   endif
+# endif
 
 # if defined(SN_TARGET_PSP2)
 #   define mach_type_known
 #   endif
 # endif
 
+# ifdef RISCV32
+#   define CPP_WORDSZ 32
+#   define MACH_TYPE "RISC-V32"
+#   define ALIGNMENT 4
+#   ifdef LINUX
+#     define OS_TYPE "LINUX"
+      extern int __data_start[];
+#     define DATASTART ((ptr_t)__data_start)
+#     define LINUX_STACKBOTTOM
+#     define DYNAMIC_LOADING
+#   endif
+# endif /* RISCV32 */
+
+# ifdef RISCV64
+#   define CPP_WORDSZ 64
+#   define MACH_TYPE "RISC-V64"
+#   define ALIGNMENT 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 /* RISCV64 */
+
 #if defined(__GLIBC__) && !defined(DONT_USE_LIBC_PRIVATES)
   /* Use glibc's stack-end marker. */
 # define USE_LIBC_PRIVATES