aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-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;