aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86_64
diff options
context:
space:
mode:
authorTianhao Wang <shrik3@riseup.net>2023-03-14 10:47:25 +0100
committerTianhao Wang <shrik3@riseup.net>2023-03-14 10:47:25 +0100
commit383c203d77404b4f74723d7a89be691744f41c25 (patch)
tree1061f01ed975a2c6b37015567b27cccac9f9f87b /src/arch/x86_64
parent4eae38a6ce9110a155715575adcf12bdf45703cb (diff)
add delay between IOs
Diffstat (limited to 'src/arch/x86_64')
-rw-r--r--src/arch/x86_64/asm/misc.s11
-rw-r--r--src/arch/x86_64/misc.rs17
-rw-r--r--src/arch/x86_64/mod.rs1
3 files changed, 29 insertions, 0 deletions
diff --git a/src/arch/x86_64/asm/misc.s b/src/arch/x86_64/asm/misc.s
new file mode 100644
index 0000000..fc5aa90
--- /dev/null
+++ b/src/arch/x86_64/asm/misc.s
@@ -0,0 +1,11 @@
+; place for misc code, before they find better places to live..
+
+[GLOBAL _delay]
+
+[SECTION .text]
+
+_delay:
+ jmp .dummy
+.dummy:
+ ret
+
diff --git a/src/arch/x86_64/misc.rs b/src/arch/x86_64/misc.rs
new file mode 100644
index 0000000..c007d99
--- /dev/null
+++ b/src/arch/x86_64/misc.rs
@@ -0,0 +1,17 @@
+// wrappers for misc. architectural code
+// before they find better place to go.
+// asm code goes to asm/misc.s
+
+extern "C" {
+ fn _delay();
+}
+
+#[inline(always)]
+
+// delays for several cycles. Used to fill sequantial IO commands
+// (for devices to react)
+pub fn delay() {
+ unsafe {
+ _delay();
+ }
+}
diff --git a/src/arch/x86_64/mod.rs b/src/arch/x86_64/mod.rs
index ef06437..f48c7fd 100644
--- a/src/arch/x86_64/mod.rs
+++ b/src/arch/x86_64/mod.rs
@@ -3,3 +3,4 @@ pub mod pic;
pub mod pit;
pub mod plugbox;
pub mod cpu;
+pub mod misc;