Browse Source

fix alloc failures

eden-orbis-ps4
lizzie 8 months ago
parent
commit
1019bed75b
  1. 4
      src/core/arm/dynarmic/arm_dynarmic_32.cpp
  2. 4
      src/core/arm/dynarmic/arm_dynarmic_64.cpp
  3. 6
      src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.h
  4. 5
      src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.h

4
src/core/arm/dynarmic/arm_dynarmic_32.cpp

@ -206,7 +206,9 @@ void ArmDynarmic32::MakeJit(Common::PageTable* page_table) {
config.enable_cycle_counting = !m_uses_wall_clock; config.enable_cycle_counting = !m_uses_wall_clock;
// Code cache size // Code cache size
#if defined(ARCHITECTURE_arm64) || defined(__sun__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
#if defined(__OPENORBIS__)
config.code_cache_size = std::uint32_t(32_MiB);
#elif defined(ARCHITECTURE_arm64) || defined(__sun__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
config.code_cache_size = std::uint32_t(128_MiB); config.code_cache_size = std::uint32_t(128_MiB);
#else #else
config.code_cache_size = std::uint32_t(512_MiB); config.code_cache_size = std::uint32_t(512_MiB);

4
src/core/arm/dynarmic/arm_dynarmic_64.cpp

@ -258,7 +258,9 @@ void ArmDynarmic64::MakeJit(Common::PageTable* page_table, std::size_t address_s
config.enable_cycle_counting = !m_uses_wall_clock; config.enable_cycle_counting = !m_uses_wall_clock;
// Code cache size // Code cache size
#if defined(ARCHITECTURE_arm64) || defined(__sun__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
#if defined(__OPENORBIS__)
config.code_cache_size = std::uint32_t(32_MiB);
#elif defined(ARCHITECTURE_arm64) || defined(__sun__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
config.code_cache_size = std::uint32_t(128_MiB); config.code_cache_size = std::uint32_t(128_MiB);
#else #else
config.code_cache_size = std::uint32_t(512_MiB); config.code_cache_size = std::uint32_t(512_MiB);

6
src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.h

@ -67,8 +67,14 @@ public:
const void* code_ptr = nullptr; const void* code_ptr = nullptr;
}; };
static_assert(sizeof(FastDispatchEntry) == 0x10); static_assert(sizeof(FastDispatchEntry) == 0x10);
#ifdef __OPENORBIS__
static constexpr u64 fast_dispatch_table_mask = 0xFF0;
static constexpr size_t fast_dispatch_table_size = 0x100;
#else
static constexpr u64 fast_dispatch_table_mask = 0xFFFF0; static constexpr u64 fast_dispatch_table_mask = 0xFFFF0;
static constexpr size_t fast_dispatch_table_size = 0x10000; static constexpr size_t fast_dispatch_table_size = 0x10000;
#endif
void ClearFastDispatchTable(); void ClearFastDispatchTable();
void GenFastmemFallbacks(); void GenFastmemFallbacks();
void GenTerminalHandlers(); void GenTerminalHandlers();

5
src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.h

@ -60,8 +60,13 @@ public:
const void* code_ptr = nullptr; const void* code_ptr = nullptr;
}; };
static_assert(sizeof(FastDispatchEntry) == 0x10); static_assert(sizeof(FastDispatchEntry) == 0x10);
#ifdef __OPENORBIS__
static constexpr u64 fast_dispatch_table_mask = 0xFF0;
static constexpr size_t fast_dispatch_table_size = 0x100;
#else
static constexpr u64 fast_dispatch_table_mask = 0xFFFFF0; static constexpr u64 fast_dispatch_table_mask = 0xFFFFF0;
static constexpr size_t fast_dispatch_table_size = 0x100000; static constexpr size_t fast_dispatch_table_size = 0x100000;
#endif
void ClearFastDispatchTable(); void ClearFastDispatchTable();
void GenMemory128Accessors(); void GenMemory128Accessors();

Loading…
Cancel
Save