summaryrefslogtreecommitdiff
path: root/src/intel/common/gen_decoder.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/common/gen_decoder.c')
-rw-r--r--src/intel/common/gen_decoder.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
index 595fa29e43d..1b8123bf394 100644
--- a/src/intel/common/gen_decoder.c
+++ b/src/intel/common/gen_decoder.c
@@ -841,7 +841,8 @@ iter_advance_field(struct gen_field_iterator *iter)
int group_member_offset = iter_group_offset_bits(iter, iter->group_iter);
- iter->bit = group_member_offset + iter->field->start;
+ iter->start_bit = group_member_offset + iter->field->start;
+ iter->end_bit = group_member_offset + iter->field->end;
iter->struct_desc = NULL;
return true;
@@ -852,10 +853,10 @@ iter_decode_field_raw(struct gen_field_iterator *iter, uint64_t *qw)
{
*qw = 0;
- int field_start = iter->p_bit + iter->bit;
- int field_end = field_start + (iter->field->end - iter->field->start);
+ int field_start = iter->p_bit + iter->start_bit;
+ int field_end = iter->p_bit + iter->end_bit;
- const uint32_t *p = iter->p + (iter->bit / 32);
+ const uint32_t *p = iter->p + (iter->start_bit / 32);
if (iter->p_end && p >= iter->p_end)
return false;
@@ -1040,7 +1041,7 @@ gen_print_group(FILE *outfile, struct gen_group *group, uint64_t offset,
gen_field_iterator_init(&iter, group, p, p_bit, color);
do {
- int iter_dword = iter.bit / 32;
+ int iter_dword = iter.end_bit / 32;
if (last_dword != iter_dword) {
for (int i = last_dword + 1; i <= iter_dword; i++)
print_dword_header(outfile, &iter, offset, i);
@@ -1051,7 +1052,7 @@ gen_print_group(FILE *outfile, struct gen_group *group, uint64_t offset,
if (iter.struct_desc) {
uint64_t struct_offset = offset + 4 * iter_dword;
gen_print_group(outfile, iter.struct_desc, struct_offset,
- &p[iter_dword], iter.bit % 32, color);
+ &p[iter_dword], iter.start_bit % 32, color);
}
}
} while (gen_field_iterator_next(&iter));