diff options
Diffstat (limited to 'src/import/chips/p9/procedures/utils')
-rwxr-xr-x | src/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C | 10 | ||||
-rwxr-xr-x | src/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H | 5 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C b/src/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C index 66fd00afc..2842ece06 100755 --- a/src/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C +++ b/src/import/chips/p9/procedures/utils/stopreg/p9_stop_api.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -526,7 +526,8 @@ StopReturnCode_t p9_stop_save_cpureg( void* const i_pImage, &(chipHomer->coreThreadRestore[coreId][threadId].coreArea[0]); } - if( SWIZZLE_4_BYTE(ATTN_OPCODE) == *(uint32_t*)pThreadLocation ) + if( ( SWIZZLE_4_BYTE(BLR_INST) == *(uint32_t*)pThreadLocation ) || + ( SWIZZLE_4_BYTE(ATTN_OPCODE) == *(uint32_t*) pThreadLocation ) ) { // table for given core id doesn't exit. It needs to be // defined. @@ -864,6 +865,7 @@ StopReturnCode_t p9_stop_save_scom( void* const i_pImage, uint32_t swizzleAttn = SWIZZLE_4_BYTE(ATTN_OPCODE); uint32_t swizzleEntry = SWIZZLE_4_BYTE(SCOM_ENTRY_START); uint32_t index = 0; + uint32_t swizzleBlr = SWIZZLE_4_BYTE(BLR_INST); for( index = 0; index < entryLimit; ++index ) { @@ -876,8 +878,8 @@ StopReturnCode_t p9_stop_save_scom( void* const i_pImage, } if( (( nopInst == entrySwzAddress ) || - ( swizzleAttn == entrySwzAddress )) && - ( !pNopLocation ) ) + ( swizzleAttn == entrySwzAddress ) || + ( swizzleBlr == entrySwzAddress )) && ( !pNopLocation ) ) { pNopLocation = &pScomEntry[index]; } diff --git a/src/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H b/src/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H index 08a974ae7..e9cfa29a7 100755 --- a/src/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H +++ b/src/import/chips/p9/procedures/utils/stopreg/p9_stop_data_struct.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -64,8 +64,7 @@ typedef struct */ typedef struct { - uint8_t threadArea[THREAD_SECTN_SIZE]; - uint8_t reserve[THREAD_AREA_SIZE - THREAD_SECTN_SIZE]; + uint8_t threadArea[THREAD_AREA_SIZE]; uint8_t coreArea[CORE_SPR_SECTN_SIZE]; } SprRestoreArea_t; |