Skip to content

Commit 581d0ca

Browse files
committed
feat: Use new asm! instead of llvm_asm!
1 parent 498924d commit 581d0ca

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

CHANGELOG.md

+5-1
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 new `asm!` instead of `llvm_asm!`
13+
1014
## [v0.7.0] - 2020-07-29
1115

1216
### Added
@@ -56,7 +60,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
5660

5761
- Fixed MSRV by restricting the upper bound of `bare-metal` version
5862

59-
[Unreleased]: https://github.com/rust-embedded/riscv/compare/v0.6.0...HEAD
63+
[unreleased]: https://github.com/rust-embedded/riscv/compare/v0.6.0...HEAD
6064
[v0.6.0]: https://github.com/rust-embedded/riscv/compare/v0.5.6...v0.6.0
6165
[v0.5.6]: https://github.com/rust-embedded/riscv/compare/v0.5.5...v0.5.6
6266
[v0.5.5]: https://github.com/rust-embedded/riscv/compare/v0.5.4...v0.5.5

src/asm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ macro_rules! instruction {
77
pub unsafe fn $fnname() {
88
match () {
99
#[cfg(all(riscv, feature = "inline-asm"))]
10-
() => llvm_asm!($asm :::: "volatile"),
10+
() => asm!($asm),
1111

1212
#[cfg(all(riscv, not(feature = "inline-asm")))]
1313
() => {
@@ -58,7 +58,7 @@ instruction!(
5858
pub unsafe fn sfence_vma(asid: usize, addr: usize) {
5959
match () {
6060
#[cfg(all(riscv, feature = "inline-asm"))]
61-
() => llvm_asm!("sfence.vma $0, $1" :: "r"(asid), "r"(addr) :: "volatile"),
61+
() => asm!("sfence.vma {0}, {1}", in(reg) asid, in(reg) addr),
6262

6363
#[cfg(all(riscv, not(feature = "inline-asm")))]
6464
() => {

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
//! - Wrappers around assembly instructions like `WFI`.
1515
1616
#![no_std]
17-
#![cfg_attr(feature = "inline-asm", feature(llvm_asm))]
17+
#![cfg_attr(feature = "inline-asm", feature(asm))]
1818

1919
extern crate bare_metal;
2020
extern crate bit_field;

src/register/macros.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ macro_rules! read_csr {
77
#[cfg(all(riscv, feature = "inline-asm"))]
88
() => {
99
let r: usize;
10-
llvm_asm!("csrrs $0, $1, x0" : "=r"(r) : "i"($csr_number) :: "volatile");
10+
asm!("csrrs {0}, {1}, x0", out(reg) r, const $csr_number);
1111
r
1212
}
1313

@@ -36,7 +36,7 @@ macro_rules! read_csr_rv32 {
3636
#[cfg(all(riscv32, feature = "inline-asm"))]
3737
() => {
3838
let r: usize;
39-
llvm_asm!("csrrs $0, $1, x0" : "=r"(r) : "i"($csr_number) :: "volatile");
39+
asm!("csrrs {0}, {1}, x0", out(reg) r, const $csr_number);
4040
r
4141
}
4242

@@ -102,7 +102,7 @@ macro_rules! write_csr {
102102
unsafe fn _write(bits: usize) {
103103
match () {
104104
#[cfg(all(riscv, feature = "inline-asm"))]
105-
() => llvm_asm!("csrrw x0, $1, $0" :: "r"(bits), "i"($csr_number) :: "volatile"),
105+
() => asm!("csrrw x0, {1}, {0}", in(reg) bits, const $csr_number),
106106

107107
#[cfg(all(riscv, not(feature = "inline-asm")))]
108108
() => {
@@ -128,7 +128,7 @@ macro_rules! write_csr_rv32 {
128128
unsafe fn _write(bits: usize) {
129129
match () {
130130
#[cfg(all(riscv32, feature = "inline-asm"))]
131-
() => llvm_asm!("csrrw x0, $1, $0" :: "r"(bits), "i"($csr_number) :: "volatile"),
131+
() => asm!("csrrw x0, {1}, {0}", in(reg) bits, const $csr_number),
132132

133133
#[cfg(all(riscv32, not(feature = "inline-asm")))]
134134
() => {
@@ -178,7 +178,7 @@ macro_rules! set {
178178
unsafe fn _set(bits: usize) {
179179
match () {
180180
#[cfg(all(riscv, feature = "inline-asm"))]
181-
() => llvm_asm!("csrrs x0, $1, $0" :: "r"(bits), "i"($csr_number) :: "volatile"),
181+
() => asm!("csrrs x0, {1}, {0}", in(reg) bits, const $csr_number),
182182

183183
#[cfg(all(riscv, not(feature = "inline-asm")))]
184184
() => {
@@ -204,7 +204,7 @@ macro_rules! clear {
204204
unsafe fn _clear(bits: usize) {
205205
match () {
206206
#[cfg(all(riscv, feature = "inline-asm"))]
207-
() => llvm_asm!("csrrc x0, $1, $0" :: "r"(bits), "i"($csr_number) :: "volatile"),
207+
() => asm!("csrrc x0, {1}, {0}", in(reg) bits, const $csr_number),
208208

209209
#[cfg(all(riscv, not(feature = "inline-asm")))]
210210
() => {

0 commit comments

Comments
 (0)