summaryrefslogtreecommitdiff
path: root/src/hardware/port.asm
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-06-10 21:26:24 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-06-10 21:26:24 +0200
commitd6d1bdfefafff50b7b6d15d218c0a188570be541 (patch)
tree15ee8de727d0be5d126efda146b2879de0a72773 /src/hardware/port.asm
parenteea5bf4b859eb56c5772c58ca54937a90a10e7ee (diff)
downloadabaos-d6d1bdfefafff50b7b6d15d218c0a188570be541.tar.gz
abaos-d6d1bdfefafff50b7b6d15d218c0a188570be541.tar.bz2
some big renames into subdirs of aspects
updated README removed size_t in sys/types.h and sys/types.h itself, size_t is in stddef.h
Diffstat (limited to 'src/hardware/port.asm')
-rw-r--r--src/hardware/port.asm49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/hardware/port.asm b/src/hardware/port.asm
new file mode 100644
index 0000000..555a4e8
--- /dev/null
+++ b/src/hardware/port.asm
@@ -0,0 +1,49 @@
+[bits 32]
+
+global port8_write
+global port8_read
+
+; void port8_write( port8_t *port, uint8_t data );
+port8_write:
+ push ebp
+ mov ebp, esp
+ mov ecx, [ebp+8]
+ mov edx, DWORD [ecx]
+ movzx ax, BYTE [ebp+12]
+ out dx, al
+ leave
+ ret
+
+; uint8_t port8_read( port8_t *port )
+port8_read:
+ push ebp
+ mov ebp, esp
+ mov ecx, DWORD [ebp+8]
+ mov edx, [ecx]
+ in al, dx
+ leave
+ ret
+
+global port32_write
+global port32_read
+
+; void port32_write( port32_t *port, uint32_t data );
+port32_write:
+ push ebp
+ mov ebp, esp
+ mov ecx, [ebp+8]
+ mov edx, DWORD [ecx]
+ mov eax, DWORD [ebp+12]
+ out dx, eax
+ leave
+ ret
+
+; uint32_t port32_read( port32_t *port )
+port32_read:
+ push ebp
+ mov ebp, esp
+ mov ecx, DWORD [ebp+8]
+ mov edx, [ecx]
+ in eax, dx
+ leave
+ ret