summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
Diffstat (limited to 'rtl')
-rw-r--r--rtl/Makefile10
-rw-r--r--rtl/aix/Makefile8
-rw-r--r--rtl/amiga/Makefile8
-rw-r--r--rtl/android/Makefile10
-rw-r--r--rtl/android/jvm/Makefile8
-rw-r--r--rtl/aros/Makefile8
-rw-r--r--rtl/atari/Makefile8
-rw-r--r--rtl/beos/Makefile8
-rw-r--r--rtl/darwin/Makefile8
-rw-r--r--rtl/dragonfly/Makefile8
-rw-r--r--rtl/embedded/Makefile8
-rw-r--r--rtl/emx/Makefile8
-rw-r--r--rtl/freebsd/Makefile8
-rw-r--r--rtl/freertos/Makefile8
-rw-r--r--rtl/gba/Makefile8
-rw-r--r--rtl/go32v2/Makefile8
-rw-r--r--rtl/haiku/Makefile8
-rw-r--r--rtl/java/Makefile8
-rw-r--r--rtl/linux/Makefile12
-rw-r--r--rtl/linux/Makefile.fpc2
-rw-r--r--rtl/linux/riscv64/si_c.inc8
-rw-r--r--rtl/linux/riscv64/si_g.inc106
-rw-r--r--rtl/macos/Makefile8
-rw-r--r--rtl/morphos/Makefile8
-rw-r--r--rtl/msdos/Makefile8
-rw-r--r--rtl/msxdos/Makefile8
-rw-r--r--rtl/nativent/Makefile8
-rw-r--r--rtl/nds/Makefile8
-rw-r--r--rtl/netbsd/Makefile8
-rw-r--r--rtl/netware/Makefile8
-rw-r--r--rtl/netwlibc/Makefile8
-rw-r--r--rtl/openbsd/Makefile8
-rw-r--r--rtl/os2/Makefile8
-rw-r--r--rtl/palmos/Makefile8
-rw-r--r--rtl/solaris/Makefile8
-rw-r--r--rtl/symbian/Makefile8
-rw-r--r--rtl/unix/cthreads.pp28
-rw-r--r--rtl/watcom/Makefile8
-rw-r--r--rtl/wii/Makefile8
-rw-r--r--rtl/win16/Makefile8
-rw-r--r--rtl/win32/Makefile8
-rw-r--r--rtl/win64/Makefile8
-rw-r--r--rtl/wince/Makefile8
-rw-r--r--rtl/zxspectrum/Makefile8
44 files changed, 461 insertions, 11 deletions
diff --git a/rtl/Makefile b/rtl/Makefile
index fd5ad7b82d..f674611cb9 100644
--- a/rtl/Makefile
+++ b/rtl/Makefile
@@ -912,10 +912,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -1523,7 +1531,7 @@ ifdef CREATESHARED
override FPCOPT+=-Cg
endif
ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)
override FPCOPT+=-Cg
endif
endif
diff --git a/rtl/aix/Makefile b/rtl/aix/Makefile
index b42a8b6f8b..fcf9c0b289 100644
--- a/rtl/aix/Makefile
+++ b/rtl/aix/Makefile
@@ -2200,10 +2200,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/amiga/Makefile b/rtl/amiga/Makefile
index b2aa554816..abefef6e2e 100644
--- a/rtl/amiga/Makefile
+++ b/rtl/amiga/Makefile
@@ -2514,10 +2514,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/android/Makefile b/rtl/android/Makefile
index a821ab7477..588279ec22 100644
--- a/rtl/android/Makefile
+++ b/rtl/android/Makefile
@@ -2893,7 +2893,7 @@ endif
ifeq ($(FULL_TARGET),z80-amstradcpc)
override COMPILER_TARGETDIR+=.
endif
-override SHARED_LIBUNITS=$(SYSTEMUNIT) objpas strings dos unix baseunix unixtype unixutil sysutils typinfo math $(CPU_UNITS) getopts errors sockets sortbase classes fgl sysconst rtlconsts
+override SHARED_LIBUNITS=$(SYSTEMUNIT) objpas strings dos unix baseunix unixtype unixutil sysutils typinfo math $(CPU_UNITS) getopts errors sockets sortbase classes fgl sysconst rtlconsts
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
endif
@@ -3143,10 +3143,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/android/jvm/Makefile b/rtl/android/jvm/Makefile
index 8f94b9a9af..6a42f30a57 100644
--- a/rtl/android/jvm/Makefile
+++ b/rtl/android/jvm/Makefile
@@ -1556,10 +1556,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/aros/Makefile b/rtl/aros/Makefile
index 8cd0a2f9b5..0c0b595b58 100644
--- a/rtl/aros/Makefile
+++ b/rtl/aros/Makefile
@@ -2508,10 +2508,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/atari/Makefile b/rtl/atari/Makefile
index 259c023e2d..1ba07a7167 100644
--- a/rtl/atari/Makefile
+++ b/rtl/atari/Makefile
@@ -2502,10 +2502,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/beos/Makefile b/rtl/beos/Makefile
index dd8d179a88..a3a36ff2e2 100644
--- a/rtl/beos/Makefile
+++ b/rtl/beos/Makefile
@@ -2817,10 +2817,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/darwin/Makefile b/rtl/darwin/Makefile
index db0cb98a43..5240dfc177 100644
--- a/rtl/darwin/Makefile
+++ b/rtl/darwin/Makefile
@@ -2204,10 +2204,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/dragonfly/Makefile b/rtl/dragonfly/Makefile
index 60af0f32be..7f56af4881 100644
--- a/rtl/dragonfly/Makefile
+++ b/rtl/dragonfly/Makefile
@@ -2514,10 +2514,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/embedded/Makefile b/rtl/embedded/Makefile
index acb5650df5..a27dfb032d 100644
--- a/rtl/embedded/Makefile
+++ b/rtl/embedded/Makefile
@@ -2041,10 +2041,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/emx/Makefile b/rtl/emx/Makefile
index 4b87a872a9..95420fcce3 100644
--- a/rtl/emx/Makefile
+++ b/rtl/emx/Makefile
@@ -2506,10 +2506,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/freebsd/Makefile b/rtl/freebsd/Makefile
index 68c7398d66..471da7dbb1 100644
--- a/rtl/freebsd/Makefile
+++ b/rtl/freebsd/Makefile
@@ -2519,10 +2519,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/freertos/Makefile b/rtl/freertos/Makefile
index c861506a2e..3d2eb2c559 100644
--- a/rtl/freertos/Makefile
+++ b/rtl/freertos/Makefile
@@ -2355,10 +2355,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/gba/Makefile b/rtl/gba/Makefile
index b15a524c4e..1dd205578d 100644
--- a/rtl/gba/Makefile
+++ b/rtl/gba/Makefile
@@ -2188,10 +2188,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/go32v2/Makefile b/rtl/go32v2/Makefile
index ac215f6715..a728761e3a 100644
--- a/rtl/go32v2/Makefile
+++ b/rtl/go32v2/Makefile
@@ -2507,10 +2507,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/haiku/Makefile b/rtl/haiku/Makefile
index b71195983d..435bb6e89b 100644
--- a/rtl/haiku/Makefile
+++ b/rtl/haiku/Makefile
@@ -2825,10 +2825,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/java/Makefile b/rtl/java/Makefile
index 0bf77b9247..97299656c6 100644
--- a/rtl/java/Makefile
+++ b/rtl/java/Makefile
@@ -1560,10 +1560,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/linux/Makefile b/rtl/linux/Makefile
index c8bcf0f398..7f5531f0b0 100644
--- a/rtl/linux/Makefile
+++ b/rtl/linux/Makefile
@@ -382,7 +382,7 @@ SYSINIT_UNITS=si_prc si_dll si_c
endif
ifeq ($(ARCH),riscv64)
override LOADERS=
-SYSINIT_UNITS=si_prc si_dll si_c
+SYSINIT_UNITS=si_prc si_dll si_c si_g
endif
ifeq ($(ARCH),mipsel)
override FPCOPT+=-Ur
@@ -3177,10 +3177,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -3788,7 +3796,7 @@ ifdef CREATESHARED
override FPCOPT+=-Cg
endif
ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)
override FPCOPT+=-Cg
endif
endif
diff --git a/rtl/linux/Makefile.fpc b/rtl/linux/Makefile.fpc
index 310d467d84..fca8b2ef55 100644
--- a/rtl/linux/Makefile.fpc
+++ b/rtl/linux/Makefile.fpc
@@ -98,7 +98,7 @@ endif
ifeq ($(ARCH),riscv64)
override LOADERS=
-SYSINIT_UNITS=si_prc si_dll si_c
+SYSINIT_UNITS=si_prc si_dll si_c si_g
endif
# mipsel reuses mips files by including so some file names exist
diff --git a/rtl/linux/riscv64/si_c.inc b/rtl/linux/riscv64/si_c.inc
index 942372e934..87dcd050b6 100644
--- a/rtl/linux/riscv64/si_c.inc
+++ b/rtl/linux/riscv64/si_c.inc
@@ -16,11 +16,7 @@
******************************************************************************}
var
- dlexitproc : pointer;
-
-var
BSS_START: record end; external name '__bss_start';
- STACK_PTR: record end; external name '__stkptr';
{ as we do not call these procedures directly, calling conventions do not matter and
even if we did, we use c calling conventions anyways }
@@ -53,7 +49,7 @@ procedure _FPC_proc_start; assembler; nostackframe; public name '_start';
.option push
.option norelax
.L1:
- auipc gp, %pcrel_hi(BSS_START+0x7f8)
+ auipc gp, %pcrel_hi(BSS_START+0x800)
addi gp, gp, %pcrel_lo(.L1)
.option pop
@@ -89,7 +85,7 @@ procedure _FPC_proc_haltproc(e:longint); cdecl; public name '_haltproc';
.option push
.option norelax
.L1:
- auipc gp, %pcrel_hi(BSS_START+0x7f8)
+ auipc gp, %pcrel_hi(BSS_START+0x800)
addi gp, gp, %pcrel_lo(.L1)
.option pop
jalr x0, x1
diff --git a/rtl/linux/riscv64/si_g.inc b/rtl/linux/riscv64/si_g.inc
new file mode 100644
index 0000000000..64131f8948
--- /dev/null
+++ b/rtl/linux/riscv64/si_g.inc
@@ -0,0 +1,106 @@
+{
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 2019 by Jeppe Johansen.
+
+ See the file COPYING.FPC, included in this distribution,
+ for details about the copyright.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{******************************************************************************
+ Process start/halt
+ ******************************************************************************}
+{$linklib c}
+{$linklib gcc}
+
+var
+ BSS_START: record end; external name '__bss_start';
+ _etext: pointer; external name '_etext';
+
+{ as we do not call these procedures directly, calling conventions do not matter and
+ even if we did, we use c calling conventions anyways }
+procedure __libc_csu_init; external name '__libc_csu_init';
+procedure __libc_csu_fini; external name '__libc_csu_fini';
+
+procedure libc_start_main(main: TProcedure; argc: ptruint; argv: ppchar; init, fini, rtld_fini: TProcedure; stack_end: pointer); cdecl; external name '__libc_start_main';
+procedure libc_exit(code: ptruint); cdecl; external name 'exit';
+
+procedure monstartup(low_pc,high_pc: pointer); cdecl; external;
+procedure _mcleanup; cdecl; external;
+procedure atexit(p: pointer); cdecl; external;
+
+procedure _FPC_rv_enter(at_exit: TProcedure; sp: pptruint);
+ var
+ argc: ptruint;
+ argv: ppchar;
+ begin
+ argc:=sp[0];
+ argv:=@sp[1];
+
+ initialstkptr:=sp;
+ operatingsystem_parameter_argc:=argc;
+ operatingsystem_parameter_argv:=argv;
+ operatingsystem_parameter_envp:=@sp[argc+2];
+
+ monstartup(@_FPC_rv_enter,@_etext);
+ atexit(@_mcleanup);
+
+ libc_start_main(@PascalMain, argc, argv, @__libc_csu_init, @__libc_csu_fini, at_exit, sp);
+ end;
+
+
+procedure _FPC_proc_start; assembler; nostackframe; public name '_start';
+ asm
+ { set up GP }
+ .option push
+ .option norelax
+.L1:
+ auipc gp, %pcrel_hi(BSS_START+0x800)
+ addi gp, gp, %pcrel_lo(.L1)
+ .option pop
+
+ { Initialise FP to zero }
+ addi fp, x0, 0
+
+ { atexit is in a0 }
+ addi a1, sp, 0
+ jal x1, _FPC_rv_enter
+ end;
+
+
+procedure _FPC_rv_exit(e:longint); assembler; nostackframe;
+ asm
+ addi a7, x0, 94
+ ecall
+ end;
+
+
+procedure _FPC_proc_haltproc(e:longint); cdecl; public name '_haltproc';
+ begin
+ while true do
+ begin
+ libc_exit(e);
+ _FPC_rv_exit(e);
+ end;
+ end;
+
+
+ procedure initgp; assembler; nostackframe;
+ asm
+ .Linitgp:
+ .option push
+ .option norelax
+ .L1:
+ auipc gp, %pcrel_hi(BSS_START+0x800)
+ addi gp, gp, %pcrel_lo(.L1)
+ .option pop
+ jalr x0, x1
+
+ .section ".preinit_array","aw"
+ .dc.a .Linitgp
+ .text
+ end;
diff --git a/rtl/macos/Makefile b/rtl/macos/Makefile
index 5681fbefaf..6634aa920d 100644
--- a/rtl/macos/Makefile
+++ b/rtl/macos/Makefile
@@ -2191,10 +2191,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/morphos/Makefile b/rtl/morphos/Makefile
index 76951f4959..2c21fb610e 100644
--- a/rtl/morphos/Makefile
+++ b/rtl/morphos/Makefile
@@ -2189,10 +2189,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/msdos/Makefile b/rtl/msdos/Makefile
index 742e6201cc..b644658c6f 100644
--- a/rtl/msdos/Makefile
+++ b/rtl/msdos/Makefile
@@ -2189,10 +2189,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/msxdos/Makefile b/rtl/msxdos/Makefile
index e39ff445a4..c462acc711 100644
--- a/rtl/msxdos/Makefile
+++ b/rtl/msxdos/Makefile
@@ -1874,10 +1874,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/nativent/Makefile b/rtl/nativent/Makefile
index 70ef9d1b94..8f7148bed8 100644
--- a/rtl/nativent/Makefile
+++ b/rtl/nativent/Makefile
@@ -2197,10 +2197,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/nds/Makefile b/rtl/nds/Makefile
index 3199fa41d2..c215edb37d 100644
--- a/rtl/nds/Makefile
+++ b/rtl/nds/Makefile
@@ -2188,10 +2188,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/netbsd/Makefile b/rtl/netbsd/Makefile
index e9d7e101ec..b6d37d8b65 100644
--- a/rtl/netbsd/Makefile
+++ b/rtl/netbsd/Makefile
@@ -2516,10 +2516,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/netware/Makefile b/rtl/netware/Makefile
index 9e7ed8f7b5..98de96a64b 100644
--- a/rtl/netware/Makefile
+++ b/rtl/netware/Makefile
@@ -2510,10 +2510,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/netwlibc/Makefile b/rtl/netwlibc/Makefile
index 501176d8f7..981ba89934 100644
--- a/rtl/netwlibc/Makefile
+++ b/rtl/netwlibc/Makefile
@@ -2503,10 +2503,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/openbsd/Makefile b/rtl/openbsd/Makefile
index 20f26e26e4..ff9a8e5bf5 100644
--- a/rtl/openbsd/Makefile
+++ b/rtl/openbsd/Makefile
@@ -2521,10 +2521,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/os2/Makefile b/rtl/os2/Makefile
index a4c66cfa71..1abba18e7a 100644
--- a/rtl/os2/Makefile
+++ b/rtl/os2/Makefile
@@ -2506,10 +2506,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/palmos/Makefile b/rtl/palmos/Makefile
index b649c56ed6..24dc3ab881 100644
--- a/rtl/palmos/Makefile
+++ b/rtl/palmos/Makefile
@@ -2187,10 +2187,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/solaris/Makefile b/rtl/solaris/Makefile
index 623b1989cd..159a83f1d2 100644
--- a/rtl/solaris/Makefile
+++ b/rtl/solaris/Makefile
@@ -2200,10 +2200,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/symbian/Makefile b/rtl/symbian/Makefile
index 5eccbbe1c8..9c0a7643ab 100644
--- a/rtl/symbian/Makefile
+++ b/rtl/symbian/Makefile
@@ -1870,10 +1870,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/unix/cthreads.pp b/rtl/unix/cthreads.pp
index fe7ce7cfc9..58eab49fc1 100644
--- a/rtl/unix/cthreads.pp
+++ b/rtl/unix/cthreads.pp
@@ -116,41 +116,69 @@ Type PINTRTLEvent = ^TINTRTLEvent;
procedure CInitThreadvar(var offset : dword;size : dword);
begin
{$ifdef cpusparc}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpusparc}
{$ifdef cpusparc64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpusparc64}
{$ifdef cpupowerpc}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,8);
{$endif cpupowerc}
{$ifdef cpui386}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,8);
{$endif cpui386}
{$ifdef cpuarm}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,4);
{$endif cpuarm}
{$ifdef cpum68k}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,2);
{$endif cpum68k}
{$ifdef cpux86_64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpux86_64}
{$ifdef cpupowerpc64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpupowerpc64}
{$ifdef cpuaarch64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpuaarch64}
+ {$ifdef cpuriscv}
+ {$define threadvarblocksize_set}
+ threadvarblocksize:=align(threadvarblocksize,16);
+ {$endif cpuriscv}
+
+ {$ifdef cpumips}
+ {$define threadvarblocksize_set}
+ threadvarblocksize:=align(threadvarblocksize,16);
+ {$endif cpumips}
+
+ {$ifdef cpuxtensa}
+ {$define threadvarblocksize_set}
+ threadvarblocksize:=align(threadvarblocksize,16);
+ {$endif cpuxtensa}
+
+ {$ifndef threadvarblocksize_set}
+ {$error threadvarblocksize must be set! }
+ {$endif threadvarblocksize_set}
+
offset:=threadvarblocksize;
inc(threadvarblocksize,size);
diff --git a/rtl/watcom/Makefile b/rtl/watcom/Makefile
index 9a8bd17a86..0d6bf3300f 100644
--- a/rtl/watcom/Makefile
+++ b/rtl/watcom/Makefile
@@ -2505,10 +2505,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/wii/Makefile b/rtl/wii/Makefile
index 589103d26a..25f8f2713d 100644
--- a/rtl/wii/Makefile
+++ b/rtl/wii/Makefile
@@ -1873,10 +1873,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/win16/Makefile b/rtl/win16/Makefile
index a8c7490a16..53c74158fd 100644
--- a/rtl/win16/Makefile
+++ b/rtl/win16/Makefile
@@ -1874,10 +1874,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/win32/Makefile b/rtl/win32/Makefile
index 31d8b8dcf6..78237537b0 100644
--- a/rtl/win32/Makefile
+++ b/rtl/win32/Makefile
@@ -2503,10 +2503,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/win64/Makefile b/rtl/win64/Makefile
index c7f4201f3a..809855dc2d 100644
--- a/rtl/win64/Makefile
+++ b/rtl/win64/Makefile
@@ -2507,10 +2507,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/wince/Makefile b/rtl/wince/Makefile
index daddf45623..0555280094 100644
--- a/rtl/wince/Makefile
+++ b/rtl/wince/Makefile
@@ -1876,10 +1876,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/zxspectrum/Makefile b/rtl/zxspectrum/Makefile
index c24011ad87..98c64fb8bc 100644
--- a/rtl/zxspectrum/Makefile
+++ b/rtl/zxspectrum/Makefile
@@ -1559,10 +1559,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif