mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-11 22:32:29 +00:00
merge
This commit is contained in:
@@ -7,7 +7,7 @@ index 0129511c..10fc9b04 100644
|
|||||||
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
||||||
|
|
||||||
+// hacky fix for ps4
|
+// hacky fix for ps4
|
||||||
+#if defined(_LIBCPP_HAS_MUSL_LIBC)
|
+#if defined(__OPENORBIS__)
|
||||||
+# define FIONBIO 0
|
+# define FIONBIO 0
|
||||||
+# define FIONREAD 1
|
+# define FIONREAD 1
|
||||||
+#endif
|
+#endif
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ index 6669216..86a2faa 100644
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
-#if !defined(HAS_SOCKLEN_T) && !defined(__socklen_t_defined)
|
-#if !defined(HAS_SOCKLEN_T) && !defined(__socklen_t_defined)
|
||||||
+#if !defined(_LIBCPP_HAS_MUSL_LIBC) && !defined(HAS_SOCKLEN_T) && !defined(__socklen_t_defined)
|
+#if !defined(__OPENORBIS__) && !defined(HAS_SOCKLEN_T) && !defined(__socklen_t_defined)
|
||||||
typedef int socklen_t;
|
typedef int socklen_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ index 754c984c79..59e27afd3e 100644
|
|||||||
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
||||||
* or `clang -maes -mpclmul`). */
|
* or `clang -maes -mpclmul`). */
|
||||||
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
||||||
+#if (defined(__GNUC__) || defined(__clang__)) && !defined(_LIBCPP_HAS_MUSL_LIBC)
|
+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__OPENORBIS__)
|
||||||
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
||||||
#endif
|
#endif
|
||||||
/* For 32-bit, we only support intrinsics */
|
/* For 32-bit, we only support intrinsics */
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
// clang-format on
|
// clang-format on
|
||||||
#else
|
#else
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#if defined(__APPLE__) || (defined(__FreeBSD__) && !defined(_LIBCPP_HAS_MUSL_LIBC))
|
#if defined(__APPLE__) || (defined(__FreeBSD__) && !defined(__OPENORBIS__))
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
#include <sys/sysinfo.h>
|
#include <sys/sysinfo.h>
|
||||||
@@ -43,7 +43,7 @@ static MemoryInfo Detect() {
|
|||||||
sysctlbyname("vm.swapusage", &vmusage, &sizeof_vmusage, nullptr, 0);
|
sysctlbyname("vm.swapusage", &vmusage, &sizeof_vmusage, nullptr, 0);
|
||||||
mem_info.TotalPhysicalMemory = ramsize;
|
mem_info.TotalPhysicalMemory = ramsize;
|
||||||
mem_info.TotalSwapMemory = vmusage.xsu_total;
|
mem_info.TotalSwapMemory = vmusage.xsu_total;
|
||||||
#elif defined(__FreeBSD__) && !defined(_LIBCPP_HAS_MUSL_LIBC)
|
#elif defined(__FreeBSD__) && !defined(__OPENORBIS__)
|
||||||
u_long physmem, swap_total;
|
u_long physmem, swap_total;
|
||||||
std::size_t sizeof_u_long = sizeof(u_long);
|
std::size_t sizeof_u_long = sizeof(u_long);
|
||||||
// sysctlbyname(const char *, void *, size_t *, const void *, size_t);
|
// sysctlbyname(const char *, void *, size_t *, const void *, size_t);
|
||||||
|
|||||||
@@ -66,12 +66,16 @@ public:
|
|||||||
auto const stack_size = std::max<size_t>(SIGSTKSZ, 2 * 1024 * 1024);
|
auto const stack_size = std::max<size_t>(SIGSTKSZ, 2 * 1024 * 1024);
|
||||||
signal_stack_memory = std::make_unique<uint8_t[]>(stack_size);
|
signal_stack_memory = std::make_unique<uint8_t[]>(stack_size);
|
||||||
|
|
||||||
|
#ifdef __OPENORBIS__
|
||||||
|
fmt::print(stderr, "no fastmem on ps4\n");
|
||||||
|
supports_fast_mem = false;
|
||||||
|
#else
|
||||||
stack_t signal_stack{};
|
stack_t signal_stack{};
|
||||||
signal_stack.ss_sp = signal_stack_memory.get();
|
signal_stack.ss_sp = signal_stack_memory.get();
|
||||||
signal_stack.ss_size = stack_size;
|
signal_stack.ss_size = stack_size;
|
||||||
signal_stack.ss_flags = 0;
|
signal_stack.ss_flags = 0;
|
||||||
if (sigaltstack(&signal_stack, nullptr) != 0) {
|
if (sigaltstack(&signal_stack, nullptr) != 0) {
|
||||||
fmt::print(stderr, "dynarmic: POSIX SigHandler: init failure at sigaltstack\n");
|
fmt::print(stderr, "POSIX SigHandler: init failure at sigaltstack\n");
|
||||||
supports_fast_mem = false;
|
supports_fast_mem = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -82,16 +86,17 @@ public:
|
|||||||
sa.sa_flags = SA_SIGINFO | SA_ONSTACK | SA_RESTART;
|
sa.sa_flags = SA_SIGINFO | SA_ONSTACK | SA_RESTART;
|
||||||
sigemptyset(&sa.sa_mask);
|
sigemptyset(&sa.sa_mask);
|
||||||
if (sigaction(SIGSEGV, &sa, &old_sa_segv) != 0) {
|
if (sigaction(SIGSEGV, &sa, &old_sa_segv) != 0) {
|
||||||
fmt::print(stderr, "dynarmic: POSIX SigHandler: could not set SIGSEGV handler\n");
|
fmt::print(stderr, "POSIX SigHandler: could not set SIGSEGV handler\n");
|
||||||
supports_fast_mem = false;
|
supports_fast_mem = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
if (sigaction(SIGBUS, &sa, &old_sa_bus) != 0) {
|
if (sigaction(SIGBUS, &sa, &old_sa_bus) != 0) {
|
||||||
fmt::print(stderr, "dynarmic: POSIX SigHandler: could not set SIGBUS handler\n");
|
fmt::print(stderr, "POSIX SigHandler: could not set SIGBUS handler\n");
|
||||||
supports_fast_mem = false;
|
supports_fast_mem = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,6 +150,9 @@ void SigHandler::SigAction(int sig, siginfo_t* info, void* raw_context) {
|
|||||||
}
|
}
|
||||||
LOG_ERROR(Core, "Unhandled {} at {:#018x}\n", sig == SIGSEGV ? "SIGSEGV" : "SIGBUS", CTX_PC);
|
LOG_ERROR(Core, "Unhandled {} at {:#018x}\n", sig == SIGSEGV ? "SIGSEGV" : "SIGBUS", CTX_PC);
|
||||||
|
|
||||||
|
#ifdef __OPENORBIS__
|
||||||
|
// No fastmem
|
||||||
|
#else
|
||||||
struct sigaction* retry_sa = sig == SIGSEGV ? &sig_handler->old_sa_segv : &sig_handler->old_sa_bus;
|
struct sigaction* retry_sa = sig == SIGSEGV ? &sig_handler->old_sa_segv : &sig_handler->old_sa_bus;
|
||||||
if (retry_sa->sa_flags & SA_SIGINFO) {
|
if (retry_sa->sa_flags & SA_SIGINFO) {
|
||||||
retry_sa->sa_sigaction(sig, info, raw_context);
|
retry_sa->sa_sigaction(sig, info, raw_context);
|
||||||
@@ -158,6 +166,7 @@ void SigHandler::SigAction(int sig, siginfo_t* info, void* raw_context) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
retry_sa->sa_handler(sig);
|
retry_sa->sa_handler(sig);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
# define CTX_Q(i) (fpctx->vregs[i])
|
# define CTX_Q(i) (fpctx->vregs[i])
|
||||||
# define CTX_FPSR (fpctx->fpsr)
|
# define CTX_FPSR (fpctx->fpsr)
|
||||||
# define CTX_FPCR (fpctx->fpcr)
|
# define CTX_FPCR (fpctx->fpcr)
|
||||||
# elif defined(__FreeBSD__)
|
# elif defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
# define CTX_PC (mctx.mc_gpregs.gp_elr)
|
# define CTX_PC (mctx.mc_gpregs.gp_elr)
|
||||||
# define CTX_SP (mctx.mc_gpregs.gp_sp)
|
# define CTX_SP (mctx.mc_gpregs.gp_sp)
|
||||||
# define CTX_LR (mctx.mc_gpregs.gp_lr)
|
# define CTX_LR (mctx.mc_gpregs.gp_lr)
|
||||||
@@ -131,6 +131,9 @@
|
|||||||
# elif defined(__managarm__)
|
# elif defined(__managarm__)
|
||||||
# define CTX_PC (mctx.__pollution(gregs)[REG_RIP])
|
# define CTX_PC (mctx.__pollution(gregs)[REG_RIP])
|
||||||
# define CTX_SP (mctx.__pollution(gregs)[REG_RSP])
|
# define CTX_SP (mctx.__pollution(gregs)[REG_RSP])
|
||||||
|
# elif defined(__OPENORBIS__)
|
||||||
|
# define CTX_RIP (mctx.gregs[REG_RIP])
|
||||||
|
# define CTX_RSP (mctx.gregs[REG_RSP])
|
||||||
# else
|
# else
|
||||||
# error "unknown platform"
|
# error "unknown platform"
|
||||||
# endif
|
# endif
|
||||||
|
|||||||
Reference in New Issue
Block a user