target/arm: Use bit 55 explicitly for pauth

The psuedocode in aarch64/functions/pac/auth/Auth and
aarch64/functions/pac/strip/Strip always uses bit 55 for
extfield and do not consider if the current regime has 2 ranges.

Backports commit 7eeb4c2ce8dc0a5655526f3f39bd5d6cc02efb39 from qemu
This commit is contained in:
Richard Henderson 2020-03-21 17:59:05 -04:00 committed by Lioncash
parent 51b6064ba4
commit 3183349f1c

View file

@ -320,7 +320,8 @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_t ptr, uint64_t modifier,
static uint64_t pauth_original_ptr(uint64_t ptr, ARMVAParameters param) static uint64_t pauth_original_ptr(uint64_t ptr, ARMVAParameters param)
{ {
uint64_t extfield = -param.select; /* Note that bit 55 is used whether or not the regime has 2 ranges. */
uint64_t extfield = sextract64(ptr, 55, 1);
int bot_pac_bit = 64 - param.tsz; int bot_pac_bit = 64 - param.tsz;
int top_pac_bit = 64 - 8 * param.tbi; int top_pac_bit = 64 - 8 * param.tbi;