From nobody Thu Jan 23 01:07:21 2025 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YdjTj5bqLz5lM9K; Thu, 23 Jan 2025 01:07:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YdjTj45Wgz3sQ0; Thu, 23 Jan 2025 01:07:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737594441; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9+rYVpgFbTqvis9nAySPAl93ZpW82f4v7XiLBfadIlY=; b=qdPvwup/C7dR5B/0ON0GxqE7wU2NWTmYnyeZ4PtuvkZFWay/+3Ixj5Z4Les2BJqMQteuTg +VlCPcnpRr1mb8yH2uqpP1BwfsV6fgdatlAc43bvEZgHjL30i+s51zvCAVBWmdxwsMa57m h3q51w33347a921YsW+C7s1rTiF2Pe167QKKIm1vWaim5HozsfDbvG4o7uesg3/G3gFVG4 oFY5C3CpPEFToFy/TKoGd4bo39zE+482Bgwrl9gAWTNnu4WG3aFqdF1cv/FoHYyO+lA1+s brf9HSs12X7YrgbNQWB57g5uLBlbzBWqJKCT7yvBt8sEd5dOab3xy1yHSSDYCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737594441; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9+rYVpgFbTqvis9nAySPAl93ZpW82f4v7XiLBfadIlY=; b=ODWM5iKYglMvMslS2OdgzVSgbT+hh1BWDVZ4HtcpNoCA0cGcnwZW6sOrsatPooxVkBstFb jO9XIsz2Z7sF+ChVZ/daY7hr/eLfag6hZJtsONLAHM6ALNzt2rU3dugB/zO0heSnP2w2CL C7VISQ3A8FwIk7WtWkh1NyWEp20T9JtfzhEawTsuShUH9uhguqnzyIc75gNvI0DYArhO7T eaHwHpWEv2oq7LxIWkmLmKxi9/9d/VLQj+pvs3yxA7zSsyZ9RHOrOM9SjPBCovOK+ObA5l 8brLPKPEHbCjuBgVjceYEhCy7yosdf4oqpiowWv2lfC5xyl33Oit4hFU/JNAoA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737594441; a=rsa-sha256; cv=none; b=ew3uiy3SnoVTYJOTs4meVagvbwdzIlNo6DncQQmfjheapJOGTELDt3FqBglWW/X/8Z6gXh DCFvNqKXfugH5FgPp4t/MM6xuMZUeiaeE0Pb34Rj+eylhpDntSsZFBSR9bg2CIOGcxuW13 tqi1LngJm7rARStvNeXb7Rn9NmXknrCCyTuSWY9hA2o1T7gkgxZk56cpGH1y0/gLH0Zoun NKtJRw+dJLjC287bRgVHyQmaKlP8kUY/naVFQoHzMkLc1y8k/RauoZAMU1R1uoIkfQX0i8 DKTHbJDDxG3jNUOKproEAU79RAADcEog7y5V82VZDb5gik2zW4Xcy6WXbUCu0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YdjTj3dL3z1yB; Thu, 23 Jan 2025 01:07:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50N17L3L083248; Thu, 23 Jan 2025 01:07:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50N17LLp083244; Thu, 23 Jan 2025 01:07:21 GMT (envelope-from git) Date: Thu, 23 Jan 2025 01:07:21 GMT Message-Id: <202501230107.50N17LLp083244@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Robert Clausecker Subject: git: 5912458941af - main - emulators/rvvm: RISC-V Virtual Machine List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-main@freebsd.org Sender: owner-dev-commits-ports-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5912458941af2189b7fa940dd20a21fd168e67fd Auto-Submitted: auto-generated The branch main has been updated by fuz: URL: https://cgit.FreeBSD.org/ports/commit/?id=5912458941af2189b7fa940dd20a21fd168e67fd commit 5912458941af2189b7fa940dd20a21fd168e67fd Author: Robert Clausecker AuthorDate: 2025-01-22 23:29:49 +0000 Commit: Robert Clausecker CommitDate: 2025-01-23 01:06:22 +0000 emulators/rvvm: RISC-V Virtual Machine RVVM is a virtual machine / emulator for RISC-V guests, which emphasizes on performance, security, lean code and portability. It already runs a lot of guest operating systems, including Linux, Haiku, FreeBSD, OpenBSD, etc. It also aims to run RISC-V applications on a foreign-arch host without full OS guest & isolation (Userland emulation). WWW: https://github.com/LekKit/RVVM --- emulators/Makefile | 1 + emulators/rvvm/Makefile | 79 +++++++++++++++++++++++++++++++++++++ emulators/rvvm/distinfo | 9 +++++ emulators/rvvm/files/patch-Makefile | 75 +++++++++++++++++++++++++++++++++++ emulators/rvvm/files/pkg-message.in | 11 ++++++ emulators/rvvm/pkg-descr | 5 +++ emulators/rvvm/pkg-plist | 30 ++++++++++++++ 7 files changed, 210 insertions(+) diff --git a/emulators/Makefile b/emulators/Makefile index 6e7629939545..e5a377684001 100644 --- a/emulators/Makefile +++ b/emulators/Makefile @@ -128,6 +128,7 @@ SUBDIR += riscv-isa-sim SUBDIR += rpcs3 SUBDIR += rubygem-fission + SUBDIR += rvvm SUBDIR += sameboy SUBDIR += simh SUBDIR += simh-hp2100 diff --git a/emulators/rvvm/Makefile b/emulators/rvvm/Makefile new file mode 100644 index 000000000000..452ca690a17d --- /dev/null +++ b/emulators/rvvm/Makefile @@ -0,0 +1,79 @@ +PORTNAME= RVVM +DISTVERSIONPREFIX= v +DISTVERSION= 0.6 +CATEGORIES= emulators +MASTER_SITES= https://github.com/LekKit/patches-misc/releases/download/rvvm-uboot-2024.7/:fw \ + https://github.com/LekKit/riscv-tests/releases/download/rvvm-tests/:tests +DISTFILES= ${FWFILES:.bin=.bin:fw} riscv-tests.tar.gz:tests +DIST_SUBDIR= rvvm-${DISTVERSION} +EXTRACT_ONLY= ${DISTFILE_DEFAULT} + +MAINTAINER= fuz@FreeBSD.org +COMMENT= RISC-V Virtual Machine + +LICENSE= GPLv2 GPLv3 MPL20 +LICENSE_COMB= multi +LICENSE_FILE_GPLv3= ${WRKSRC}/LICENSE-GPL +LICENSE_FILE_MPL20= ${WRKSRC}/LICENSE-MPL +LICENSE_DISTFILES_GPLv2= ${FWFILES} +LICENSE_DISTFILES_GPLv3= ${DISTFILE_DEFAULT} +LICENSE_DISTFILES_MPL20= ${DISTFILE_DEFAULT} + +FLAVORS= x11 nox11 +FLAVOR?= ${FLAVORS:[1]} +nox11_PKGNAMESUFFIX= -nox11 + +USES= gmake localbase:ldflags +USE_GITHUB= yes +GH_ACCOUNT= LekKit +USE_LDCONFIG= yes + +BUILDDIR= ${WRKDIR}/.build +MAKE_ENV+= BUILDDIR=${BUILDDIR} +TEST_TARGET= test +SUB_FILES= pkg-message + +OPTIONS_DEFINE= FDT FPU JIT JNI SPINLOCK_DEBUG NET PCI RV64 +OPTIONS_DEFAULT= FDT FPU JIT JNI SPINLOCK_DEBUG NET PCI RV64 +FDT_DESC= enable automatic FDT generation +FPU_DESC= enable floating point (F/D) CPU extension +JIT_DESC= enable RVJIT accelerator +JNI_DESC= include native JNI bindings in shared librvvm +NET_DESC= enable unprivileged userland networking stack +PCI_DESC= enable PCI support in ATA, etc devices +RV64_DESC= enable riscv64 CPU support +SPINLOCK_DEBUG_DESC= enable deadlock debugging (minimal runtime overhead) + +FWFILES= fw_jump.bin fw_payload.bin + +.for o in ${OPTIONS_DEFINE} +$o_MAKE_ENV= USE_$o=1 +$o_MAKE_ENV_OFF= USE_$o=0 +.endfor + +.if ${FLAVOR} == x11 +MAKE_ENV+= USE_FB=1 USE_XSHM=1 +USES+= xorg +USE_XORG+= x11 xext +.else +MAKE_ENV+= USE_FB=0 USE_XSHM=0 +.endif + +.include + +.if defined(WITH_DEBUG) +MAKE_ENV+= USE_DEBUG=1 +.endif + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/rvvm + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/librvvm.so + ${MKDIR} ${STAGEDIR}${DATADIR} +.for f in ${FWFILES} + ${INSTALL_DATA} ${_DISTDIR}/$f ${STAGEDIR}${DATADIR}/ +.endfor + +pre-test: + ${LN} -sf ${_DISTDIR}/riscv-tests.tar.gz ${BUILDDIR}/ + +.include diff --git a/emulators/rvvm/distinfo b/emulators/rvvm/distinfo new file mode 100644 index 000000000000..765e15982143 --- /dev/null +++ b/emulators/rvvm/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1737591303 +SHA256 (rvvm-0.6/fw_jump.bin) = 60f5aedaf90be271eef9e4f1a479171c183987f97f86208811e9212b121d5b45 +SIZE (rvvm-0.6/fw_jump.bin) = 136776 +SHA256 (rvvm-0.6/fw_payload.bin) = d97321ca71be85a98dcc1757b721616d6ed68304afe853336273cb19b424da6c +SIZE (rvvm-0.6/fw_payload.bin) = 2958016 +SHA256 (rvvm-0.6/riscv-tests.tar.gz) = f0e888a8db158b1e82ac09cebd01d8e1d5913477d1515c41286fae5e309e5322 +SIZE (rvvm-0.6/riscv-tests.tar.gz) = 87062 +SHA256 (rvvm-0.6/LekKit-RVVM-v0.6_GH0.tar.gz) = 97e98c95d8785438758b81fb5c695b8eafb564502c6af7f52555b056e3bb7d7a +SIZE (rvvm-0.6/LekKit-RVVM-v0.6_GH0.tar.gz) = 313342 diff --git a/emulators/rvvm/files/patch-Makefile b/emulators/rvvm/files/patch-Makefile new file mode 100644 index 000000000000..2962262b0bb5 --- /dev/null +++ b/emulators/rvvm/files/patch-Makefile @@ -0,0 +1,75 @@ +--- Makefile.orig 2024-03-18 16:11:18 UTC ++++ Makefile +@@ -33,7 +33,7 @@ BOLD := $(shell tput md $(NULL_STDERR) || tput bo + SPACE := + ifneq (,$(TERM)) + BOLD := $(shell tput md $(NULL_STDERR) || tput bold $(NULL_STDERR) || printf "\033[1m" $(NULL_STDERR)) +-RESET := $(shell tput me $(NULL_STDERR) || tput sgr0 $(NULL_STDERR) || printf "\033[0m" $(NULL_STDERR))$(BOLD) ++RESET := $(shell tput me $(NULL_STDERR) || tput sgr0 $(NULL_STDERR) || printf "\033[0m" $(NULL_STDERR)) + RED := $(shell tput AF 1 $(NULL_STDERR) || tput setaf 1 $(NULL_STDERR) || printf "\033[31m" $(NULL_STDERR))$(BOLD) + GREEN := $(shell tput AF 2 $(NULL_STDERR) || tput setaf 2 $(NULL_STDERR) || printf "\033[32m" $(NULL_STDERR))$(BOLD) + YELLOW := $(shell tput AF 3 $(NULL_STDERR) || tput setaf 3 $(NULL_STDERR) || printf "\033[33m" $(NULL_STDERR))$(BOLD) +@@ -231,8 +231,8 @@ endif + + # Warning options (Strict safety/portability, stack/object size limits) + # -Wbad-function-cast, -Wcast-align, -Wdouble-promotion need fixes in codebase +-WARN_OPTS := -Wall -Wextra -Wshadow -Wvla -Wpointer-arith -Walloca -Wduplicated-cond \ +--Wtrampolines -Wlarger-than=1048576 -Wframe-larger-than=32768 -Werror=return-type ++WARN_OPTS := -Wall -Wextra -Wshadow -Wvla -Wpointer-arith -Walloca \ ++-Wlarger-than=1048576 -Wframe-larger-than=32768 -Werror=return-type + + # Compiler-specific options + ifeq ($(CC_TYPE),gcc) +@@ -467,13 +467,11 @@ endif + endif + + # Do not pass lib-related flags for dev/cli/test builds (Faster) +-ifneq (,$(findstring lib, $(MAKECMDGOALS))$(findstring install, $(MAKECMDGOALS))) + override CFLAGS += -DUSE_LIB -fPIC -ffat-lto-objects + # Build JNI bindings inside librvvm dynlib + ifeq ($(USE_JNI),1) + SRC += $(SRCDIR)/bindings/jni/rvvm_jni.c + endif +-endif + + # CPU interpreter sources + SRC += $(wildcard $(SRCDIR)/cpu/riscv_*.c) +@@ -583,10 +581,10 @@ test: $(BINARY) + @echo + @echo "[$(YELLOW)INFO$(RESET)] Running RISC-V Tests (RV32)" + @echo +- @for file in $(BUILDDIR)/riscv-tests/rv32*.bin; do \ ++ @for file in $(BUILDDIR)/riscv-tests/rv32*; do \ + result=$$($(BINARY) $$file -nogui -rv32 | tr -d '\0'); \ + result="$${result##* }"; \ +- if [[ "$$result" == "0" ]]; then \ ++ if [ "$$result" -eq "0" ]; then \ + echo "[$(GREEN)PASS$(RESET)] $$file"; \ + else \ + echo "[$(RED)FAIL: $$result$(RESET)] $$file"; \ +@@ -596,10 +594,10 @@ ifeq ($(USE_RV64),1) + @echo + @echo "[$(YELLOW)INFO$(RESET)] Running RISC-V Tests (RV64)" + @echo +- @for file in $(BUILDDIR)/riscv-tests/rv64*.bin; do \ ++ @for file in $(BUILDDIR)/riscv-tests/rv64*; do \ + result=$$($(BINARY) $$file -nogui -rv64 | tr -d '\0'); \ + result="$${result##* }"; \ +- if [[ "$$result" == "0" ]]; then \ ++ if [ "$$result" -eq "0" ]; then \ + echo "[$(GREEN)PASS$(RESET)] $$file"; \ + else \ + echo "[$(RED)FAIL: $$result$(RESET)] $$file"; \ +@@ -647,11 +645,10 @@ ifeq ($(HOST_POSIX),1) + @install -Dm755 $(BINARY) $(DESTDIR)$(bindir)/rvvm + @install -Dm755 $(SHARED) $(DESTDIR)$(libdir)/librvvm$(LIB_EXT) + @install -Dm644 $(STATIC) $(DESTDIR)$(libdir)/librvvm_static.a ++ @install -d $(DESTDIR)$(includedir)/rvvm + @install -Dm644 $(SRCDIR)/rvvmlib.h $(DESTDIR)$(includedir)/rvvm/rvvmlib.h + @install -Dm644 $(SRCDIR)/fdtlib.h $(DESTDIR)$(includedir)/rvvm/fdtlib.h + @install -Dm644 $(SRCDIR)/devices/*.h $(DESTDIR)$(includedir)/rvvm/ +- @install -d $(DESTDIR)$(datadir)/licenses/rvvm/ +- @install -Dm644 LICENSE* $(DESTDIR)$(datadir)/licenses/rvvm/ + else + @echo "[$(RED)WARN$(RESET)] Unsupported on non-POSIX!" + endif diff --git a/emulators/rvvm/files/pkg-message.in b/emulators/rvvm/files/pkg-message.in new file mode 100644 index 000000000000..114244484781 --- /dev/null +++ b/emulators/rvvm/files/pkg-message.in @@ -0,0 +1,11 @@ +RVVM has been installed. + +To execute a disk image, run + + rvvm %%DATADIR%%/fw_payload.bin [flags] -i $disk.img + +To execute a custom kernel payload, run + + rvvm %%DATADIR%%/fw_jump.bin [flags] -k $kernel.bin + +For further details, execute rvvm --help. diff --git a/emulators/rvvm/pkg-descr b/emulators/rvvm/pkg-descr new file mode 100644 index 000000000000..735272afc3e3 --- /dev/null +++ b/emulators/rvvm/pkg-descr @@ -0,0 +1,5 @@ +RVVM is a virtual machine / emulator for RISC-V guests, which emphasizes +on performance, security, lean code and portability. It already runs a +lot of guest operating systems, including Linux, Haiku, FreeBSD, +OpenBSD, etc. It also aims to run RISC-V applications on a foreign-arch +host without full OS guest & isolation (Userland emulation). diff --git a/emulators/rvvm/pkg-plist b/emulators/rvvm/pkg-plist new file mode 100644 index 000000000000..a7c8a02ef60c --- /dev/null +++ b/emulators/rvvm/pkg-plist @@ -0,0 +1,30 @@ +bin/rvvm +include/rvvm/ata.h +include/rvvm/chardev.h +include/rvvm/clint.h +include/rvvm/eth-oc.h +include/rvvm/fb_window.h +include/rvvm/fdtlib.h +include/rvvm/framebuffer.h +include/rvvm/gpio-sifive.h +include/rvvm/gpio_api.h +include/rvvm/hid_api.h +include/rvvm/hid_dev.h +include/rvvm/i2c-hid.h +include/rvvm/i2c-oc.h +include/rvvm/mtd-physmap.h +include/rvvm/ns16550a.h +include/rvvm/nvme.h +include/rvvm/pci-bus.h +include/rvvm/plic.h +include/rvvm/ps2-altera.h +include/rvvm/rtc-ds1742.h +include/rvvm/rtc-goldfish.h +include/rvvm/rtl8169.h +include/rvvm/rvvmlib.h +include/rvvm/syscon.h +include/rvvm/tap_api.h +lib/librvvm.so +lib/librvvm_static.a +%%DATADIR%%/fw_jump.bin +%%DATADIR%%/fw_payload.bin