On Thu, 27 Jul 2023 at 19:56, Richard Henderson <richard.hender...@linaro.org> wrote: > > On 7/26/23 08:01, Richard Henderson wrote: > > On 7/26/23 01:17, Ard Biesheuvel wrote: > >> Hints welcome on where the architectural behavior is specified, and in > >> particular, > >> whether or not other 64-bit GPRs can be relied upon to preserve their full > >> 64-bit > >> length values. > > > > No idea about chapter and verse, but it has the feel of being part and > > parcel with the > > truncation of eip. While esp is always special, I suspect that none of the > > GPRs can be > > relied on carrying all bits. > > Coincidentally, I was having a gander at the newly announced APX extension > [1], > and happened across > > 3.1.4.1.2 Extended GPR Access (Direct and Indirect) > > ... Entering/leaving 64-bit mode via traditional (explicit) > control flow does not directly alter the content of the EGPRs > (EGPRs behave similar to R8-R15 in this regard). > > which suggests to me that the 8 low registers are squashed to 32-bit > on transition to 32-bit IA-32e mode. > > I still have not found similar language in the main architecture manual. >
Interesting - that matches my observations on those Ice Lake cores: RSP will be truncated, but preserving/restoring it to/from R8 across the exit from long mode works fine.