Skip to content

Commit a8c9d9c

Browse files
authored
Merge pull request #1771 from rtwfroody/match_mask
Fix mcontrol6 mask low/high operations.
2 parents f09b024 + 1a15805 commit a8c9d9c

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

riscv/triggers.cc

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,13 +195,17 @@ bool mcontrol_common_t::simple_match(unsigned xlen, reg_t value) const {
195195
return value < tdata2;
196196
case MATCH_MASK_LOW:
197197
{
198-
reg_t mask = tdata2 >> (xlen/2);
199-
return (value & mask) == (tdata2 & mask);
198+
reg_t tdata2_high = tdata2 >> (xlen/2);
199+
reg_t tdata2_low = tdata2 & ((reg_t(1) << (xlen/2)) - 1);
200+
reg_t value_low = value & ((reg_t(1) << (xlen/2)) - 1);
201+
return (value_low & tdata2_high) == tdata2_low;
200202
}
201203
case MATCH_MASK_HIGH:
202204
{
203-
reg_t mask = tdata2 >> (xlen/2);
204-
return ((value >> (xlen/2)) & mask) == (tdata2 & mask);
205+
reg_t tdata2_high = tdata2 >> (xlen/2);
206+
reg_t tdata2_low = tdata2 & ((reg_t(1) << (xlen/2)) - 1);
207+
reg_t value_high = value >> (xlen/2);
208+
return (value_high & tdata2_high) == tdata2_low;
205209
}
206210
}
207211
assert(0);

0 commit comments

Comments
 (0)