diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/service/mm/mm_u.cpp | 83 | ||||
| -rw-r--r-- | src/core/hle/service/mm/mm_u.h | 15 | ||||
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/elf.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/loader.cpp | 6 | ||||
| -rw-r--r-- | src/core/loader/loader.h | 7 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 1 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 1 | 
9 files changed, 57 insertions, 65 deletions
| diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index b24f409b3..6be5c474e 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -250,8 +250,11 @@ static ResultCode ArbitrateUnlock(VAddr mutex_addr) {  }  /// Break program execution -static void Break(u64 unk_0, u64 unk_1, u64 unk_2) { -    LOG_CRITICAL(Debug_Emulated, "Emulated program broke execution!"); +static void Break(u64 reason, u64 info1, u64 info2) { +    LOG_CRITICAL( +        Debug_Emulated, +        "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", +        reason, info1, info2);      ASSERT(false);  } diff --git a/src/core/hle/service/mm/mm_u.cpp b/src/core/hle/service/mm/mm_u.cpp index 08f45b78a..7b91bb258 100644 --- a/src/core/hle/service/mm/mm_u.cpp +++ b/src/core/hle/service/mm/mm_u.cpp @@ -9,42 +9,63 @@  namespace Service::MM { -void InstallInterfaces(SM::ServiceManager& service_manager) { -    std::make_shared<MM_U>()->InstallAsService(service_manager); -} +class MM_U final : public ServiceFramework<MM_U> { +public: +    explicit MM_U() : ServiceFramework{"mm:u"} { +        // clang-format off +        static const FunctionInfo functions[] = { +            {0, &MM_U::Initialize, "InitializeOld"}, +            {1, &MM_U::Finalize, "FinalizeOld"}, +            {2, &MM_U::SetAndWait, "SetAndWaitOld"}, +            {3, &MM_U::Get, "GetOld"}, +            {4, &MM_U::Initialize, "Initialize"}, +            {5, &MM_U::Finalize, "Finalize"}, +            {6, &MM_U::SetAndWait, "SetAndWait"}, +            {7, &MM_U::Get, "Get"}, +        }; +        // clang-format on -void MM_U::Initialize(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_MM, "(STUBBED) called"); -    IPC::ResponseBuilder rb{ctx, 2}; -    rb.Push(RESULT_SUCCESS); -} +        RegisterHandlers(functions); +    } -void MM_U::SetAndWait(Kernel::HLERequestContext& ctx) { -    IPC::RequestParser rp{ctx}; -    min = rp.Pop<u32>(); -    max = rp.Pop<u32>(); -    current = min; +private: +    void Initialize(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_MM, "(STUBBED) called"); +        IPC::ResponseBuilder rb{ctx, 2}; +        rb.Push(RESULT_SUCCESS); +    } -    LOG_WARNING(Service_MM, "(STUBBED) called, min=0x{:X}, max=0x{:X}", min, max); -    IPC::ResponseBuilder rb{ctx, 2}; -    rb.Push(RESULT_SUCCESS); -} +    void Finalize(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_MM, "(STUBBED) called"); +        IPC::ResponseBuilder rb{ctx, 2}; +        rb.Push(RESULT_SUCCESS); +    } -void MM_U::Get(Kernel::HLERequestContext& ctx) { -    LOG_WARNING(Service_MM, "(STUBBED) called"); -    IPC::ResponseBuilder rb{ctx, 3}; -    rb.Push(RESULT_SUCCESS); -    rb.Push(current); -} +    void SetAndWait(Kernel::HLERequestContext& ctx) { +        IPC::RequestParser rp{ctx}; +        min = rp.Pop<u32>(); +        max = rp.Pop<u32>(); +        current = min; -MM_U::MM_U() : ServiceFramework("mm:u") { -    static const FunctionInfo functions[] = { -        {0, nullptr, "InitializeOld"},        {1, nullptr, "FinalizeOld"}, -        {2, nullptr, "SetAndWaitOld"},        {3, nullptr, "GetOld"}, -        {4, &MM_U::Initialize, "Initialize"}, {5, nullptr, "Finalize"}, -        {6, &MM_U::SetAndWait, "SetAndWait"}, {7, &MM_U::Get, "Get"}, -    }; -    RegisterHandlers(functions); +        LOG_WARNING(Service_MM, "(STUBBED) called, min=0x{:X}, max=0x{:X}", min, max); +        IPC::ResponseBuilder rb{ctx, 2}; +        rb.Push(RESULT_SUCCESS); +    } + +    void Get(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_MM, "(STUBBED) called"); +        IPC::ResponseBuilder rb{ctx, 3}; +        rb.Push(RESULT_SUCCESS); +        rb.Push(current); +    } + +    u32 min{0}; +    u32 max{0}; +    u32 current{0}; +}; + +void InstallInterfaces(SM::ServiceManager& service_manager) { +    std::make_shared<MM_U>()->InstallAsService(service_manager);  }  } // namespace Service::MM diff --git a/src/core/hle/service/mm/mm_u.h b/src/core/hle/service/mm/mm_u.h index 79eeedf9c..5439fa653 100644 --- a/src/core/hle/service/mm/mm_u.h +++ b/src/core/hle/service/mm/mm_u.h @@ -8,21 +8,6 @@  namespace Service::MM { -class MM_U final : public ServiceFramework<MM_U> { -public: -    MM_U(); -    ~MM_U() = default; - -private: -    void Initialize(Kernel::HLERequestContext& ctx); -    void SetAndWait(Kernel::HLERequestContext& ctx); -    void Get(Kernel::HLERequestContext& ctx); - -    u32 min{0}; -    u32 max{0}; -    u32 current{0}; -}; -  /// Registers all MM services with the specified service manager.  void InstallInterfaces(SM::ServiceManager& service_manager); diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index de05f21d8..d575a9bea 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp @@ -118,7 +118,6 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load(      process->program_id = metadata.GetTitleID();      process->svc_access_mask.set(); -    process->address_mappings = default_address_mappings;      process->resource_limit =          Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(Memory::PROCESS_IMAGE_VADDR, metadata.GetMainThreadPriority(), diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 401cad3ab..6420a7f11 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp @@ -398,7 +398,6 @@ ResultStatus AppLoader_ELF::Load(Kernel::SharedPtr<Kernel::Process>& process) {      process->LoadModule(codeset, codeset->entrypoint);      process->svc_access_mask.set(); -    process->address_mappings = default_address_mappings;      // Attach the default resource limit (APPLICATION) to the process      process->resource_limit = diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index 1f2f31535..b143f043c 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp @@ -17,12 +17,6 @@  namespace Loader { -const std::initializer_list<Kernel::AddressMapping> default_address_mappings = { -    {0x1FF50000, 0x8000, true},    // part of DSP RAM -    {0x1FF70000, 0x8000, true},    // part of DSP RAM -    {0x1F000000, 0x600000, false}, // entire VRAM -}; -  FileType IdentifyFile(FileSys::VirtualFile file) {      FileType type; diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 285363549..6dffe451a 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -5,7 +5,6 @@  #pragma once  #include <algorithm> -#include <initializer_list>  #include <memory>  #include <string>  #include <utility> @@ -208,12 +207,6 @@ protected:  };  /** - * Common address mappings found in most games, used for binary formats that don't have this - * information. - */ -extern const std::initializer_list<Kernel::AddressMapping> default_address_mappings; - -/**   * Identifies a bootable file and return a suitable loader   * @param file The bootable file   * @return the best loader for this file diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 908d91eab..2179cf2ea 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp @@ -186,7 +186,6 @@ ResultStatus AppLoader_NRO::Load(Kernel::SharedPtr<Kernel::Process>& process) {      }      process->svc_access_mask.set(); -    process->address_mappings = default_address_mappings;      process->resource_limit =          Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(base_addr, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE); diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index fee7d58c6..a94558ac5 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp @@ -152,7 +152,6 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr<Kernel::Process>& process) {      LOG_DEBUG(Loader, "loaded module {} @ 0x{:X}", file->GetName(), Memory::PROCESS_IMAGE_VADDR);      process->svc_access_mask.set(); -    process->address_mappings = default_address_mappings;      process->resource_limit =          Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);      process->Run(Memory::PROCESS_IMAGE_VADDR, THREADPRIO_DEFAULT, Memory::DEFAULT_STACK_SIZE); | 
