summaryrefslogtreecommitdiff
path: root/sys/arch/amd64/bus
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/amd64/bus')
-rw-r--r--sys/arch/amd64/bus/mainbus/pio.S42
1 files changed, 42 insertions, 0 deletions
diff --git a/sys/arch/amd64/bus/mainbus/pio.S b/sys/arch/amd64/bus/mainbus/pio.S
new file mode 100644
index 0000000..e18b7cc
--- /dev/null
+++ b/sys/arch/amd64/bus/mainbus/pio.S
@@ -0,0 +1,42 @@
+ .text
+ .globl pio_outb
+pio_outb:
+ mov %rdi, %rdx // PORT
+ mov %rsi, %rax // VAL
+ outb %al, %dx
+ retq
+
+ .globl pio_outw
+pio_outw:
+ mov %rdi, %rdx // PORT
+ mov %rsi, %rax // VAL
+ outw %ax, %dx
+ retq
+
+ .globl pio_outl
+pio_outl:
+ mov %rdi, %rdx // PORT
+ mov %rsi, %rax // VAL
+ outl %eax, %dx
+ retq
+
+ .globl pio_inb
+pio_inb:
+ mov %rdi, %rdx // PORT
+ xor %rax, %rax
+ inb %dx, %al
+ retq
+
+.global pio_inw
+pio_inw:
+ mov %rdi, %rdx // PORT
+ xor %rax, %rax
+ inw %dx, %ax
+ retq
+
+.global pio_inl
+pio_inl:
+ mov %rdi, %rdx // PORT
+ xor %rax, %rax
+ inl %dx, %eax
+ retq