From 2008082e6fd69ec30ec3e2220f6ca28dd3aa73ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 28 Nov 2025 21:10:35 +0200 Subject: [PATCH] Clarify docs for arm64 packed unwind, RegI=0 RegF>0 The condition CR=0 isn't correct here; the same about the first store for float registers doing the predecrement for any variant where there are no integer registers stored before the floats - this goes for both CR=0, CR=2 and CR=3. --- docs/build/arm64-exception-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index d459965ede..6c82d44da4 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -401,7 +401,7 @@ Step 6: Allocate remaining stack, including local area, `` pair, and out \* If **CR** == 01 and **RegI** is an odd number, step 3 and the last `save_reg` in step 2 are merged into one `save_regp`. -\*\* If **RegI** == **CR** == 0, and **RegF** != 0, the first `stp` for the floating-point does the predecrement. +\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement. \*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data can't be used if a function requires restoration of `sp` from `x29`.