cc2: Add support for qbe riscv64 - scc - simple c99 compiler
 (HTM) git clone git://git.simple-cc.org/scc
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d853268357f02d13ca7377e2391b8ebb6290daad
 (DIR) parent faf643c9afc0a74b276f24a8fdb4ba8552e351b3
 (HTM) 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 +
         M src/cmd/scc-cc/cc2/Makefile         |       9 +++++++++
         A src/cmd/scc-cc/cc2/qbe_riscv64-sys… |      14 ++++++++++++++
         A src/cmd/scc-cc/cc2/riscv64-sysv/Ma… |      13 +++++++++++++
         A src/cmd/scc-cc/cc2/riscv64-sysv/ty… |      93 +++++++++++++++++++++++++++++++
       
       5 files changed, 130 insertions(+), 0 deletions(-)
       ---
 (DIR) 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
 (DIR) 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 $@
        
 (DIR) 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)
 (DIR) 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)
 (DIR) 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
       +};