summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2017-07-13 12:40:58 -0700
committerEric Anholt <[email protected]>2017-07-25 14:55:12 -0700
commit82fdc106066002c5ed3a96a6aee01a8dc43dd7a5 (patch)
treeedeeeb2211983c4710d15f9f618b7f5131a74efb
parent53492917e2153e9f5eb503792c2793a8e4cba391 (diff)
broadcom/genxml: Support address fields with <32 bits
I was writing the XML such that the address field overlapped various flags in the alignment bits, which caused pain when trying to unpack for decode. Instead, keep the XML matching the docs (address fields don't overlap), and just infer the appropriate shift value during decode. During pack, the address is just applied to the appropriate bits already, ignoring the sub-byte start/end fields.
-rw-r--r--src/broadcom/cle/v3d_decoder.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/broadcom/cle/v3d_decoder.c b/src/broadcom/cle/v3d_decoder.c
index 66f74af306f..ac33d87191c 100644
--- a/src/broadcom/cle/v3d_decoder.c
+++ b/src/broadcom/cle/v3d_decoder.c
@@ -792,7 +792,7 @@ v3d_field_iterator_next(struct v3d_field_iterator *iter)
case V3D_TYPE_ADDRESS:
case V3D_TYPE_OFFSET:
snprintf(iter->value, sizeof(iter->value), "0x%08"PRIx64,
- __gen_unpack_uint(iter->p, s, e));
+ __gen_unpack_uint(iter->p, s, e) << (31 - (e - s)));
break;
case V3D_TYPE_STRUCT:
snprintf(iter->value, sizeof(iter->value), "<struct %s>",