diff options
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 18 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 6 | 
2 files changed, 24 insertions, 0 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index d840d44e6..5984afd7e 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -140,6 +140,7 @@ struct KernelCore::Impl {          CleanupObject(font_shared_mem);          CleanupObject(irs_shared_mem);          CleanupObject(time_shared_mem); +        CleanupObject(hidbus_shared_mem);          CleanupObject(system_resource_limit);          for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { @@ -622,16 +623,20 @@ struct KernelCore::Impl {          constexpr std::size_t font_size{0x1100000};          constexpr std::size_t irs_size{0x8000};          constexpr std::size_t time_size{0x1000}; +        constexpr std::size_t hidbus_size{0x1000};          const PAddr hid_phys_addr{system_pool.GetAddress()};          const PAddr font_phys_addr{system_pool.GetAddress() + hid_size};          const PAddr irs_phys_addr{system_pool.GetAddress() + hid_size + font_size};          const PAddr time_phys_addr{system_pool.GetAddress() + hid_size + font_size + irs_size}; +        const PAddr hidbus_phys_addr{system_pool.GetAddress() + hid_size + font_size + irs_size + +                                     time_size};          hid_shared_mem = KSharedMemory::Create(system.Kernel());          font_shared_mem = KSharedMemory::Create(system.Kernel());          irs_shared_mem = KSharedMemory::Create(system.Kernel());          time_shared_mem = KSharedMemory::Create(system.Kernel()); +        hidbus_shared_mem = KSharedMemory::Create(system.Kernel());          hid_shared_mem->Initialize(system.DeviceMemory(), nullptr,                                     {hid_phys_addr, hid_size / PageSize}, @@ -649,6 +654,10 @@ struct KernelCore::Impl {                                      {time_phys_addr, time_size / PageSize},                                      Svc::MemoryPermission::None, Svc::MemoryPermission::Read,                                      time_phys_addr, time_size, "Time:SharedMemory"); +        hidbus_shared_mem->Initialize(system.DeviceMemory(), nullptr, +                                      {hidbus_phys_addr, hidbus_size / PageSize}, +                                      Svc::MemoryPermission::None, Svc::MemoryPermission::Read, +                                      hidbus_phys_addr, hidbus_size, "HidBus:SharedMemory");      }      KClientPort* CreateNamedServicePort(std::string name) { @@ -748,6 +757,7 @@ struct KernelCore::Impl {      Kernel::KSharedMemory* font_shared_mem{};      Kernel::KSharedMemory* irs_shared_mem{};      Kernel::KSharedMemory* time_shared_mem{}; +    Kernel::KSharedMemory* hidbus_shared_mem{};      // Memory layout      std::unique_ptr<KMemoryLayout> memory_layout; @@ -1047,6 +1057,14 @@ const Kernel::KSharedMemory& KernelCore::GetTimeSharedMem() const {      return *impl->time_shared_mem;  } +Kernel::KSharedMemory& KernelCore::GetHidBusSharedMem() { +    return *impl->hidbus_shared_mem; +} + +const Kernel::KSharedMemory& KernelCore::GetHidBusSharedMem() const { +    return *impl->hidbus_shared_mem; +} +  void KernelCore::Suspend(bool in_suspention) {      const bool should_suspend = exception_exited || in_suspention;      { diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index d709c368b..12e44b8a5 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h @@ -264,6 +264,12 @@ public:      /// Gets the shared memory object for Time services.      const Kernel::KSharedMemory& GetTimeSharedMem() const; +    /// Gets the shared memory object for HIDBus services. +    Kernel::KSharedMemory& GetHidBusSharedMem(); + +    /// Gets the shared memory object for HIDBus services. +    const Kernel::KSharedMemory& GetHidBusSharedMem() const; +      /// Suspend/unsuspend the OS.      void Suspend(bool in_suspention);  | 
