scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

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:
M.gitignore | 1+
Msrc/cmd/scc-cc/cc2/Makefile | 9+++++++++
Asrc/cmd/scc-cc/cc2/qbe_riscv64-sysv/Makefile | 14++++++++++++++
Asrc/cmd/scc-cc/cc2/riscv64-sysv/Makefile | 13+++++++++++++
Asrc/cmd/scc-cc/cc2/riscv64-sysv/types.c | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 +};