summaryrefslogtreecommitdiffstats
path: root/src/core/hle
diff options
context:
space:
mode:
authorbunnei <ericbunnie@gmail.com>2014-05-07 05:29:39 +0200
committerbunnei <ericbunnie@gmail.com>2014-05-07 05:29:39 +0200
commit34dc0a9b0750321d9556ac2e9c57007526096caf (patch)
treea6f1ab57383d4ea68060462c69ce5ce0dc59aa8a /src/core/hle
parent- disable strict alignment on LDRD/STRD (diff)
downloadyuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.tar
yuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.tar.gz
yuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.tar.bz2
yuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.tar.lz
yuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.tar.xz
yuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.tar.zst
yuzu-34dc0a9b0750321d9556ac2e9c57007526096caf.zip
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/config_mem.cpp70
-rw-r--r--src/core/hle/config_mem.h21
2 files changed, 91 insertions, 0 deletions
diff --git a/src/core/hle/config_mem.cpp b/src/core/hle/config_mem.cpp
new file mode 100644
index 000000000..48aa878cc
--- /dev/null
+++ b/src/core/hle/config_mem.cpp
@@ -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
diff --git a/src/core/hle/config_mem.h b/src/core/hle/config_mem.h
new file mode 100644
index 000000000..da396a3e6
--- /dev/null
+++ b/src/core/hle/config_mem.h
@@ -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