59 lines
944 B
C
59 lines
944 B
C
#include "util.h"
|
|
#include "types.h"
|
|
|
|
bool CompareMemory(const void* Addr1, const void* Addr2, u32 Length) {
|
|
const u8* Data1 = Addr1;
|
|
const u8* Data2 = Addr2;
|
|
|
|
for (uptr i = 0; i < Length; i++) {
|
|
if (Data1[i] != Data2[i]) return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void PortWrite8(u16 Port, u8 Data) {
|
|
asm ( "out %b1, %w0"
|
|
:
|
|
: "d" (Port),
|
|
"a" (Data));
|
|
}
|
|
|
|
void PortWrite16(u16 Port, u16 Data) {
|
|
asm ( "out %w1, %w0"
|
|
:
|
|
: "d" (Port),
|
|
"a" (Data));
|
|
}
|
|
|
|
void PortWrite32(u16 Port, u32 Data) {
|
|
asm ( "out %1, %w0"
|
|
:
|
|
: "d" (Port),
|
|
"a" (Data));
|
|
}
|
|
|
|
u8 PortRead8(u16 Port) {
|
|
u8 Data = 0;
|
|
asm ( "in %w1, %b0"
|
|
: "=a" (Data)
|
|
: "d" (Port));
|
|
return Data;
|
|
}
|
|
|
|
u16 PortRead16(u16 Port) {
|
|
u16 Data = 0;
|
|
asm ( "in %w1, %w0"
|
|
: "=a" (Data)
|
|
: "d" (Port));
|
|
return Data;
|
|
}
|
|
|
|
u32 PortRead32(u16 Port) {
|
|
u32 Data = 0;
|
|
asm ( "in %w1, %0"
|
|
: "=a" (Data)
|
|
: "d" (Port));
|
|
return Data;
|
|
}
|