From 454403f19ac00d0132bdc28093ce4bbbda5d07f9 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Sat, 1 Feb 2020 01:43:28 +0000 Subject: gnu: Add opensbi. * gnu/packages/firmware (make-opensbi): New function. (opensbi-qemu-virt): New variable. --- gnu/packages/firmware.scm | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'gnu/packages/firmware.scm') diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index e96a00bb22..a56c8f096b 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -183,6 +183,61 @@ Broadcom/AirForce chipset BCM43xx with Wireless-Core Revision 5. It is used by the b43-open driver of Linux-libre.") (license license:gpl2))) +(define* (make-opensbi-package platform variant #:optional (arch "riscv64")) + (package + (name (string-append "opensbi-" platform "-" variant)) + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/riscv/opensbi.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qc73xbiy79qqkwxmp4mg15q8n8k26njkyqb6n0jw5dyibd6hb85")))) + (build-system gnu-build-system) + (native-inputs + `(,@(if (and (not (string-prefix? "riscv64" (%current-system))) + (string-prefix? "riscv64" arch)) + `(("cross-gcc" ,(cross-gcc "riscv64-linux-gnu" #:xgcc gcc-7)) + ("cross-binutils" ,(cross-binutils "riscv64-linux-gnu"))) + '()))) + (arguments + `(#:tests? #f ; no check target + #:make-flags (list (string-append "PLATFORM=" ,platform "/" ,variant) + ,@(if (and (not (string-prefix? "riscv64" + (%current-system))) + (string-prefix? "riscv64" arch)) + `("CROSS_COMPILE=riscv64-linux-gnu-") + '()) + "FW_PAYLOAD=n" + "V=1") + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bin (find-files "." ".*fw_.*.elf$"))) + (for-each + (lambda (file) + (install-file file out)) + bin)) + #t))))) + (home-page "https://github.com/riscv/opensbi") + (synopsis "RISC-V Open Source Supervisor Binary Interface") + (description "A reference implementation of the RISC-V SBI specifications +for platform-specific firmwares executing in M-mode.") + (license (list license:bsd-2 + ;; lib/utils/libfdt/* is dual licensed under bsd-2 and gpl2+. + license:gpl2+ + ;; platform/ariane-fpga/* is gpl2. + license:gpl2)))) + +(define-public opensbi-qemu-virt + (make-opensbi-package "qemu" "virt")) + (define-public seabios (package (name "seabios") -- cgit v1.2.3 From cd63c2beb0a0693ed8bf86362738bb724d8f95b7 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Sat, 1 Feb 2020 03:29:32 +0000 Subject: gnu: Add opensbi-qemu-sifive-u. * gnu/packages/firmware (make-opensbi-package): Normalize package name. (opensbi-qemu-sifive-u): New variable. --- gnu/packages/firmware.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'gnu/packages/firmware.scm') diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index a56c8f096b..affed3b823 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -185,7 +185,9 @@ by the b43-open driver of Linux-libre.") (define* (make-opensbi-package platform variant #:optional (arch "riscv64")) (package - (name (string-append "opensbi-" platform "-" variant)) + (name (string-replace-substring + (string-append "opensbi-" platform "-" variant) + "_" "-")) (version "0.5") (source (origin @@ -238,6 +240,9 @@ for platform-specific firmwares executing in M-mode.") (define-public opensbi-qemu-virt (make-opensbi-package "qemu" "virt")) +(define-public opensbi-qemu-sifive-u + (make-opensbi-package "qemu" "sifive_u")) + (define-public seabios (package (name "seabios") -- cgit v1.2.3 From 01501a308c515b1d77c127fa4b5103827951b4e6 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Sat, 1 Feb 2020 04:17:25 +0000 Subject: gnu: Add opensbi-sifive-fu540. * gnu/packages/firmware (opensbi-sifive-fu540): New variable. --- gnu/packages/firmware.scm | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gnu/packages/firmware.scm') diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index affed3b823..d5828deca2 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -243,6 +243,9 @@ for platform-specific firmwares executing in M-mode.") (define-public opensbi-qemu-sifive-u (make-opensbi-package "qemu" "sifive_u")) +(define-public opensbi-sifive-fu540 + (make-opensbi-package "sifive" "fu540")) + (define-public seabios (package (name "seabios") -- cgit v1.2.3