forked from suyu/suyu
added config_mem module for HLE of firmware configuration memory settings
This commit is contained in:
parent
d1472b816f
commit
34dc0a9b07
5 changed files with 100 additions and 0 deletions
|
@ -19,6 +19,7 @@ set(SRCS core.cpp
|
||||||
file_sys/directory_file_system.cpp
|
file_sys/directory_file_system.cpp
|
||||||
file_sys/meta_file_system.cpp
|
file_sys/meta_file_system.cpp
|
||||||
hle/hle.cpp
|
hle/hle.cpp
|
||||||
|
hle/config_mem.cpp
|
||||||
hle/coprocessor.cpp
|
hle/coprocessor.cpp
|
||||||
hle/syscall.cpp
|
hle/syscall.cpp
|
||||||
hle/service/apt.cpp
|
hle/service/apt.cpp
|
||||||
|
|
|
@ -153,6 +153,7 @@
|
||||||
<ClCompile Include="elf\elf_reader.cpp" />
|
<ClCompile Include="elf\elf_reader.cpp" />
|
||||||
<ClCompile Include="file_sys\directory_file_system.cpp" />
|
<ClCompile Include="file_sys\directory_file_system.cpp" />
|
||||||
<ClCompile Include="file_sys\meta_file_system.cpp" />
|
<ClCompile Include="file_sys\meta_file_system.cpp" />
|
||||||
|
<ClCompile Include="hle\config_mem.cpp" />
|
||||||
<ClCompile Include="hle\coprocessor.cpp" />
|
<ClCompile Include="hle\coprocessor.cpp" />
|
||||||
<ClCompile Include="hle\hle.cpp" />
|
<ClCompile Include="hle\hle.cpp" />
|
||||||
<ClCompile Include="hle\service\apt.cpp" />
|
<ClCompile Include="hle\service\apt.cpp" />
|
||||||
|
@ -193,6 +194,7 @@
|
||||||
<ClInclude Include="file_sys\directory_file_system.h" />
|
<ClInclude Include="file_sys\directory_file_system.h" />
|
||||||
<ClInclude Include="file_sys\file_sys.h" />
|
<ClInclude Include="file_sys\file_sys.h" />
|
||||||
<ClInclude Include="file_sys\meta_file_system.h" />
|
<ClInclude Include="file_sys\meta_file_system.h" />
|
||||||
|
<ClInclude Include="hle\config_mem.h" />
|
||||||
<ClInclude Include="hle\coprocessor.h" />
|
<ClInclude Include="hle\coprocessor.h" />
|
||||||
<ClInclude Include="hle\function_wrappers.h" />
|
<ClInclude Include="hle\function_wrappers.h" />
|
||||||
<ClInclude Include="hle\hle.h" />
|
<ClInclude Include="hle\hle.h" />
|
||||||
|
|
|
@ -111,6 +111,9 @@
|
||||||
<ClCompile Include="hle\coprocessor.cpp">
|
<ClCompile Include="hle\coprocessor.cpp">
|
||||||
<Filter>hle</Filter>
|
<Filter>hle</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="hle\config_mem.cpp">
|
||||||
|
<Filter>hle</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="arm\disassembler\arm_disasm.h">
|
<ClInclude Include="arm\disassembler\arm_disasm.h">
|
||||||
|
@ -217,6 +220,9 @@
|
||||||
<ClInclude Include="hle\coprocessor.h">
|
<ClInclude Include="hle\coprocessor.h">
|
||||||
<Filter>hle</Filter>
|
<Filter>hle</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="hle\config_mem.h">
|
||||||
|
<Filter>hle</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Text Include="CMakeLists.txt" />
|
<Text Include="CMakeLists.txt" />
|
||||||
|
|
70
src/core/hle/config_mem.cpp
Normal file
70
src/core/hle/config_mem.cpp
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
// Copyright 2014 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/common_types.h"
|
||||||
|
#include "common/log.h"
|
||||||
|
|
||||||
|
#include "core/hle/config_mem.h"
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
namespace ConfigMem {
|
||||||
|
|
||||||
|
enum {
|
||||||
|
KERNEL_VERSIONREVISION = 0x1FF80001,
|
||||||
|
KERNEL_VERSIONMINOR = 0x1FF80002,
|
||||||
|
KERNEL_VERSIONMAJOR = 0x1FF80003,
|
||||||
|
UPDATEFLAG = 0x1FF80004,
|
||||||
|
NSTID = 0x1FF80008,
|
||||||
|
SYSCOREVER = 0x1FF80010,
|
||||||
|
UNITINFO = 0x1FF80014,
|
||||||
|
KERNEL_CTRSDKVERSION = 0x1FF80018,
|
||||||
|
APPMEMTYPE = 0x1FF80030,
|
||||||
|
APPMEMALLOC = 0x1FF80040,
|
||||||
|
FIRM_VERSIONREVISION = 0x1FF80061,
|
||||||
|
FIRM_VERSIONMINOR = 0x1FF80062,
|
||||||
|
FIRM_VERSIONMAJOR = 0x1FF80063,
|
||||||
|
FIRM_SYSCOREVER = 0x1FF80064,
|
||||||
|
FIRM_CTRSDKVERSION = 0x1FF80068,
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline void Read(T &var, const u32 addr) {
|
||||||
|
switch (addr) {
|
||||||
|
|
||||||
|
// Bit 0 set for Retail
|
||||||
|
case UNITINFO:
|
||||||
|
var = 0x00000001;
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Set app memory size to 64MB?
|
||||||
|
case APPMEMALLOC:
|
||||||
|
var = 0x04000000;
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Unknown - normally set to: 0x08000000 - (APPMEMALLOC + *0x1FF80048)
|
||||||
|
// (Total FCRAM size - APPMEMALLOC - *0x1FF80048)
|
||||||
|
case 0x1FF80044:
|
||||||
|
var = 0x08000000 - (0x04000000 + 0x1400000);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Unknown - normally set to: 0x1400000 (20MB)
|
||||||
|
case 0x1FF80048:
|
||||||
|
var = 0x1400000;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ERROR_LOG(HLE, "unknown ConfigMem::Read%d @ 0x%08X", sizeof(var) * 8, addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Explicitly instantiate template functions because we aren't defining this in the header:
|
||||||
|
|
||||||
|
template void Read<u64>(u64 &var, const u32 addr);
|
||||||
|
template void Read<u32>(u32 &var, const u32 addr);
|
||||||
|
template void Read<u16>(u16 &var, const u32 addr);
|
||||||
|
template void Read<u8>(u8 &var, const u32 addr);
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace
|
21
src/core/hle/config_mem.h
Normal file
21
src/core/hle/config_mem.h
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
// Copyright 2014 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Configuration memory stores various hardware/kernel configuration settings. This memory page is
|
||||||
|
// read-only for ARM11 processes. I'm guessing this would normally be written to by the firmware/
|
||||||
|
// bootrom. Because we're not emulating this, and essentially just "stubbing" the functionality, I'm
|
||||||
|
// putting this as a subset of HLE for now.
|
||||||
|
|
||||||
|
#include "common/common_types.h"
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
namespace ConfigMem {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline void Read(T &var, const u32 addr);
|
||||||
|
|
||||||
|
} // namespace
|
Loading…
Reference in a new issue