Skip to content

Commit c3c0c35

Browse files
committed
Implement nop and {wr|rd}{f|g}sbase
Signed-off-by: Joe Richey <joerichey@google.com>
1 parent 54b4e3f commit c3c0c35

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/instructions/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub fn hlt() {
3333
pub fn nop() {
3434
#[cfg(feature = "inline_asm")]
3535
unsafe {
36-
llvm_asm!("nop" :::: "volatile");
36+
asm!("nop", options(nomem, nostack, preserves_flags));
3737
}
3838

3939
#[cfg(not(feature = "inline_asm"))]

src/instructions/segmentation.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ pub unsafe fn wrfsbase(val: u64) {
159159
#[cfg(feature = "inline_asm")]
160160
#[inline(always)]
161161
unsafe fn inner(val: u64) {
162-
llvm_asm!("wrfsbase $0" :: "r"(val) :: "volatile")
162+
asm!("wrfsbase {}", in(reg) val, options(nomem, nostack));
163163
}
164164

165165
#[cfg(not(feature = "inline_asm"))]
@@ -182,7 +182,7 @@ pub unsafe fn rdfsbase() -> u64 {
182182
#[inline(always)]
183183
unsafe fn inner() -> u64 {
184184
let val: u64;
185-
llvm_asm!("rdfsbase $0" : "=r" (val) ::: "volatile");
185+
asm!("rdfsbase {}", out(reg) val, options(nomem, nostack));
186186
val
187187
}
188188

@@ -208,7 +208,7 @@ pub unsafe fn wrgsbase(val: u64) {
208208
#[cfg(feature = "inline_asm")]
209209
#[inline(always)]
210210
unsafe fn inner(val: u64) {
211-
llvm_asm!("wrgsbase $0" :: "r"(val) :: "volatile")
211+
asm!("wrgsbase {}", in(reg) val, options(nomem, nostack))
212212
}
213213

214214
#[cfg(not(feature = "inline_asm"))]
@@ -231,7 +231,7 @@ pub unsafe fn rdgsbase() -> u64 {
231231
#[inline(always)]
232232
unsafe fn inner() -> u64 {
233233
let val: u64;
234-
llvm_asm!("rdgsbase $0" : "=r" (val) ::: "volatile");
234+
asm!("rdgsbase {}", out(reg) val, options(nomem, nostack));
235235
val
236236
}
237237

0 commit comments

Comments
 (0)