diff options
| author | mostobriv <mostobriv@gmail.com> | 2025-08-27 13:42:40 +0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2025-09-11 22:08:34 -0700 |
| commit | 4c1c8712f0e0a700fc7af5cf06f3425826ba9a2f (patch) | |
| tree | ab28739afd5e484bfaa8fd9faf7b83641c3ffb9a /arch | |
| parent | 5f21429815bfa13bc167aff4a9785424675b82b6 (diff) | |
Add Apple arm64 syscall calling convention to Apple's platforms
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm64/arch_arm64.cpp | 9 |
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); |
