| .. | .. | 
|---|
 | 1 | +// SPDX-License-Identifier: GPL-2.0-only  | 
|---|
| 1 | 2 |  /* tnum: tracked (or tristate) numbers | 
|---|
| 2 | 3 |   * | 
|---|
| 3 | 4 |   * A tnum tracks knowledge about the bits of a value.  Each bit can be either | 
|---|
| .. | .. | 
|---|
| 193 | 194 |  	str[min(size - 1, (size_t)64)] = 0; | 
|---|
| 194 | 195 |  	return 64; | 
|---|
| 195 | 196 |  } | 
|---|
 | 197 | +  | 
|---|
 | 198 | +struct tnum tnum_subreg(struct tnum a)  | 
|---|
 | 199 | +{  | 
|---|
 | 200 | +	return tnum_cast(a, 4);  | 
|---|
 | 201 | +}  | 
|---|
 | 202 | +  | 
|---|
 | 203 | +struct tnum tnum_clear_subreg(struct tnum a)  | 
|---|
 | 204 | +{  | 
|---|
 | 205 | +	return tnum_lshift(tnum_rshift(a, 32), 32);  | 
|---|
 | 206 | +}  | 
|---|
 | 207 | +  | 
|---|
 | 208 | +struct tnum tnum_const_subreg(struct tnum a, u32 value)  | 
|---|
 | 209 | +{  | 
|---|
 | 210 | +	return tnum_or(tnum_clear_subreg(a), tnum_const(value));  | 
|---|
 | 211 | +}  | 
|---|