LF OS
Hobby operating system for amd64 with high ambitions
Loading...
Searching...
No Matches
io.h
Go to the documentation of this file.
1#ifndef _IO_H_INCLUDED
2#define _IO_H_INCLUDED
3
4#include <stdint.h>
5
6static inline void outb(uint16_t port, uint8_t data) {
7 asm volatile("outb %0, %1"::"a"(data), "Nd"(port));
8}
9
10static inline void outw(uint16_t port, uint16_t data) {
11 asm volatile("outw %0, %1"::"a"(data), "Nd"(port));
12}
13
14static inline void outl(uint16_t port, uint32_t data) {
15 asm volatile("outl %0, %1"::"a"(data), "Nd"(port));
16}
17
18static inline uint8_t inb(uint16_t port) {
19 uint8_t ret;
20 asm volatile("inb %1, %0":"=a"(ret):"Nd"(port));
21 return ret;
22}
23
24static inline uint16_t inw(uint16_t port) {
25 uint16_t ret;
26 asm volatile("inw %1, %0":"=a"(ret):"Nd"(port));
27 return ret;
28}
29
30static inline uint32_t inl(uint16_t port) {
31 uint32_t ret;
32 asm volatile("inl %1, %0":"=a"(ret):"Nd"(port));
33 return ret;
34}
35
36#endif
unsigned short uint16_t
Definition arch.h:8
unsigned int uint32_t
Definition arch.h:11
unsigned char uint8_t
Definition arch.h:5
static uint8_t inb(uint16_t port)
Definition io.h:18
static void outw(uint16_t port, uint16_t data)
Definition io.h:10
static void outb(uint16_t port, uint8_t data)
Definition io.h:6
static uint32_t inl(uint16_t port)
Definition io.h:30
static void outl(uint16_t port, uint32_t data)
Definition io.h:14
static uint16_t inw(uint16_t port)
Definition io.h:24