Skip to content

Commit dcf016e

Browse files
committed
Replace binary blobs with inline assembly
1 parent 0ff428f commit dcf016e

33 files changed

+245
-279
lines changed

.github/workflows/ci.yaml

-4
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,9 @@ jobs:
2828
override: true
2929
- name: Install all Rust targets for ${{ matrix.rust }}
3030
run: rustup target install --toolchain=${{ matrix.rust }} riscv32imac-unknown-none-elf riscv64imac-unknown-none-elf riscv64gc-unknown-none-elf
31-
- name: Install riscv gcc
32-
run: sudo apt-get update && sudo apt-get install -y gcc-riscv64-unknown-elf
3331
- name: Run CI script for riscv32imac-unknown-none-elf under ${{ matrix.rust }}
3432
run: cargo check --target riscv32imac-unknown-none-elf
3533
- name: Run CI script for riscv64imac-unknown-none-elf under ${{ matrix.rust }}
3634
run: cargo check --target riscv64imac-unknown-none-elf
3735
- name: Run CI script for riscv64gc-unknown-none-elf under ${{ matrix.rust }}
3836
run: cargo check --target riscv64gc-unknown-none-elf
39-
- name: Check blobs
40-
run: ./check-blobs.sh

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10+
### Changed
11+
12+
- Use inline assembly instead of binary blobs
13+
1014
## [v0.9.0] - 2022-07-01
1115

1216
### Added

Cargo.toml

+1-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ categories = ["embedded", "no-std"]
88
description = "Minimal runtime / startup for RISC-V CPU's"
99
keywords = ["riscv", "runtime", "startup"]
1010
license = "ISC"
11+
links = "riscv-rt" # prevent multiple versions of this crate to be linked together
1112
edition = "2018"
1213

1314
[dependencies]
@@ -17,6 +18,3 @@ riscv-rt-macros = { path = "macros", version = "0.2.0" }
1718

1819
[dev-dependencies]
1920
panic-halt = "0.2.0"
20-
21-
[build-dependencies]
22-
riscv-target = "0.1.2"

asm.S

-174
This file was deleted.

assemble.ps1

-27
This file was deleted.

assemble.sh

-36
This file was deleted.

bin/riscv32i-unknown-none-elf.a

-7.53 KB
Binary file not shown.

bin/riscv32ic-unknown-none-elf.a

-7.41 KB
Binary file not shown.

bin/riscv32if-unknown-none-elf.a

-7.54 KB
Binary file not shown.

bin/riscv32ifc-unknown-none-elf.a

-7.41 KB
Binary file not shown.

bin/riscv32ifd-unknown-none-elf.a

-7.54 KB
Binary file not shown.

bin/riscv32ifdc-unknown-none-elf.a

-7.42 KB
Binary file not shown.

bin/riscv32im-unknown-none-elf.a

-7.23 KB
Binary file not shown.

bin/riscv32imc-unknown-none-elf.a

-7.11 KB
Binary file not shown.

bin/riscv32imf-unknown-none-elf.a

-7.23 KB
Binary file not shown.

bin/riscv32imfc-unknown-none-elf.a

-7.11 KB
Binary file not shown.

bin/riscv32imfd-unknown-none-elf.a

-7.24 KB
Binary file not shown.

bin/riscv32imfdc-unknown-none-elf.a

-7.12 KB
Binary file not shown.

bin/riscv64i-unknown-none-elf.a

-12.1 KB
Binary file not shown.

bin/riscv64ic-unknown-none-elf.a

-12 KB
Binary file not shown.

bin/riscv64if-unknown-none-elf.a

-12.1 KB
Binary file not shown.

bin/riscv64ifc-unknown-none-elf.a

-12 KB
Binary file not shown.

bin/riscv64ifd-unknown-none-elf.a

-12.1 KB
Binary file not shown.

bin/riscv64ifdc-unknown-none-elf.a

-12 KB
Binary file not shown.

bin/riscv64im-unknown-none-elf.a

-11.6 KB
Binary file not shown.

bin/riscv64imc-unknown-none-elf.a

-11.5 KB
Binary file not shown.

bin/riscv64imf-unknown-none-elf.a

-11.6 KB
Binary file not shown.

bin/riscv64imfc-unknown-none-elf.a

-11.5 KB
Binary file not shown.

bin/riscv64imfd-unknown-none-elf.a

-11.6 KB
Binary file not shown.

bin/riscv64imfdc-unknown-none-elf.a

-11.5 KB
Binary file not shown.

build.rs

+4-11
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
11
// NOTE: Adapted from cortex-m/build.rs
2-
extern crate riscv_target;
3-
4-
use riscv_target::Target;
52
use std::env;
63
use std::fs;
74
use std::path::PathBuf;
85

96
fn main() {
107
let target = env::var("TARGET").unwrap();
118
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
12-
let name = env::var("CARGO_PKG_NAME").unwrap();
139

1410
if target.starts_with("riscv") {
15-
let mut target = Target::from_target_str(&target);
16-
target.retain_extensions("imfdc");
17-
let archive = format!("bin/{}.a", target.to_string());
18-
19-
fs::copy(&archive, out_dir.join(format!("lib{}.a", name))).unwrap();
20-
println!("cargo:rerun-if-changed={}", archive);
21-
println!("cargo:rustc-link-lib=static={}", name);
11+
let extensions = &target.split('-').next().unwrap()[7..];
12+
if extensions.contains('m') || extensions.contains('g') {
13+
println!("cargo:rustc-cfg=riscv_mul");
14+
}
2215
}
2316

2417
// Put the linker script somewhere the linker can find it

check-blobs.sh

-21
This file was deleted.

0 commit comments

Comments
 (0)