From 1f3889a2906b924aa3fadb419652d4d2182ec112 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Mon, 23 Jul 2018 12:49:44 -0400
Subject: [PATCH 1/2] hle: Remove shared_page.h/.cpp

This is a holdover from citra that's essentially unused.
---
 src/core/CMakeLists.txt             |  2 -
 src/core/hle/kernel/kernel.cpp      |  2 -
 src/core/hle/kernel/memory.cpp      |  1 -
 src/core/hle/kernel/wait_object.cpp |  1 -
 src/core/hle/shared_page.cpp        | 86 -----------------------------
 src/core/hle/shared_page.h          | 69 -----------------------
 6 files changed, 161 deletions(-)
 delete mode 100644 src/core/hle/shared_page.cpp
 delete mode 100644 src/core/hle/shared_page.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 27a5de7fd0..5473723aad 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -249,8 +249,6 @@ add_library(core STATIC
     hle/service/vi/vi_s.h
     hle/service/vi/vi_u.cpp
     hle/service/vi/vi_u.h
-    hle/shared_page.cpp
-    hle/shared_page.h
     hw/hw.cpp
     hw/hw.h
     hw/lcd.cpp
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index b325b879b2..fae81e72b0 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -11,7 +11,6 @@
 #include "core/hle/kernel/resource_limit.h"
 #include "core/hle/kernel/thread.h"
 #include "core/hle/kernel/timer.h"
-#include "core/hle/shared_page.h"
 
 namespace Kernel {
 
@@ -20,7 +19,6 @@ unsigned int Object::next_object_id;
 /// Initialize the kernel
 void Init(u32 system_mode) {
     ConfigMem::Init();
-    SharedPage::Init();
 
     Kernel::MemoryInit(system_mode);
 
diff --git a/src/core/hle/kernel/memory.cpp b/src/core/hle/kernel/memory.cpp
index d2600cdd79..ecbc5daae5 100644
--- a/src/core/hle/kernel/memory.cpp
+++ b/src/core/hle/kernel/memory.cpp
@@ -15,7 +15,6 @@
 #include "core/hle/kernel/memory.h"
 #include "core/hle/kernel/vm_manager.h"
 #include "core/hle/result.h"
-#include "core/hle/shared_page.h"
 #include "core/memory.h"
 #include "core/memory_setup.h"
 
diff --git a/src/core/hle/kernel/wait_object.cpp b/src/core/hle/kernel/wait_object.cpp
index eb3c92e66a..e279c5df90 100644
--- a/src/core/hle/kernel/wait_object.cpp
+++ b/src/core/hle/kernel/wait_object.cpp
@@ -13,7 +13,6 @@
 #include "core/hle/kernel/resource_limit.h"
 #include "core/hle/kernel/thread.h"
 #include "core/hle/kernel/timer.h"
-#include "core/hle/shared_page.h"
 
 namespace Kernel {
 
diff --git a/src/core/hle/shared_page.cpp b/src/core/hle/shared_page.cpp
deleted file mode 100644
index 9ed8ab2490..0000000000
--- a/src/core/hle/shared_page.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include <chrono>
-#include <cstring>
-#include <ctime>
-#include "core/core_timing.h"
-#include "core/hle/shared_page.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-namespace SharedPage {
-
-SharedPageDef shared_page;
-
-static CoreTiming::EventType* update_time_event;
-
-/// Gets system time in 3DS format. The epoch is Jan 1900, and the unit is millisecond.
-static u64 GetSystemTime() {
-    auto now = std::chrono::system_clock::now();
-
-    // 3DS system does't allow user to set a time before Jan 1 2000,
-    // so we use it as an auxiliary epoch to calculate the console time.
-    std::tm epoch_tm;
-    epoch_tm.tm_sec = 0;
-    epoch_tm.tm_min = 0;
-    epoch_tm.tm_hour = 0;
-    epoch_tm.tm_mday = 1;
-    epoch_tm.tm_mon = 0;
-    epoch_tm.tm_year = 100;
-    epoch_tm.tm_isdst = 0;
-    auto epoch = std::chrono::system_clock::from_time_t(std::mktime(&epoch_tm));
-
-    // 3DS console time uses Jan 1 1900 as internal epoch,
-    // so we use the milliseconds between 1900 and 2000 as base console time
-    u64 console_time = 3155673600000ULL;
-
-    // Only when system time is after 2000, we set it as 3DS system time
-    if (now > epoch) {
-        console_time += std::chrono::duration_cast<std::chrono::milliseconds>(now - epoch).count();
-    }
-
-    // If the system time is in daylight saving, we give an additional hour to console time
-    std::time_t now_time_t = std::chrono::system_clock::to_time_t(now);
-    std::tm* now_tm = std::localtime(&now_time_t);
-    if (now_tm && now_tm->tm_isdst > 0)
-        console_time += 60 * 60 * 1000;
-
-    return console_time;
-}
-
-static void UpdateTimeCallback(u64 userdata, int cycles_late) {
-    DateTime& date_time =
-        shared_page.date_time_counter % 2 ? shared_page.date_time_0 : shared_page.date_time_1;
-
-    date_time.date_time = GetSystemTime();
-    date_time.update_tick = CoreTiming::GetTicks();
-    date_time.tick_to_second_coefficient = CoreTiming::BASE_CLOCK_RATE;
-    date_time.tick_offset = 0;
-
-    ++shared_page.date_time_counter;
-
-    // system time is updated hourly
-    CoreTiming::ScheduleEvent(CoreTiming::msToCycles(60 * 60 * 1000) - cycles_late,
-                              update_time_event);
-}
-
-void Init() {
-    std::memset(&shared_page, 0, sizeof(shared_page));
-
-    shared_page.running_hw = 0x1; // product
-
-    // Some games wait until this value becomes 0x1, before asking running_hw
-    shared_page.unknown_value = 0x1;
-
-    // Set to a completely full battery
-    shared_page.battery_state.is_adapter_connected.Assign(1);
-    shared_page.battery_state.is_charging.Assign(1);
-
-    update_time_event =
-        CoreTiming::RegisterEvent("SharedPage::UpdateTimeCallback", UpdateTimeCallback);
-    CoreTiming::ScheduleEvent(0, update_time_event);
-}
-
-} // namespace SharedPage
diff --git a/src/core/hle/shared_page.h b/src/core/hle/shared_page.h
deleted file mode 100644
index a58259888c..0000000000
--- a/src/core/hle/shared_page.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-/**
- * The shared page stores various runtime configuration settings. This memory page is
- * read-only for user processes (there is a bit in the header that grants the process
- * write access, according to 3dbrew; this is not emulated)
- */
-
-#include "common/bit_field.h"
-#include "common/common_funcs.h"
-#include "common/common_types.h"
-#include "common/swap.h"
-#include "core/memory.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-namespace SharedPage {
-
-// See http://3dbrew.org/wiki/Configuration_Memory#Shared_Memory_Page_For_ARM11_Processes
-
-struct DateTime {
-    u64_le date_time;                  // 0
-    u64_le update_tick;                // 8
-    u64_le tick_to_second_coefficient; // 10
-    u64_le tick_offset;                // 18
-};
-static_assert(sizeof(DateTime) == 0x20, "Datetime size is wrong");
-
-union BatteryState {
-    u8 raw;
-    BitField<0, 1, u8> is_adapter_connected;
-    BitField<1, 1, u8> is_charging;
-    BitField<2, 3, u8> charge_level;
-};
-
-struct SharedPageDef {
-    // Most of these names are taken from the 3dbrew page linked above.
-    u32_le date_time_counter; // 0
-    u8 running_hw;            // 4
-    /// "Microcontroller hardware info"
-    u8 mcu_hw_info;                      // 5
-    INSERT_PADDING_BYTES(0x20 - 0x6);    // 6
-    DateTime date_time_0;                // 20
-    DateTime date_time_1;                // 40
-    u8 wifi_macaddr[6];                  // 60
-    u8 wifi_link_level;                  // 66
-    u8 wifi_unknown2;                    // 67
-    INSERT_PADDING_BYTES(0x80 - 0x68);   // 68
-    float_le sliderstate_3d;             // 80
-    u8 ledstate_3d;                      // 84
-    BatteryState battery_state;          // 85
-    u8 unknown_value;                    // 86
-    INSERT_PADDING_BYTES(0xA0 - 0x87);   // 87
-    u64_le menu_title_id;                // A0
-    u64_le active_menu_title_id;         // A8
-    INSERT_PADDING_BYTES(0x1000 - 0xB0); // B0
-};
-static_assert(sizeof(SharedPageDef) == Memory::SHARED_PAGE_SIZE,
-              "Shared page structure size is wrong");
-
-extern SharedPageDef shared_page;
-
-void Init();
-
-} // namespace SharedPage

From cbe841c9c979752c0cf2e0241cd6e51590e3b90c Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Mon, 23 Jul 2018 12:57:32 -0400
Subject: [PATCH 2/2] hle: Remove config_mem.h/.cpp

This is just an unused hold-over from citra, so we can get rid of this
to trim off an exposed global, among other things.
---
 src/core/CMakeLists.txt             |  2 --
 src/core/hle/config_mem.cpp         | 31 ----------------
 src/core/hle/config_mem.h           | 56 -----------------------------
 src/core/hle/kernel/kernel.cpp      |  3 --
 src/core/hle/kernel/memory.cpp      |  9 -----
 src/core/hle/kernel/wait_object.cpp |  1 -
 6 files changed, 102 deletions(-)
 delete mode 100644 src/core/hle/config_mem.cpp
 delete mode 100644 src/core/hle/config_mem.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 5473723aad..1849c5d2a5 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -38,8 +38,6 @@ add_library(core STATIC
     frontend/input.h
     gdbstub/gdbstub.cpp
     gdbstub/gdbstub.h
-    hle/config_mem.cpp
-    hle/config_mem.h
     hle/ipc.h
     hle/ipc_helpers.h
     hle/kernel/address_arbiter.cpp
diff --git a/src/core/hle/config_mem.cpp b/src/core/hle/config_mem.cpp
deleted file mode 100644
index 038af79096..0000000000
--- a/src/core/hle/config_mem.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include <cstring>
-#include "core/hle/config_mem.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-namespace ConfigMem {
-
-ConfigMemDef config_mem;
-
-void Init() {
-    std::memset(&config_mem, 0, sizeof(config_mem));
-
-    // Values extracted from firmware 11.2.0-35E
-    config_mem.kernel_version_min = 0x34;
-    config_mem.kernel_version_maj = 0x2;
-    config_mem.ns_tid = 0x0004013000008002;
-    config_mem.sys_core_ver = 0x2;
-    config_mem.unit_info = 0x1; // Bit 0 set for Retail
-    config_mem.prev_firm = 0x1;
-    config_mem.ctr_sdk_ver = 0x0000F297;
-    config_mem.firm_version_min = 0x34;
-    config_mem.firm_version_maj = 0x2;
-    config_mem.firm_sys_core_ver = 0x2;
-    config_mem.firm_ctr_sdk_ver = 0x0000F297;
-}
-
-} // namespace ConfigMem
diff --git a/src/core/hle/config_mem.h b/src/core/hle/config_mem.h
deleted file mode 100644
index 1840d17609..0000000000
--- a/src/core/hle/config_mem.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// 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_funcs.h"
-#include "common/common_types.h"
-#include "common/swap.h"
-#include "core/memory.h"
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-namespace ConfigMem {
-
-struct ConfigMemDef {
-    u8 kernel_unk;                       // 0
-    u8 kernel_version_rev;               // 1
-    u8 kernel_version_min;               // 2
-    u8 kernel_version_maj;               // 3
-    u32_le update_flag;                  // 4
-    u64_le ns_tid;                       // 8
-    u32_le sys_core_ver;                 // 10
-    u8 unit_info;                        // 14
-    u8 boot_firm;                        // 15
-    u8 prev_firm;                        // 16
-    INSERT_PADDING_BYTES(0x1);           // 17
-    u32_le ctr_sdk_ver;                  // 18
-    INSERT_PADDING_BYTES(0x30 - 0x1C);   // 1C
-    u32_le app_mem_type;                 // 30
-    INSERT_PADDING_BYTES(0x40 - 0x34);   // 34
-    u32_le app_mem_alloc;                // 40
-    u32_le sys_mem_alloc;                // 44
-    u32_le base_mem_alloc;               // 48
-    INSERT_PADDING_BYTES(0x60 - 0x4C);   // 4C
-    u8 firm_unk;                         // 60
-    u8 firm_version_rev;                 // 61
-    u8 firm_version_min;                 // 62
-    u8 firm_version_maj;                 // 63
-    u32_le firm_sys_core_ver;            // 64
-    u32_le firm_ctr_sdk_ver;             // 68
-    INSERT_PADDING_BYTES(0x1000 - 0x6C); // 6C
-};
-static_assert(sizeof(ConfigMemDef) == Memory::CONFIG_MEMORY_SIZE,
-              "Config Memory structure size is wrong");
-
-extern ConfigMemDef config_mem;
-
-void Init();
-
-} // namespace ConfigMem
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index fae81e72b0..1beb985663 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -2,7 +2,6 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "core/hle/config_mem.h"
 #include "core/hle/kernel/handle_table.h"
 #include "core/hle/kernel/kernel.h"
 #include "core/hle/kernel/memory.h"
@@ -18,8 +17,6 @@ unsigned int Object::next_object_id;
 
 /// Initialize the kernel
 void Init(u32 system_mode) {
-    ConfigMem::Init();
-
     Kernel::MemoryInit(system_mode);
 
     Kernel::ResourceLimitsInit();
diff --git a/src/core/hle/kernel/memory.cpp b/src/core/hle/kernel/memory.cpp
index ecbc5daae5..94eac677c5 100644
--- a/src/core/hle/kernel/memory.cpp
+++ b/src/core/hle/kernel/memory.cpp
@@ -11,7 +11,6 @@
 #include "common/assert.h"
 #include "common/common_types.h"
 #include "common/logging/log.h"
-#include "core/hle/config_mem.h"
 #include "core/hle/kernel/memory.h"
 #include "core/hle/kernel/vm_manager.h"
 #include "core/hle/result.h"
@@ -62,14 +61,6 @@ void MemoryInit(u32 mem_type) {
 
     // We must've allocated the entire FCRAM by the end
     ASSERT(base == Memory::FCRAM_SIZE);
-
-    using ConfigMem::config_mem;
-    config_mem.app_mem_type = mem_type;
-    // app_mem_malloc does not always match the configured size for memory_region[0]: in case the
-    // n3DS type override is in effect it reports the size the game expects, not the real one.
-    config_mem.app_mem_alloc = memory_region_sizes[mem_type][0];
-    config_mem.sys_mem_alloc = static_cast<u32_le>(memory_regions[1].size);
-    config_mem.base_mem_alloc = static_cast<u32_le>(memory_regions[2].size);
 }
 
 void MemoryShutdown() {
diff --git a/src/core/hle/kernel/wait_object.cpp b/src/core/hle/kernel/wait_object.cpp
index e279c5df90..23af346d0c 100644
--- a/src/core/hle/kernel/wait_object.cpp
+++ b/src/core/hle/kernel/wait_object.cpp
@@ -5,7 +5,6 @@
 #include <algorithm>
 #include "common/assert.h"
 #include "common/logging/log.h"
-#include "core/hle/config_mem.h"
 #include "core/hle/kernel/errors.h"
 #include "core/hle/kernel/kernel.h"
 #include "core/hle/kernel/memory.h"