git: 14006c96214a - main - arm64: Fix the MRS_EXACT_IF_DIFFERENT check
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 12 Dec 2024 18:18:58 UTC
The branch main has been updated by andrew:
URL: https://cgit.FreeBSD.org/src/commit/?id=14006c96214a772ba2e2f07bb4301657d8c2055a
commit 14006c96214a772ba2e2f07bb4301657d8c2055a
Author: Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2024-12-11 17:54:37 +0000
Commit: Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2024-12-12 18:00:22 +0000
arm64: Fix the MRS_EXACT_IF_DIFFERENT check
When comparing two ID registers to create a common userspace view we
have an option where we set an exact value only if the two are
different. This is only used in one field in the cache type register
that is accessible by userspace without being trapped by the kernel.
In preparation for trapping access to this register to handle it in
the kernel in some situations fix the 'if different' check.
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D47811
---
sys/arm64/arm64/identcpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c
index 95e7669d053e..646d10d5ae1a 100644
--- a/sys/arm64/arm64/identcpu.c
+++ b/sys/arm64/arm64/identcpu.c
@@ -2261,7 +2261,7 @@ update_special_reg_field(uint64_t user_reg, u_int type, uint64_t value,
switch (type & MRS_TYPE_MASK) {
case MRS_EXACT_IF_DIFFERENT:
- if (mrs_field_cmp(new_val, cur, shift, width, sign) != 0)
+ if (mrs_field_cmp(new_val, cur, shift, width, sign) == 0)
break;
/* FALLTHROUGH */
case MRS_EXACT: