Implement Read/Write 8/16 in EmuX86 and EmuNVNet.
This commit is contained in:
parent
7dd48fd592
commit
a0d90a4835
|
@ -257,12 +257,36 @@ void EmuNVNet_SetRegister(xbaddr addr, uint32_t value, unsigned int size)
|
|||
}
|
||||
}
|
||||
|
||||
uint8_t EmuNVNet_Read8(xbaddr addr)
|
||||
{
|
||||
DbgPrintf("EmuNVNet_Read8: %s (0x%08X)\n", EmuNVNet_GetRegisterName(addr), addr);
|
||||
return EmuNVNet_GetRegister(addr, sizeof(uint8_t));
|
||||
}
|
||||
|
||||
uint16_t EmuNVNet_Read16(xbaddr addr)
|
||||
{
|
||||
DbgPrintf("EmuNVNet_Read16: %s (0x%08X)\n", EmuNVNet_GetRegisterName(addr), addr);
|
||||
return EmuNVNet_GetRegister(addr, sizeof(uint16_t));
|
||||
}
|
||||
|
||||
uint32_t EmuNVNet_Read32(xbaddr addr)
|
||||
{
|
||||
DbgPrintf("EmuNVNet_Read32: %s (0x%08X)\n", EmuNVNet_GetRegisterName(addr), addr);
|
||||
return EmuNVNet_GetRegister(addr, sizeof(uint32_t));
|
||||
}
|
||||
|
||||
void EmuNVNet_Write8(xbaddr addr, uint8_t value)
|
||||
{
|
||||
DbgPrintf("EmuNVNet_Write8: %s (0x%08X) = 0x%02X\n", EmuNVNet_GetRegisterName(addr), addr, value);
|
||||
return EmuNVNet_SetRegister(addr, value, sizeof(uint8_t));
|
||||
}
|
||||
|
||||
void EmuNVNet_Write16(xbaddr addr, uint16_t value)
|
||||
{
|
||||
DbgPrintf("EmuNVNet_Write16: %s (0x%08X) = 0x%04X\n", EmuNVNet_GetRegisterName(addr), addr, value);
|
||||
return EmuNVNet_SetRegister(addr, value, sizeof(uint16_t));
|
||||
}
|
||||
|
||||
void EmuNVNet_Write32(xbaddr addr, uint32_t value)
|
||||
{
|
||||
DbgPrintf("EmuNVNet_Write32: %s (0x%08X) = 0x%08X\n", EmuNVNet_GetRegisterName(addr), addr, value);
|
||||
|
|
|
@ -37,7 +37,12 @@
|
|||
#define NVNET_ADDR 0xFEF00000
|
||||
#define NVNET_SIZE 0x00000400
|
||||
|
||||
uint8_t EmuNVNet_Read8(xbaddr addr);
|
||||
uint16_t EmuNVNet_Read16(xbaddr addr);
|
||||
uint32_t EmuNVNet_Read32(xbaddr addr);
|
||||
|
||||
void EmuNVNet_Write8(xbaddr addr, uint8_t value);
|
||||
void EmuNVNet_Write16(xbaddr addr, uint16_t value);
|
||||
void EmuNVNet_Write32(xbaddr addr, uint32_t value);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -180,21 +180,45 @@ uint32_t EmuX86_Read32(xbaddr addr)
|
|||
|
||||
uint16_t EmuX86_Read16(xbaddr addr)
|
||||
{
|
||||
DbgPrintf("EmuX86_Read16(0x%08X)\n", addr);
|
||||
uint16_t value;
|
||||
|
||||
if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||
value = EmuNVNet_Read16(addr - NVNET_ADDR);
|
||||
}
|
||||
else {
|
||||
if (g_bEmuException) {
|
||||
EmuWarning("EmuX86_Read16(0x%08X) [Unknown address]", addr);
|
||||
value = 0;
|
||||
}
|
||||
else {
|
||||
// Outside EmuException, pass the memory-access through to normal memory :
|
||||
value = EmuX86_Mem_Read16(addr);
|
||||
}
|
||||
DbgPrintf("EmuX86_Read16(0x%08X) = 0x%04X\n", addr, value);
|
||||
}
|
||||
|
||||
CxbxKrnlCleanup("EmuX86_Read16 Unimplemented");
|
||||
|
||||
uint16_t value = 0;
|
||||
return value;
|
||||
}
|
||||
|
||||
uint8_t EmuX86_Read8(xbaddr addr)
|
||||
{
|
||||
DbgPrintf("EmuX86_Read8(0x%08X) = 0x%02X\n", addr);
|
||||
uint8_t value;
|
||||
|
||||
CxbxKrnlCleanup("EmuX86_Read8 Unimplemented");
|
||||
if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||
value = EmuNVNet_Read8(addr - NVNET_ADDR);
|
||||
}
|
||||
else {
|
||||
if (g_bEmuException) {
|
||||
EmuWarning("EmuX86_Read8(0x%08X) [Unknown address]", addr);
|
||||
value = 0;
|
||||
}
|
||||
else {
|
||||
// Outside EmuException, pass the memory-access through to normal memory :
|
||||
value = EmuX86_Mem_Read8(addr);
|
||||
}
|
||||
DbgPrintf("EmuX86_Read8(0x%08X) = 0x%02X\n", addr, value);
|
||||
}
|
||||
|
||||
uint8_t value = 0;
|
||||
return value;
|
||||
}
|
||||
|
||||
|
@ -240,16 +264,36 @@ void EmuX86_Write32(xbaddr addr, uint32_t value)
|
|||
|
||||
void EmuX86_Write16(xbaddr addr, uint16_t value)
|
||||
{
|
||||
DbgPrintf("EmuX86_Write16(0x%08X, 0x%04X)\n", addr, value);
|
||||
if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||
EmuNVNet_Write16(addr - NVNET_ADDR, value);
|
||||
return;
|
||||
}
|
||||
|
||||
CxbxKrnlCleanup("EmuX86_Write16 Unimplemented");
|
||||
assert((addr & 1) == 0);
|
||||
if (g_bEmuException) {
|
||||
EmuWarning("EmuX86_Write16(0x%08X, 0x%04X) [Unknown address]", addr, value);
|
||||
return;
|
||||
}
|
||||
|
||||
// Outside EmuException, pass the memory-access through to normal memory :
|
||||
DbgPrintf("EmuX86_Write16(0x%08X, 0x%04X)\n", addr, value);
|
||||
EmuX86_Mem_Write16(addr, value);
|
||||
}
|
||||
|
||||
void EmuX86_Write8(xbaddr addr, uint8_t value)
|
||||
{
|
||||
if (addr >= NVNET_ADDR && addr < NVNET_ADDR + NVNET_SIZE) {
|
||||
EmuNVNet_Write8(addr - NVNET_ADDR, value);
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_bEmuException) {
|
||||
EmuWarning("EmuX86_Write8(0x%08X, 0x%02X) [Unknown address]", addr, value);
|
||||
return;
|
||||
}
|
||||
|
||||
// Outside EmuException, pass the memory-access through to normal memory :
|
||||
DbgPrintf("EmuX86_Write8(0x%08X, 0x%02X)\n", addr, value);
|
||||
CxbxKrnlCleanup("EmuX86_Write8 Unimplemented");
|
||||
EmuX86_Mem_Write8(addr, value);
|
||||
}
|
||||
|
||||
int ContextRecordOffsetByRegisterType[/*_RegisterType*/R_DR7 + 1] = { 0 };
|
||||
|
|
Loading…
Reference in New Issue