Skip to content

Commit fbec7fe

Browse files
Merge pull request #4749 from corob-msft/learn/corob/OS-42954479
Update ARM64 docs for alloc_m opcode per OS bug 42954479
2 parents 6316b8c + b344c37 commit fbec7fe

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

docs/build/arm64-exception-handling.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "ARM64 exception handling"
33
description: Describes the exception handling conventions and data used by windows on ARM64.
4-
ms.date: 10/10/2022
4+
ms.date: 01/13/2023
55
---
66
# ARM64 exception handling
77

@@ -281,15 +281,15 @@ If exceptions were guaranteed to only ever occur within a function body, and nev
281281

282282
- By counting the number of instructions before the end of the prolog, it's possible to skip the equivalent number of unwind codes. We can execute the rest of the sequence to undo only those parts of the prolog that have completed execution.
283283

284-
The unwind codes are encoded according to the table below. All unwind codes are a single/double byte, except the one that allocates a huge stack. There are 22 unwind codes in total. Each unwind code maps exactly one instruction in the prolog/epilog, to allow for unwinding of partially executed prologs and epilogs.
284+
The unwind codes are encoded according to the table below. All unwind codes are a single/double byte, except the one that allocates a huge stack (`alloc_l`). There are 22 unwind codes in total. Each unwind code maps exactly one instruction in the prolog/epilog, to allow for unwinding of partially executed prologs and epilogs.
285285

286286
| Unwind code | Bits and interpretation |
287287
|--|--|
288288
| `alloc_s` | 000xxxxx: allocate small stack with size \< 512 (2^5 * 16). |
289289
| `save_r19r20_x` | 001zzzzz: save `<x19,x20>` pair at `[sp-#Z*8]!`, pre-indexed offset >= -248 |
290290
| `save_fplr` | 01zzzzzz: save `<x29,lr>` pair at `[sp+#Z*8]`, offset \<= 504. |
291291
| `save_fplr_x` | 10zzzzzz: save `<x29,lr>` pair at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
292-
| `alloc_m` | 11000xxx'xxxxxxxx: allocate large stack with size \< 16k (2^11 * 16). |
292+
| `alloc_m` | 11000xxx'xxxxxxxx: allocate large stack with size \< 32K (2^11 * 16). |
293293
| `save_regp` | 110010xx'xxzzzzzz: save `x(19+#X)` pair at `[sp+#Z*8]`, offset \<= 504 |
294294
| `save_regp_x` | 110011xx'xxzzzzzz: save pair `x(19+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
295295
| `save_reg` | 110100xx'xxzzzzzz: save reg `x(19+#X)` at `[sp+#Z*8]`, offset \<= 504 |

0 commit comments

Comments
 (0)