You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| x18 |Non-volatile|Platform register: in kernel mode, points to KPCR for the current processor; in user mode, points to TEB |
74
+
| x18 |N/A|Reserved platform register: in kernel mode, points to KPCR for the current processor; In user mode, points to TEB |
76
75
| x19-x28 | Non-volatile | Scratch registers |
77
76
| x29/fp | Non-volatile | Frame pointer |
78
-
| x30/lr |Non-volatile| Link registers|
77
+
| x30/lr |Both| Link Register: Callee function must preserve it for its own return, but caller's value will be lost.|
79
78
80
79
Each register may be accessed as a full 64-bit value (via x0-x30) or as a 32-bit value (via w0-w30). 32-bit operations zero-extend their results up to 64 bits.
81
80
@@ -89,18 +88,17 @@ The frame pointer (x29) is required for compatibility with fast stack walking us
89
88
90
89
The AArch64 architecture also supports 32 floating-point/SIMD registers, summarized below:
| v8-v15 | Both | Low 64 bits are Non-Volatile. High 64 bits are Volatile. |
97
95
| v16-v31 | Volatile | Scratch registers |
98
96
99
97
Each register may be accessed as a full 128-bit value (via v0-v31 or q0-q31). It may be accessed as a 64-bit value (via d0-d31), as a 32-bit value (via s0-s31), as a 16-bit value (via h0-h31), or as an 8-bit value (via b0-b31). Accesses smaller than 128 bits only access the lower bits of the full 128-bit register. They leave the remaining bits untouched unless otherwise specified. (AArch64 is different from AArch32, where the smaller registers were packed on top of the larger registers.)
100
98
101
99
The floating-point control register (FPCR) has certain requirements on the various bitfields within it:
0 commit comments