blob: 52e5d047eee6c24c60cfa6d6a6010fe50bd983cf [file] [log] [blame]
swissChili9b3584b2021-02-18 13:57:27 -08001#include "io.h"
swissChilid8137922021-02-17 15:34:07 -08002
swissChilid8137922021-02-17 15:34:07 -08003void outb(ushort port, uchar val)
4{
swissChili825d46b2021-02-21 10:14:16 -08005 asm volatile("outb %1, %0" : : "dN"(port), "a"(val));
swissChilid8137922021-02-17 15:34:07 -08006}
7
8uchar inb(ushort port)
9{
10 uchar ret;
swissChili825d46b2021-02-21 10:14:16 -080011 asm volatile("inb %1, %0" : "=a"(ret) : "dN"(port));
swissChilid8137922021-02-17 15:34:07 -080012 return ret;
13}
14
15ushort inw(ushort port)
16{
17 ushort ret;
swissChili825d46b2021-02-21 10:14:16 -080018 asm volatile("inw %1, %0" : "=a"(ret) : "dN"(port));
swissChilid8137922021-02-17 15:34:07 -080019 return ret;
20}
21
22void *memset(void *s, int c, size_t n)
23{
24 for (size_t i = 0; i < n; i++)
25 {
26 ((uchar *)s)[i] = c;
27 }
swissChili825d46b2021-02-21 10:14:16 -080028 return s;
swissChilid8137922021-02-17 15:34:07 -080029}
30
31void *memcpy(void *dest, const void *src, size_t n)
32{
33 for (size_t i = 0; i < n; i++)
34 {
35 ((uchar *)dest)[i] = ((uchar *)src)[i];
36 }
swissChili825d46b2021-02-21 10:14:16 -080037 return dest;
swissChilid8137922021-02-17 15:34:07 -080038}
swissChili9b3584b2021-02-18 13:57:27 -080039
40void io_wait()
41{
swissChili825d46b2021-02-21 10:14:16 -080042 asm volatile("outb %0, $0x80" ::"a"(0));
swissChili9b3584b2021-02-18 13:57:27 -080043}