stos/amd64: Add port I/O helpers

Signed-off-by: Chloe M. <chloe@mensia.org>
This commit is contained in:
Chloe M.
2026-06-22 01:36:40 +00:00
parent 3ad06ac1f8
commit c5b77032ac
3 changed files with 63 additions and 1 deletions
+6 -1
View File
@@ -10,7 +10,12 @@
include ../mk/stos.mk include ../mk/stos.mk
.PHONY: all .PHONY: all
all: ke machine all: target ke machine
.PHONY: target
target:
mkdir -p target/machine/
rsync -avr head/arch/$(ST_TARGET_ARCH)/*.h target/machine/
.PHONY: ke .PHONY: ke
ke: ke:
+56
View File
@@ -0,0 +1,56 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause.
*
* Description: Port I/O helpers
* Author: Chloe M.
*/
#ifndef _MACHINE_PIO_H_
#define _MACHINE_PIO_H_ 1
#include <stdef.h>
ALWAYS_INLINE static inline UCHAR
MdInb(USHORT Port)
{
UCHAR result;
ASMV("in %%dx, %%al" : "=a" (result) : "d" (Port));
return result;
}
ALWAYS_INLINE static inline USHORT
MdInw(USHORT Port)
{
USHORT Val;
ASMV("inw %w1, %w0" : "=a" (Val) : "Nd" (Port));
return Val;
}
ALWAYS_INLINE static inline ULONG
MdInl(USHORT Port)
{
ULONG Val;
ASMV("inl %w1, %0" : "=a" (Val) : "Nd" (Port));
return Val;
}
ALWAYS_INLINE static inline VOID
MdOutb(USHORT Port, UCHAR Val)
{
ASMV("out %%al, %%dx" : :"a" (Val), "d" (Port));
}
ALWAYS_INLINE static inline VOID
MdOutw(USHORT Port, USHORT Val)
{
ASMV("outw %w0, %w1" : : "a" (Val), "Nd" (Port));
}
ALWAYS_INLINE static inline VOID
MdOutl(USHORT Port, ULONG Val)
{
ASMV("outl %0, %w1" : : "a" (Val), "Nd" (Port));
}
#endif /* !_MACHINE_PIO_H_ */
+1
View File
@@ -23,6 +23,7 @@ CFLAGS = \
-DPRINTF_DISABLE_SUPPORT_PTRDIFF_T \ -DPRINTF_DISABLE_SUPPORT_PTRDIFF_T \
-DPRINTF_DISABLE_SUPPORT_FLOAT \ -DPRINTF_DISABLE_SUPPORT_FLOAT \
-I../head \ -I../head \
-I../target \
-I$(ST_PROJECT_ROOT)/paw/spkg/head \ -I$(ST_PROJECT_ROOT)/paw/spkg/head \
-I$(ST_PROJECT_ROOT)/sdk/head \ -I$(ST_PROJECT_ROOT)/sdk/head \
-D_BOOT_PROTO="\"$(ST_BOOT_PROTOCOL)\"" -D_BOOT_PROTO="\"$(ST_BOOT_PROTOCOL)\""