.code32 .section .text .global disable_interrupts disable_interrupts: cli ret .global enable_interrupts enable_interrupts: sti ret .global io_wait io_wait: outb %al, $0x80 ret .global liftoff liftoff: cli mov 4(%esp), %ecx mov 8(%esp), %ebx mov $0x23, %ax mov %ax, %ds mov %ax, %es mov %ax, %fs mov %ax, %gs push $0x23 push %ebx push $0x202 push $0x1B push %ecx xor %eax, %eax xor %edx, %edx iret .global outb outb: push %ebp mov %esp, %ebp # 8(%ebp) port # 12(%ebp) data mov 8(%ebp), %edx mov 12(%ebp), %eax outb %al, %dx leave ret .global inb inb: push %ebp mov %esp, %ebp # 8(%ebp) port mov 8(%ebp), %edx xor %eax, %eax inb %dx, %al leave ret