diff --git a/lib/Makefile b/lib/Makefile index 9c3b9a34..4d02c337 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -35,12 +35,12 @@ endif XFLAGS += -I$(TOP) -I386_O = libtcc1.o alloca.o alloca-bt.o $(COMMON_O) -X86_64_O = libtcc1.o alloca.o alloca-bt.o $(COMMON_O) -ARM_O = libtcc1.o armeabi.o alloca.o armflush.o $(COMMON_O) -ARM64_O = lib-arm64.o alloca.o $(COMMON_O) +I386_O = libtcc1.o alloca-bt.o $(COMMON_O) +X86_64_O = libtcc1.o alloca-bt.o $(COMMON_O) +ARM_O = libtcc1.o armeabi.o armflush.o $(COMMON_O) +ARM64_O = lib-arm64.o $(COMMON_O) RISCV64_O = lib-arm64.o $(COMMON_O) -COMMON_O = stdatomic.o atomic.o builtin.o +COMMON_O = stdatomic.o atomic.o builtin.o alloca.o WIN_O = crt1.o crt1w.o wincrt1.o wincrt1w.o dllcrt1.o dllmain.o LIN_O = dsohandle.o OSX_O = diff --git a/lib/alloca.S b/lib/alloca.S index 83d167f4..f37be59d 100644 --- a/lib/alloca.S +++ b/lib/alloca.S @@ -142,4 +142,18 @@ p100: #endif .size alloca, .-alloca /* ---------------------------------------------- */ +#elif defined __riscv + + .text + .align 2 + .global alloca + .type alloca, %function +alloca: + sub sp, sp, a0 + addi sp, sp, -15 + andi sp, sp, -16 + add a0, sp, zero + ret + .size alloca, .-alloca +/* ---------------------------------------------- */ #endif