On 6/18/26 07:48, Jim MacArthur wrote:
On Wed, Jun 10, 2026 at 09:41:56AM -0700, Richard Henderson wrote:
On 6/3/26 11:26, Jim MacArthur wrote:
+ const uint64_t BW_STRIDE_SHIFT = 40;
...
+ switch (bw_stride_field) {
+ case 0b00000:
+ case 0b00010:
+ case 0b00100:
+ case 0b00110:
+ case 0b00111:
+ case 0b01000:
+ case 0b01001:
+ case 0b01010:
+ case 0b10000:
+ bw_stride = 1ULL << (bw_stride_field + BW_STRIDE_SHIFT);
BW_STRIDE_SHIFT should be 39 not 40.
Everything else is correct.
Agree with the simplification, but BW_STRIDE_SHIFT should be 40. As per D24.2.54, a
BWSTRIDE field of 0 gives a stride size of 1TB or 1<<40 bytes.
(gpcbwu, the highest bit set in the mask, is indeed 39+BWSTRIDE, but the
subtraction of bw_size from bw_stride has the same effect.)
There was an error in a later use of bw_stride which might have made it look
like something else was intended.
Ah yes. Thanks for double checking.
r~