lindows/lcrash/util.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;
}