diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/lib/p9_sbe_ppe_ffdc.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/lib/p9_sbe_ppe_ffdc.C | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_sbe_ppe_ffdc.C b/src/import/chips/p9/procedures/hwp/lib/p9_sbe_ppe_ffdc.C index a7d11700..517e78f7 100644 --- a/src/import/chips/p9/procedures/hwp/lib/p9_sbe_ppe_ffdc.C +++ b/src/import/chips/p9/procedures/hwp/lib/p9_sbe_ppe_ffdc.C @@ -170,19 +170,21 @@ p9_sbe_ppe_ffdc ( if (l_rc == fapi2::FAPI2_RC_SUCCESS) { - if (i % 2) + if (i & 0x01) { - // pack into bits 0-31 of ithe ffdc vector element + // Odd Index + // pack into bits 32-63 of the ffdc vector element o_v_ppe_reg_ffdc[l_sprFfdcIdx] = - (o_v_ppe_reg_ffdc[l_sprFfdcIdx] & 0x00000000FFFFFFFFULL) | - ((uint64_t) l_data32() << 32); + (o_v_ppe_reg_ffdc[l_sprFfdcIdx] & 0xFFFFFFFF00000000ULL) | + (l_data32()); } else { - // pack into bits 32-63 of the ffdc vector element + // Even Index + // pack into bits 0-31 of ithe ffdc vector element o_v_ppe_reg_ffdc[l_sprFfdcIdx] = - (o_v_ppe_reg_ffdc[l_sprFfdcIdx] & 0xFFFFFFFF00000000ULL) | - (l_data32()); + (o_v_ppe_reg_ffdc[l_sprFfdcIdx] & 0x00000000FFFFFFFFULL) | + ((uint64_t) l_data32() << 32); } } else |