Skip to content

Commit 6481d29

Browse files
committed
migrate from asm to llvm_asm rust-lang/rfcs#2843
1 parent 29b4f25 commit 6481d29

File tree

10 files changed

+39
-38
lines changed

10 files changed

+39
-38
lines changed

lib/pcid/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
#![crate_name = "pcid"]
33
#![crate_type = "lib"]
44

5-
#![feature( asm)]
5+
#![feature(
6+
llvm_asm,
7+
)]
68

79
#[macro_use] extern crate bitflags;
810
extern crate byteorder;

lib/pcid/src/pci.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ impl Pci {
2020
pub unsafe fn read(&self, bus: u8, dev: u8, func: u8, offset: u8) -> u32 {
2121
let address = 0x80000000 | ((bus as u32) << 16) | ((dev as u32) << 11) | ((func as u32) << 8) | ((offset as u32) & 0xFC);
2222
let value: u32;
23-
asm!("mov dx, 0xCF8
23+
llvm_asm!("mov dx, 0xCF8
2424
out dx, eax
2525
mov dx, 0xCFC
2626
in eax, dx"
@@ -31,10 +31,10 @@ impl Pci {
3131
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
3232
pub unsafe fn write(&self, bus: u8, dev: u8, func: u8, offset: u8, value: u32) {
3333
let address = 0x80000000 | ((bus as u32) << 16) | ((dev as u32) << 11) | ((func as u32) << 8) | ((offset as u32) & 0xFC);
34-
asm!("mov dx, 0xCF8
34+
llvm_asm!("mov dx, 0xCF8
3535
out dx, eax"
3636
: : "{eax}"(address) : "dx" : "intel", "volatile");
37-
asm!("mov dx, 0xCFC
37+
llvm_asm!("mov dx, 0xCFC
3838
out dx, eax"
3939
: : "{eax}"(value) : "dx" : "intel", "volatile");
4040
}

src/gdt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ pub unsafe fn init_global_gdt() {
235235

236236
#[inline]
237237
pub unsafe fn writefs(fs: u64) {
238-
asm!("wrfsbase $0" :: "r"(fs) :: "volatile");
238+
llvm_asm!("wrfsbase $0" :: "r"(fs) :: "volatile");
239239
}
240240

241241
/// Initialize GDT with TLS

src/interrupt/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ pub unsafe fn init_cpu(cpu: u32, stack: u32, code: u64) {
165165
let destination: *mut u8 = 0x7000 as *mut u8;
166166

167167
let mut pgdir: u64;
168-
asm!("mov $0, cr3" : "=r"(pgdir) ::: "intel");
168+
llvm_asm!("mov $0, cr3" : "=r"(pgdir) ::: "intel");
169169

170170
entryother::copy_binary_to(destination);
171171
entryother::init_args(destination, stack, pgdir as u32, code);

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#![no_std]
22
#![feature(abi_x86_interrupt)]
33
#![feature(
4-
asm,
54
allocator_api,
65
alloc_layout_extra,
76
alloc_error_handler,

src/redsys/resources/io_port.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ impl IOPort {
6060
Err("Policy forbids writing to port")
6161
} else {
6262
unsafe {
63-
asm!("cld; rep; outsd"
63+
llvm_asm!("cld; rep; outsd"
6464
: // output
6565
: "{dx}"(self._port), "{esi}"(val as *const _ as *const () as usize), "{ecx}"(val.len() as u32) // input
6666
: // clobber
@@ -77,7 +77,7 @@ impl IOPort {
7777
Err("Policy forbids reading from port")
7878
} else {
7979
unsafe {
80-
asm!("cld; rep; insd"
80+
llvm_asm!("cld; rep; insd"
8181
: "={esi}"(val as *const _ as *const () as usize) // output
8282
: "{dx}"(self._port), "{ecx}"(val.len() as u32) // input
8383
: // clobber

src/thread.rs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ extern "C" fn die(/*func: extern fn()*/) {
543543

544544
/* AB: XXX: We assume that the funciton pointer is still in r15 */
545545
unsafe{
546-
asm!("mov $0, r15" : "=r"(func) : : "memory" : "intel", "volatile");
546+
llvm_asm!("mov $0, r15" : "=r"(func) : : "memory" : "intel", "volatile");
547547
};
548548

549549
println!("Starting new thread");
@@ -565,42 +565,42 @@ extern "C" fn die(/*func: extern fn()*/) {
565565
#[inline(never)]
566566
#[naked]
567567
pub unsafe fn switch(prev: *mut Thread, next: *mut Thread) {
568-
//asm!("fxsave64 [$0]" : : "r"(self.fx) : "memory" : "intel", "volatile");
568+
//llvm_asm!("fxsave64 [$0]" : : "r"(self.fx) : "memory" : "intel", "volatile");
569569
//self.loadable = true;
570570
//if next.loadable {
571-
// asm!("fxrstor64 [$0]" : : "r"(next.fx) : "memory" : "intel", "volatile");
571+
// llvm_asm!("fxrstor64 [$0]" : : "r"(next.fx) : "memory" : "intel", "volatile");
572572
//}else{
573-
// asm!("fninit" : : : "memory" : "intel", "volatile");
573+
// llvm_asm!("fninit" : : : "memory" : "intel", "volatile");
574574
//}
575575

576-
//asm!("mov $0, cr3" : "=r"(self.cr3) : : "memory" : "intel", "volatile");
576+
//llvm_asm!("mov $0, cr3" : "=r"(self.cr3) : : "memory" : "intel", "volatile");
577577
//if next.cr3 != self.cr3 {
578-
// asm!("mov cr3, $0" : : "r"(next.cr3) : "memory" : "intel", "volatile");
578+
// llvm_asm!("mov cr3, $0" : : "r"(next.cr3) : "memory" : "intel", "volatile");
579579
//}
580580

581-
asm!("pushfq ; pop $0" : "=r"((*prev).context.rflags) : : "memory" : "intel", "volatile");
582-
asm!("push $0 ; popfq" : : "r"((*next).context.rflags) : "memory" : "intel", "volatile");
581+
llvm_asm!("pushfq ; pop $0" : "=r"((*prev).context.rflags) : : "memory" : "intel", "volatile");
582+
llvm_asm!("push $0 ; popfq" : : "r"((*next).context.rflags) : "memory" : "intel", "volatile");
583583

584-
asm!("mov $0, rbx" : "=r"((*prev).context.rbx) : : "memory" : "intel", "volatile");
585-
asm!("mov rbx, $0" : : "r"((*next).context.rbx) : "memory" : "intel", "volatile");
584+
llvm_asm!("mov $0, rbx" : "=r"((*prev).context.rbx) : : "memory" : "intel", "volatile");
585+
llvm_asm!("mov rbx, $0" : : "r"((*next).context.rbx) : "memory" : "intel", "volatile");
586586

587-
asm!("mov $0, r12" : "=r"((*prev).context.r12) : : "memory" : "intel", "volatile");
588-
asm!("mov r12, $0" : : "r"((*next).context.r12) : "memory" : "intel", "volatile");
587+
llvm_asm!("mov $0, r12" : "=r"((*prev).context.r12) : : "memory" : "intel", "volatile");
588+
llvm_asm!("mov r12, $0" : : "r"((*next).context.r12) : "memory" : "intel", "volatile");
589589

590-
asm!("mov $0, r13" : "=r"((*prev).context.r13) : : "memory" : "intel", "volatile");
591-
asm!("mov r13, $0" : : "r"((*next).context.r13) : "memory" : "intel", "volatile");
590+
llvm_asm!("mov $0, r13" : "=r"((*prev).context.r13) : : "memory" : "intel", "volatile");
591+
llvm_asm!("mov r13, $0" : : "r"((*next).context.r13) : "memory" : "intel", "volatile");
592592

593-
asm!("mov $0, r14" : "=r"((*prev).context.r14) : : "memory" : "intel", "volatile");
594-
asm!("mov r14, $0" : : "r"((*next).context.r14) : "memory" : "intel", "volatile");
593+
llvm_asm!("mov $0, r14" : "=r"((*prev).context.r14) : : "memory" : "intel", "volatile");
594+
llvm_asm!("mov r14, $0" : : "r"((*next).context.r14) : "memory" : "intel", "volatile");
595595

596-
asm!("mov $0, r15" : "=r"((*prev).context.r15) : : "memory" : "intel", "volatile");
597-
asm!("mov r15, $0" : : "r"((*next).context.r15) : "memory" : "intel", "volatile");
596+
llvm_asm!("mov $0, r15" : "=r"((*prev).context.r15) : : "memory" : "intel", "volatile");
597+
llvm_asm!("mov r15, $0" : : "r"((*next).context.r15) : "memory" : "intel", "volatile");
598598

599-
asm!("mov $0, rsp" : "=r"((*prev).context.rsp) : : "memory" : "intel", "volatile");
600-
asm!("mov rsp, $0" : : "r"((*next).context.rsp) : "memory" : "intel", "volatile");
599+
llvm_asm!("mov $0, rsp" : "=r"((*prev).context.rsp) : : "memory" : "intel", "volatile");
600+
llvm_asm!("mov rsp, $0" : : "r"((*next).context.rsp) : "memory" : "intel", "volatile");
601601

602-
asm!("mov $0, rbp" : "=r"((*prev).context.rbp) : : "memory" : "intel", "volatile");
603-
asm!("mov rbp, $0" : : "r"((*next).context.rbp) : "memory" : "intel", "volatile");
602+
llvm_asm!("mov $0, rbp" : "=r"((*prev).context.rbp) : : "memory" : "intel", "volatile");
603+
llvm_asm!("mov rbp, $0" : : "r"((*next).context.rbp) : "memory" : "intel", "volatile");
604604
}
605605

606606
//fn set_idle(t: Arc<Mutex<Thread>>) {

sys/interfaces/device/nvme/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![no_std]
22
#![feature(
3-
asm,
3+
llvm_asm,
44
core_intrinsics,
55
)]
66
mod nvme_cmd;

sys/interfaces/device/nvme/src/queue.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ impl NvmeCompletionQueue {
407407
if let Some(some) = self.complete() {
408408
return some;
409409
} else {
410-
unsafe { asm!("pause"); }
410+
unsafe { llvm_asm!("pause"); }
411411
}
412412
}
413413
}

sys/interfaces/device/pcidevice/src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#![no_std]
22
#![feature(
3-
asm,
3+
llvm_asm,
44
allocator_api,
5-
)]
5+
)]
66

77
#[macro_use]
88
extern crate bitflags;
@@ -188,7 +188,7 @@ fn pci_read(pci: &PciAddress, offset: u8) -> u32 {
188188
let address = 0x80000000 | ((pci.bus as u32) << 16) | ((pci.dev as u32) << 11) | ((pci.func as u32) << 8) | ((offset as u32) & 0xFC);
189189
let value: u32;
190190
unsafe {
191-
asm!("mov dx, $2
191+
llvm_asm!("mov dx, $2
192192
out dx, eax
193193
mov dx, $3
194194
in eax, dx"
@@ -201,10 +201,10 @@ fn pci_write(pci: &PciAddress, offset: u8, value: u32) {
201201
let address = 0x80000000 | ((pci.bus as u32) << 16) | ((pci.dev as u32) << 11) | ((pci.func as u32) << 8) | ((offset as u32) & 0xFC);
202202

203203
unsafe {
204-
asm!("mov dx, $1
204+
llvm_asm!("mov dx, $1
205205
out dx, eax"
206206
: : "{eax}"(address), "r"(PCI_ADDR_PORT) : "dx" : "intel", "volatile");
207-
asm!("mov dx, $1
207+
llvm_asm!("mov dx, $1
208208
out dx, eax"
209209
: : "{eax}"(value), "r"(PCI_DATA_PORT) : "dx" : "intel", "volatile");
210210
}

0 commit comments

Comments
 (0)