mirror of
https://github.com/opnsense/src.git
synced 2026-04-20 21:59:20 -04:00
arm64: Fix a use of update_lower_register
In get_kernel_reg_masked we use update_lower_register to get the lower value of two registers for a given field. It will return the entire register value with just the single field updated. Because of this get_kernel_reg_masked needs to use the returned value directly rather than ORing each field together. Fix this by updating the mask and returning that from get_kernel_reg_masked. Reviewed by: markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D40846
This commit is contained in:
parent
3743f3d020
commit
6b1f532951
1 changed files with 2 additions and 2 deletions
|
|
@ -1821,12 +1821,12 @@ get_kernel_reg_masked(u_int reg, uint64_t *valp, uint64_t mask)
|
|||
for (int i = 0; i < nitems(user_regs); i++) {
|
||||
if (user_regs[i].reg == reg) {
|
||||
val = CPU_DESC_FIELD(kern_cpu_desc, i);
|
||||
*valp = 0;
|
||||
fields = user_regs[i].fields;
|
||||
for (int j = 0; fields[j].type != 0; j++) {
|
||||
*valp |= update_lower_register(mask, val,
|
||||
mask = update_lower_register(mask, val,
|
||||
fields[j].shift, 4, fields[j].sign);
|
||||
}
|
||||
*valp = mask;
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue