1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-25 12:12:50 +01:00

Fix aarch64 compilation on macOS

This commit is contained in:
kd-11 2024-08-23 02:02:36 +03:00 committed by kd-11
parent f5173ca9bf
commit 94b6e4598c

View File

@ -22,6 +22,7 @@ namespace aarch64
breakpoint = 60, // BRK breakpoint = 60, // BRK
}; };
#ifdef __linux__
const aarch64_esr_ctx* find_EL1_esr_context(const ucontext_t* ctx) const aarch64_esr_ctx* find_EL1_esr_context(const ucontext_t* ctx)
{ {
u32 offset = 0; u32 offset = 0;
@ -47,16 +48,29 @@ namespace aarch64
return nullptr; return nullptr;
} }
fault_reason decode_fault_reason(const ucontext_t* uctx) u64 _read_ESR_EL1(const ucontext_t* uctx)
{ {
auto esr_ctx = find_EL1_esr_context(uctx); auto esr_ctx = find_EL1_esr_context(uctx);
if (!esr_ctx) return esr_ctx ? esr_ctx->esr : 0;
}
#else
u64 _read_ESR_EL1(const ucontext_t* uctx)
{
// Unimplemented
return 0;
}
#endif
fault_reason decode_fault_reason(const ucontext_t* uctx)
{
auto esr = _read_ESR_EL1(uctx);
if (!esr)
{ {
return fault_reason::undefined; return fault_reason::undefined;
} }
// We don't really care about most of the register fields, but we can check for a few things. // We don't really care about most of the register fields, but we can check for a few things.
const auto exception_class = (esr_ctx->esr >> 26) & 0b111111; const auto exception_class = (esr >> 26) & 0b111111;
switch (static_cast<EL1_exception_class>(exception_class)) switch (static_cast<EL1_exception_class>(exception_class))
{ {
case EL1_exception_class::breakpoint: case EL1_exception_class::breakpoint:
@ -78,7 +92,7 @@ namespace aarch64
} }
// Check direction bit // Check direction bit
const auto direction = (esr_ctx->esr >> 6u) & 1u; const auto direction = (esr >> 6u) & 1u;
return direction ? fault_reason::data_write : fault_reason::data_read; return direction ? fault_reason::data_write : fault_reason::data_read;
} }
} }