Skip to content
Snippets Groups Projects
Unverified Commit 74ca6191 authored by Alexander Kaznacheev's avatar Alexander Kaznacheev Committed by Zubin
Browse files

ncg/aarch64: Don't use x18 register on AArch64/Darwin

Apple's ABI documentation [1] says: "The platforms reserve register x18.
Don’t use this register." While this wasn't problematic in previous
Darwin releases, macOS 13 appears to start zeroing this register
periodically. See #21964.

[1] https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms

(cherry picked from commit 67575f20)
parent 784324bc
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,8 @@ Compiler
- Fix a code generation panic when using SIMD types with unboxed sums (:ghc-ticket:`22187`).
- Fix a code generation bug with the native code generator on aarch64 darwin leading to runtime segmentation faults due to an incorrect ABI (:ghc-ticket:`21964`)
Runtime system
--------------
......
......@@ -1028,6 +1028,14 @@ freeReg 29 = False
-- ip0 -- used for spill offset computations
freeReg 16 = False
#if defined(darwin_HOST_OS) || defined(ios_HOST_OS)
-- x18 is reserved by the platform on Darwin/iOS, and can not be used
-- More about ARM64 ABI that Apple platforms support:
-- https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms
-- https://github.com/Siguza/ios-resources/blob/master/bits/arm64.md
freeReg 18 = False
#endif
# if defined(REG_Base)
freeReg REG_Base = False
# endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment