BITS 32
global io_hlt, io_cli, io_sti, io_stihlt
global io_in8, io_out8
global io_load_eflags, io_store_eflags
global load_gdtr, load_idtr
section .text
io_hlt:
HLT
RET
io_cli:
CLI
RET
io_sti:
STI
RET
io_stihlt:
STI
HLT
RET
io_in8:
MOV EDX, [ESP+4]
MOV EAX, 0
IN AL, DX
RET
io_out8:
MOV EDX, [ESP+4]
MOV AL, [ESP+8]
OUT DX, AL
RET
io_load_eflags:
PUSHFD
POP EAX
RET
io_store_eflags:
MOV EAX, [ESP+4]
PUSH EAX
POPFD
RET
load_gdtr:
MOV AX, [ESP+4]
MOV [ESP+6], AX
LGDT [ESP+6]
RET
load_idtr:
MOV AX, [ESP+4]
MOV [ESP+6], AX
LIDT [ESP+6]
RET
global get_cs
get_cs:
XOR EAX, EAX
MOV AX, CS
RET