From 673f5f3534cf0fd4e1316d1b7fede31f10878b46 Mon Sep 17 00:00:00 2001 From: Federico Ceratto Date: Fri, 6 Apr 2018 23:40:39 +0100 Subject: [PATCH] Add RISC-V (riscv64) support (#7417) --- compiler/platform.nim | 5 +++-- lib/system.nim | 3 ++- lib/system/platforms.nim | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/compiler/platform.nim b/compiler/platform.nim index 01ddba23ea..8b3bf6b744 100644 --- a/compiler/platform.nim +++ b/compiler/platform.nim @@ -176,7 +176,7 @@ type cpuNone, cpuI386, cpuM68k, cpuAlpha, cpuPowerpc, cpuPowerpc64, cpuPowerpc64el, cpuSparc, cpuVm, cpuIa64, cpuAmd64, cpuMips, cpuMipsel, cpuArm, cpuArm64, cpuJS, cpuNimrodVM, cpuAVR, cpuMSP430, cpuSparc64, - cpuMips64, cpuMips64el + cpuMips64, cpuMips64el, cpuRiscV64 type TEndian* = enum @@ -207,7 +207,8 @@ const (name: "msp430", intSize: 16, endian: littleEndian, floatSize: 32, bit: 16), (name: "sparc64", intSize: 64, endian: bigEndian, floatSize: 64, bit: 64), (name: "mips64", intSize: 64, endian: bigEndian, floatSize: 64, bit: 64), - (name: "mips64el", intSize: 64, endian: littleEndian, floatSize: 64, bit: 64)] + (name: "mips64el", intSize: 64, endian: littleEndian, floatSize: 64, bit: 64), + (name: "riscv64", intSize: 64, endian: littleEndian, floatSize: 64, bit: 64)] var targetCPU*, hostCPU*: TSystemCPU diff --git a/lib/system.nim b/lib/system.nim index 7eda302768..7733a1b20b 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1377,7 +1377,8 @@ const hostCPU* {.magic: "HostCPU".}: string = "" ## a string that describes the host CPU. Possible values: ## "i386", "alpha", "powerpc", "powerpc64", "powerpc64el", "sparc", - ## "amd64", "mips", "mipsel", "arm", "arm64", "mips64", "mips64el". + ## "amd64", "mips", "mipsel", "arm", "arm64", "mips64", "mips64el", + ## "riscv64". seqShallowFlag = low(int) strlitFlag = 1 shl (sizeof(int)*8 - 2) # later versions of the codegen \ diff --git a/lib/system/platforms.nim b/lib/system/platforms.nim index 8939615cd5..97f97e8ae6 100644 --- a/lib/system/platforms.nim +++ b/lib/system/platforms.nim @@ -29,8 +29,9 @@ type arm, ## ARM based processor arm64, ## ARM64 based processor vm, ## Some Virtual machine: Nim's VM or JavaScript - avr ## AVR based processor - msp430 ## TI MSP430 microcontroller + avr, ## AVR based processor + msp430, ## TI MSP430 microcontroller + riscv64 ## RISC-V 64-bit processor OsPlatform* {.pure.} = enum ## the OS this program will run on. none, dos, windows, os2, linux, morphos, skyos, solaris, @@ -84,5 +85,6 @@ const elif defined(vm): CpuPlatform.vm elif defined(avr): CpuPlatform.avr elif defined(msp430): CpuPlatform.msp430 + elif defined(riscv64): CpuPlatform.riscv64 else: CpuPlatform.none ## the CPU this program will run on.