32-bit operations on I/O ports.

alentours-dev
q3k 2012-10-28 10:27:36 +01:00
parent 247dcd80dc
commit 39f7d128cb
2 changed files with 14 additions and 0 deletions

View File

@ -8,6 +8,8 @@
void kstdio_init(void);
void koutb(u16 Port, u8 Data);
u8 kinb(u16 Port);
void koutl(u16 Port, u32 Data);
u32 kinl(u16 Port);
void kio_wait(void);
u32 kstrlen(const s8 *szString);
void kmove_cursor(u8 X, u8 Y);

View File

@ -41,6 +41,18 @@ u8 kinb(u16 Port)
return Return;
}
void koutl(u16 Port, u32 Data)
{
__asm__ volatile("outl %1, %0" :: "dN" (Port), "a" (Data));
}
u32 kinl(u16 Port)
{
u32 Return;
__asm__ volatile("inl %1, %0" :"=a"(Return):"Nd"(Port));
return Return;
}
void kio_wait(void)
{
__asm__ volatile("jmp 1f;1:jmp 1f;1:");