diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/nest/p9_adu_access.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/nest/p9_adu_access.C | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_adu_access.C b/src/import/chips/p9/procedures/hwp/nest/p9_adu_access.C index f7d41003..fe148b06 100644 --- a/src/import/chips/p9/procedures/hwp/nest/p9_adu_access.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_adu_access.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -67,6 +67,15 @@ extern "C" { // Process input flag p9_ADU_oper_flag l_myAduFlag; l_myAduFlag.getFlag(i_flags); + FAPI_DBG("l_myAduFlag = %lu", l_myAduFlag); + + //If autoinc is set and this is not a DMA operation unset autoinc before passing the flags through + if (l_myAduFlag.getOperationType() != p9_ADU_oper_flag::DMA_PARTIAL) + { + l_myAduFlag.setAutoIncrement(false); + } + + FAPI_DBG("l_myAduFlag = %lu", l_myAduFlag); if( i_lastGranule && l_myAduFlag.getAutoIncrement() ) { @@ -100,9 +109,12 @@ extern "C" { l_busyHandling = EXPECTED_BUSY_BIT_CLEAR; } - FAPI_TRY(p9_adu_coherent_status_check(i_target, l_busyHandling, false, - l_busyBitStatus), - "Error from p9_adu_coherent_status_check"); + if (l_myAduFlag.getOperationType() != p9_ADU_oper_flag::CACHE_INHIBIT) + { + FAPI_TRY(p9_adu_coherent_status_check(i_target, l_busyHandling, false, + l_busyBitStatus), + "Error from p9_adu_coherent_status_check"); + } //If it's the last read/write if (i_lastGranule) @@ -127,4 +139,3 @@ extern "C" { } } // extern "C" - |