summaryrefslogtreecommitdiff
path: root/src/kernel/util.asm
blob: acac17f8fe7a405c8707b14239ab46e61e145fe9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
bits 32

global outb
global inb
global outw
global inw

section .text
outb:
  ;word [esp + 4] = port
  ;byte [esp + 8] = value
  mov dx, word [esp + 4]
  mov al, byte [esp + 8]
  out dx, al
  ret

inb:
  ;word [esp + 4] = port
  ;al out = value
  mov dx, word [esp + 4]
  in al, dx
  ret

outw:
  ;word [esp + 4] = port
  ;word [esp + 8] = value
  mov dx, word [esp + 4]
  mov ax, word [esp + 8]
  out dx, ax
  ret

inw:
  ;word [esp + 4] = port
  ;ax out = value
  mov dx, word [esp + 4]
  in ax, dx
  ret