commit d853268357f02d13ca7377e2391b8ebb6290daad
parent faf643c9afc0a74b276f24a8fdb4ba8552e351b3
Author: Roberto E. Vargas Caballero <k0ga@shike2.net>
Date: Wed, 4 Jun 2025 16:08:26 +0200
cc2: Add support for qbe riscv64
Diffstat:
5 files changed, 130 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -29,6 +29,7 @@ deps.mk
/src/cmd/scc-cc/cc2/cc2-i386-sysv
/src/cmd/scc-cc/cc2/cc2-qbe_amd64-sysv
/src/cmd/scc-cc/cc2/cc2-qbe_arm64-sysv
+/src/cmd/scc-cc/cc2/cc2-qbe_riscv64-sysv
/src/cmd/scc-cc/cc2/cc2-z80-scc
/src/cmd/scc-cc/posix/scc
/src/cmd/scc-cc/posix/scc-cc
diff --git a/src/cmd/scc-cc/cc2/Makefile b/src/cmd/scc-cc/cc2/Makefile
@@ -7,6 +7,7 @@ DIRS =\
qbe\
qbe_amd64-sysv\
qbe_arm64-sysv\
+ qbe_riscv64-sysv\
z80-scc\
PROJECTDIR = ../../../..
@@ -35,6 +36,10 @@ QBE_ARM64_SYSV_OBJS=\
qbe_arm64-sysv/builtin.o\
$(QBE_OBJS)\
+QBE_RISCV64_SYSV_OBJS=\
+ qbe_riscv64-sysv/builtin.o\
+ $(QBE_OBJS)\
+
Z80_SCC_OBJS =\
z80-scc/builtin.o\
$(OBJS) \
@@ -42,6 +47,7 @@ Z80_SCC_OBJS =\
TARGET =\
cc2-qbe_amd64-sysv\
cc2-qbe_arm64-sysv\
+ cc2-qbe_riscv64-sysv\
cc2-z80-scc\
all:
@@ -65,6 +71,9 @@ cc2-qbe_amd64-sysv: $(LIBSCC) $(QBE_AMD64_SYSV_OBJS)
cc2-qbe_arm64-sysv: $(LIBSCC) $(QBE_ARM64_SYSV_OBJS)
$(CC) $(PROJ_LDFLAGS) $(QBE_ARM64_SYSV_OBJS) $(PROJ_LDLIBS) -o $@
+cc2-qbe_riscv64-sysv: $(LIBSCC) $(QBE_RISCV64_SYSV_OBJS)
+ $(CC) $(PROJ_LDFLAGS) $(QBE_RISCV64_SYSV_OBJS) $(PROJ_LDLIBS) -o $@
+
cc2-z80-scc: $(LIBSCC) $(Z80_SCC_OBJS)
$(CC) $(PROJ_LDFLAGS) $(Z80_SCC_OBJS) $(PROJ_LDLIBS) -o $@
diff --git a/src/cmd/scc-cc/cc2/qbe_riscv64-sysv/Makefile b/src/cmd/scc-cc/cc2/qbe_riscv64-sysv/Makefile
@@ -0,0 +1,14 @@
+.POSIX:
+
+PROJECTDIR = ../../../../..
+include $(PROJECTDIR)/scripts/rules.mk
+
+
+OBJS =\
+ ../riscv64-sysv/types.o\
+ ../qbe/builtin.o\
+
+all: builtin.o
+
+builtin.o: $(OBJS)
+ $(LD) -r -o $@ $(OBJS)
diff --git a/src/cmd/scc-cc/cc2/riscv64-sysv/Makefile b/src/cmd/scc-cc/cc2/riscv64-sysv/Makefile
@@ -0,0 +1,13 @@
+.POSIX:
+
+PROJECTDIR = ../../../../..
+include $(PROJECTDIR)/scripts/rules.mk
+
+
+OBJS =\
+ types.o \
+
+all: builtin.o
+
+builtin.o: $(OBJS)
+ $(LD) -r -o $@ $(OBJS)
diff --git a/src/cmd/scc-cc/cc2/riscv64-sysv/types.c b/src/cmd/scc-cc/cc2/riscv64-sysv/types.c
@@ -0,0 +1,93 @@
+#include <scc/scc.h>
+
+#include "../cc2.h"
+
+
+Type int8type = {
+ .flags = SIGNF | INTF,
+ .size = 1,
+ .align = 1
+};
+
+Type int16type = {
+ .flags = SIGNF | INTF,
+ .size = 2,
+ .align = 2
+};
+
+Type int32type = {
+ .flags = SIGNF | INTF,
+ .size = 4,
+ .align = 4
+};
+
+Type int64type = {
+ .flags = SIGNF | INTF,
+ .size = 8,
+ .align = 8
+};
+
+Type uint8type = {
+ .flags = INTF,
+ .size = 1,
+ .align = 1
+};
+
+Type uint16type = {
+ .flags = INTF,
+ .size = 2,
+ .align = 2
+};
+
+Type uint32type = {
+ .flags = INTF,
+ .size = 4,
+ .align = 4
+};
+
+Type uint64type = {
+ .flags = INTF,
+ .size = 8,
+ .align = 8
+};
+
+Type ptrtype = {
+ .flags = INTF,
+ .size = 8,
+ .align = 8
+};
+
+Type booltype = {
+ .flags = INTF,
+ .size = 1,
+ .align = 1
+};
+
+Type float32type = {
+ .flags = FLOATF,
+ .size = 4,
+ .align = 4
+};
+
+Type float64type = {
+ .flags = FLOATF,
+ .size = 8,
+ .align = 8
+};
+
+Type float80type = {
+ .flags = FLOATF,
+ .size = 16,
+ .align = 16
+};
+
+Type voidtype = {
+ .size = 0,
+ .align = 0
+};
+
+Type arg_type = {
+ .flags = ARRF,
+ .size = 24,
+ .align = 8
+};