- /*
- * Start new output datum by merging with previous input datum
- * if necessary.
- *
- * Note: Before the shift, check if the shift value will be larger than
- * the integer size. If so, there is no need to perform the operation.
- * This avoids the differences in behavior between different compilers
- * concerning shift values larger than the target data width.
- */
- if ((obj_desc->common_field.access_bit_width -
- obj_desc->common_field.start_field_bit_offset) <
- ACPI_INTEGER_BIT_SIZE) {
- merged_datum =
- raw_datum >> (obj_desc->common_field.
- access_bit_width -
- obj_desc->common_field.
- start_field_bit_offset);
- } else {
- merged_datum = 0;
- }
-
- mask = width_mask;
+ field_offset += obj_desc->common_field.access_byte_width;
+ merged_datum = raw_datum >>
+ (obj_desc->common_field.access_bit_width -
+ obj_desc->common_field.start_field_bit_offset);
+ mask = ACPI_INTEGER_MAX;