Set a particular field in a Register
(regs: &mut [u32; TPM_CRB_R_MAX], reg: CrbRegister, value: u32)
| 203 | |
| 204 | // Set a particular field in a Register |
| 205 | fn set_reg_field(regs: &mut [u32; TPM_CRB_R_MAX], reg: CrbRegister, value: u32) { |
| 206 | let (base, offset, len) = get_field(reg); |
| 207 | let mask = (!(0_u32) >> (32 - len)) << offset; |
| 208 | regs[base as usize] = (regs[base as usize] & !mask) | ((value << offset) & mask); |
| 209 | } |
| 210 | |
| 211 | // Get the value of a particular field in a Register |
| 212 | const fn get_reg_field(regs: &[u32; TPM_CRB_R_MAX], reg: CrbRegister) -> u32 { |