$NetBSD: patch-Source_JavaScriptCore_runtime_MachineContext.h,v 1.4 2022/06/08 20:56:50 leot Exp $ Add support for NetBSD. Shared and applied upstream via . --- Source/JavaScriptCore/runtime/MachineContext.h.orig 2021-05-05 05:33:24.000000000 +0000 +++ Source/JavaScriptCore/runtime/MachineContext.h @@ -196,6 +196,22 @@ static inline void*& stackPointerImpl(mc #error Unknown Architecture #endif +#elif OS(NETBSD) + +#if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_UESP]); +#elif CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_RSP]); +#elif CPU(ARM) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_SP]); +#elif CPU(ARM64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_SP]); +#elif CPU(MIPS) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_SP]); +#else +#error Unknown Architecture +#endif + #elif OS(FUCHSIA) || OS(LINUX) #if CPU(X86) @@ -347,6 +363,22 @@ static inline void*& framePointerImpl(mc #error Unknown Architecture #endif +#elif OS(NETBSD) + +#if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_EBP]); +#elif CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_RBP]); +#elif CPU(ARM) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_FP]); +#elif CPU(ARM64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_FP]); +#elif CPU(MIPS) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_S8]); +#else +#error Unknown Architecture +#endif + #elif OS(FUCHSIA) || OS(LINUX) // The following sequence depends on glibc's sys/ucontext.h. @@ -497,6 +529,22 @@ static inline void*& instructionPointerI #else #error Unknown Architecture #endif + +#elif OS(NETBSD) + +#if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_EIP]); +#elif CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_RIP]); +#elif CPU(ARM) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_PC]); +#elif CPU(ARM64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_PC]); +#elif CPU(MIPS) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_EPC]); +#else +#error Unknown Architecture +#endif #elif OS(FUCHSIA) || OS(LINUX) @@ -655,6 +703,22 @@ inline void*& argumentPointer<1>(mcontex #else #error Unknown Architecture #endif + +#elif OS(NETBSD) + +#if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_EDX]); +#elif CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_RSI]); +#elif CPU(ARM) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_R1]); +#elif CPU(ARM64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_X1]); +#elif CPU(MIPS) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_A1]); +#else +#error Unknown Architecture +#endif #elif OS(FUCHSIA) || OS(LINUX) @@ -772,6 +836,22 @@ inline void*& llintInstructionPointer(mc #else #error Unknown Architecture #endif + +#elif OS(NETBSD) + +#if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_ESI]); +#elif CPU(X86_64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_R8]); +#elif CPU(ARM) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_R8]); +#elif CPU(ARM64) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_X4]); +#elif CPU(MIPS) + return reinterpret_cast((uintptr_t&) machineContext.__gregs[_REG_T4]); +#else +#error Unknown Architecture +#endif #elif OS(FUCHSIA) || OS(LINUX)