17947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney/** @file 27947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneySemaphore mechanism to indicate to the BSP that an AP has exited SMM 37947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinneyafter SMBASE relocation. 47947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 57947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneyCopyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR> 67947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneyThis program and the accompanying materials 77947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinneyare licensed and made available under the terms and conditions of the BSD License 87947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinneywhich accompanies this distribution. The full text of the license may be found at 97947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinneyhttp://opensource.org/licenses/bsd-license.php 107947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 117947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneyTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 127947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneyWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 137947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 147947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney**/ 157947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 167947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney#include "PiSmmCpuDxeSmm.h" 177947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 187947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneyUINTN mSmmRelocationOriginalAddress; 197947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinneyvolatile BOOLEAN *mRebasedFlag; 207947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 217947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney/** 227947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney Hook return address of SMM Save State so that semaphore code 237947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney can be executed immediately after AP exits SMM to indicate to 247947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney the BSP that an AP has exited SMM after SMBASE relocation. 257947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 267947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney @param[in] CpuIndex The processor index. 277947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney @param[in] RebasedFlag A pointer to a flag that is set to TRUE 287947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney immediately after AP exits SMM. 297947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 307947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney**/ 317947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneyVOID 327947da3cccb5dfc973fe9ad9d814477ed978aea1Michael KinneySemaphoreHook ( 337947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney IN UINTN CpuIndex, 347947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney IN volatile BOOLEAN *RebasedFlag 357947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney ) 367947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney{ 377947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney SMRAM_SAVE_STATE_MAP *CpuState; 387947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 397947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney mRebasedFlag = RebasedFlag; 407947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney 417947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney CpuState = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET); 427947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney mSmmRelocationOriginalAddress = (UINTN)HookReturnFromSmm ( 437947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney CpuIndex, 447947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney CpuState, 457947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney (UINT64)(UINTN)&SmmRelocationSemaphoreComplete, 467947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney (UINT64)(UINTN)&SmmRelocationSemaphoreComplete 477947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney ); 487947da3cccb5dfc973fe9ad9d814477ed978aea1Michael Kinney} 49