oxytoxin

unix-like kernel
git clone git://git.evenfri.pw/oxytoxin.git
Log | Files | Refs | README | LICENSE

io.asm (766B)


      1 bits 32
      2 
      3 global outb
      4 global outw
      5 global inb
      6 global inw
      7 global io_wait
      8 
      9 section .text
     10 
     11 outb:
     12   push    ebp
     13   mov     ebp, esp
     14   ; [ebp+8] = port (16-bit)
     15   ; [ebp+12] = byte (8-bit)
     16   mov     dx, WORD [ebp+8]
     17   mov     al,  BYTE [ebp+12]
     18   out     dx, al
     19   pop     ebp
     20   ret
     21 
     22 outw:
     23   push    ebp
     24   mov     ebp, esp
     25   mov     dx, WORD [ebp+8]
     26   mov     ax, WORD [ebp+12]
     27   out     dx, ax
     28   pop     ebp
     29   ret
     30 
     31 inb:
     32   push    ebp
     33   mov     ebp, esp
     34   mov     dx, WORD [ebp+8]
     35   xor     eax, eax
     36   in      al, dx
     37   pop     ebp
     38   ret
     39 
     40 inw:
     41   push    ebp
     42   mov     ebp, esp
     43   mov     dx, WORD [ebp+8]
     44   xor     eax, eax
     45   in      ax, dx
     46   pop     ebp
     47   ret
     48 
     49 io_wait:
     50   push    ebp
     51   mov     ebp, esp
     52   mov     dx, 0x80
     53   xor     al, al
     54   out     dx, al
     55   pop     ebp
     56   ret