Add definitions to work around type assumptions: on OpenBSD intptr_t is a long
and int64_t is a long long.

Index: Source/JavaScriptCore/assembler/RISCV64Assembler.h
--- Source/JavaScriptCore/assembler/RISCV64Assembler.h.orig
+++ Source/JavaScriptCore/assembler/RISCV64Assembler.h
@@ -188,7 +188,7 @@ struct ImmediateBase {
     }
 
     template<typename T>
-        requires (std::same_as<T, int32_t> || std::same_as<T, int64_t>)
+        requires (std::same_as<T, int32_t> || std::same_as<T, int64_t> || std::same_as<T, intptr_t>)
     static bool isValid(T immValue)
     {
         constexpr unsigned shift = sizeof(T) * 8 - immediateSize;
@@ -212,6 +212,14 @@ struct ImmediateBase {
     }
 
     template<typename ImmediateType>
+    static ImmediateType v(intptr_t immValue)
+    {
+        ASSERT(isValid(immValue));
+        intptr_t value = *reinterpret_cast<intptr_t*>(&immValue);
+        return ImmediateType(uint32_t(value & immediateMask<intptr_t>()));
+    }
+
+    template<typename ImmediateType>
     static ImmediateType v(int64_t immValue)
     {
         ASSERT(isValid(immValue));
@@ -314,7 +322,7 @@ struct JImmediate : ImmediateBase<21> {
 
 struct ImmediateDecomposition {
     template<typename T>
-        requires (std::same_as<T, int32_t> || std::same_as<T, int64_t>)
+        requires (std::same_as<T, int32_t> || std::same_as<T, int64_t> || std::same_as<T, intptr_t>)
     explicit ImmediateDecomposition(T immediate)
         : upper(UImmediate(0))
         , lower(IImmediate(0))
@@ -2192,7 +2200,15 @@ class RISCV64Assembler { (public)
             : ImmediateLoader(int64_t(imm))
         { }
 
+        ImmediateLoader(intptr_t imm)
+            : ImmediateLoader(int64_t(imm))
+        { }
+
         ImmediateLoader(PlaceholderTag, int32_t imm)
+            : ImmediateLoader(Placeholder, int64_t(imm))
+        { }
+
+        ImmediateLoader(PlaceholderTag, intptr_t imm)
             : ImmediateLoader(Placeholder, int64_t(imm))
         { }
 
