summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authormostobriv <mostobriv@gmail.com>2025-08-27 13:42:40 +0700
committerMark Rowe <mark@vector35.com>2025-09-11 22:08:34 -0700
commit4c1c8712f0e0a700fc7af5cf06f3425826ba9a2f (patch)
treeab28739afd5e484bfaa8fd9faf7b83641c3ffb9a /arch
parent5f21429815bfa13bc167aff4a9785424675b82b6 (diff)
Add Apple arm64 syscall calling convention to Apple's platforms
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/arch_arm64.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/arm64/arch_arm64.cpp b/arch/arm64/arch_arm64.cpp
index 7ca02a7e..5faf37e5 100644
--- a/arch/arm64/arch_arm64.cpp
+++ b/arch/arm64/arch_arm64.cpp
@@ -2692,15 +2692,15 @@ class WindowsArm64SystemCallConvention : public CallingConvention
virtual bool IsEligibleForHeuristics() override { return false; }
};
-class MacosArm64SystemCallConvention : public CallingConvention
+class AppleArm64SystemCallConvention : public CallingConvention
{
public:
- MacosArm64SystemCallConvention(Architecture* arch) : CallingConvention(arch, "macos-syscall") {}
+ AppleArm64SystemCallConvention(Architecture* arch) : CallingConvention(arch, "apple-syscall") {}
virtual vector<uint32_t> GetIntegerArgumentRegisters() override
{
- return vector<uint32_t> {REG_X16, REG_X0, REG_X1, REG_X2, REG_X3, REG_X4, REG_X5};
+ return vector<uint32_t> {REG_X16, REG_X0, REG_X1, REG_X2, REG_X3, REG_X4, REG_X5, REG_X6, REG_X7, REG_X8};
}
@@ -3500,6 +3500,9 @@ extern "C"
conv = new WindowsArm64SystemCallConvention(arm64);
arm64->RegisterCallingConvention(conv);
+ conv = new AppleArm64SystemCallConvention(arm64);
+ arm64->RegisterCallingConvention(conv);
+
conv = new AppleArm64CallingConvention(arm64);
arm64->RegisterCallingConvention(conv);