mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
1. Added Non-existing.c in BaseLib to assert no invocations of SwitchStack() on IPF.
2. Added SwitchIplStacks() function to DxeIplPeim to encapsulate arch details on stack switching. 3. Added PeiSwitchStacks() function to PeiMain to encapsulate arch details on stack switching. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1328 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ce3b85747a
commit
eeb1cd5af3
@ -1,13 +1,13 @@
|
|||||||
/*++
|
/*++
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
Copyright (c) 2006, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
http://opensource.org/licenses/bsd-license.php
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
@ -25,15 +25,37 @@ Abstract:
|
|||||||
|
|
||||||
extern BOOLEAN gInMemory;
|
extern BOOLEAN gInMemory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's
|
||||||
|
Reserved on other architectures.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
|
EFIAPI
|
||||||
SwitchIplStacks (
|
SwitchIplStacks (
|
||||||
VOID *EntryPoint,
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
UINTN Parameter1,
|
IN VOID *Context1, OPTIONAL
|
||||||
UINTN Parameter2,
|
IN VOID *Context2, OPTIONAL
|
||||||
VOID *NewStack,
|
IN VOID *NewStack,
|
||||||
VOID *NewBsp
|
IN VOID *NewBsp
|
||||||
)
|
);
|
||||||
;
|
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
PeiFindFile (
|
PeiFindFile (
|
||||||
@ -133,7 +155,7 @@ CreateIdentityMappingPageTables (
|
|||||||
|
|
||||||
VOID
|
VOID
|
||||||
ActivateLongMode (
|
ActivateLongMode (
|
||||||
IN EFI_PHYSICAL_ADDRESS PageTables,
|
IN EFI_PHYSICAL_ADDRESS PageTables,
|
||||||
IN EFI_PHYSICAL_ADDRESS HobStart,
|
IN EFI_PHYSICAL_ADDRESS HobStart,
|
||||||
IN EFI_PHYSICAL_ADDRESS Stack,
|
IN EFI_PHYSICAL_ADDRESS Stack,
|
||||||
IN EFI_PHYSICAL_ADDRESS CodeEntryPoint1,
|
IN EFI_PHYSICAL_ADDRESS CodeEntryPoint1,
|
||||||
|
@ -130,7 +130,7 @@ Returns:
|
|||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status) && (BootMode != BOOT_ON_S3_RESUME)) {
|
if (EFI_ERROR (Status) && (BootMode != BOOT_ON_S3_RESUME)) {
|
||||||
//
|
//
|
||||||
// The DxeIpl has not yet been shadowed
|
// The DxeIpl has not yet been shadowed
|
||||||
//
|
//
|
||||||
@ -396,11 +396,12 @@ Returns:
|
|||||||
);
|
);
|
||||||
|
|
||||||
DEBUG ((EFI_D_INFO, "DXE Core Entry\n"));
|
DEBUG ((EFI_D_INFO, "DXE Core Entry\n"));
|
||||||
SwitchStack (
|
SwitchIplStacks (
|
||||||
(SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,
|
(SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,
|
||||||
HobList.Raw,
|
HobList.Raw,
|
||||||
(VOID *) (UINTN) BspStore,
|
NULL,
|
||||||
TopOfStack
|
TopOfStack,
|
||||||
|
(VOID *) (UINTN) BspStore
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -757,7 +758,7 @@ Returns:
|
|||||||
EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
|
EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
|
||||||
EFI_COMPRESSION_SECTION *CompressionSection;
|
EFI_COMPRESSION_SECTION *CompressionSection;
|
||||||
EFI_FFS_FILE_HEADER *FfsFileHeader;
|
EFI_FFS_FILE_HEADER *FfsFileHeader;
|
||||||
|
|
||||||
FfsFileHeader = *RealFfsFileHeader;
|
FfsFileHeader = *RealFfsFileHeader;
|
||||||
|
|
||||||
Status = PeiServicesFfsFindSectionData (
|
Status = PeiServicesFfsFindSectionData (
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
/*++
|
/*++
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
Copyright (c) 2006, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
http://opensource.org/licenses/bsd-license.php
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
@ -49,3 +49,38 @@ Returns:
|
|||||||
*BspStore = 0;
|
*BspStore = 0;
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's
|
||||||
|
Reserved on other architectures.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
SwitchIplStacks (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack,
|
||||||
|
IN VOID *NewBsp
|
||||||
|
)
|
||||||
|
{
|
||||||
|
SwitchStack (EntryPoint, Context1, Context2, NewStack);
|
||||||
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
/*++
|
/*++
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
Copyright (c) 2006, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
http://opensource.org/licenses/bsd-license.php
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
@ -48,8 +48,8 @@ Returns:
|
|||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
|
|
||||||
ASSERT (NULL != BspStore);
|
ASSERT (NULL != BspStore);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -68,3 +68,44 @@ Returns:
|
|||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's
|
||||||
|
Reserved on other architectures.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
SwitchIplStacks (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack,
|
||||||
|
IN VOID *NewBsp
|
||||||
|
)
|
||||||
|
{
|
||||||
|
AsmSwitchStackAndBackingStore (
|
||||||
|
EntryPoint,
|
||||||
|
Context1,
|
||||||
|
Context2,
|
||||||
|
NewStack,
|
||||||
|
NewBsp
|
||||||
|
);
|
||||||
|
}
|
||||||
|
@ -208,12 +208,13 @@ Returns:
|
|||||||
//in order to provide buffer protection against possible illegal stack
|
//in order to provide buffer protection against possible illegal stack
|
||||||
//access that might corrupt the stack.
|
//access that might corrupt the stack.
|
||||||
//
|
//
|
||||||
SwitchStack (
|
PeiSwitchStacks (
|
||||||
(SWITCH_STACK_ENTRY_POINT)(UINTN)TempPtr.Raw,
|
(SWITCH_STACK_ENTRY_POINT)(UINTN)TempPtr.Raw,
|
||||||
PeiStartupDescriptor,
|
PeiStartupDescriptor,
|
||||||
(VOID*)PrivateDataInMem,
|
(VOID*)PrivateDataInMem,
|
||||||
(VOID*)((UINTN)PrivateData->StackBase + (UINTN)PrivateData->StackSize)
|
(VOID*)((UINTN)PrivateData->StackBase + (UINTN)PrivateData->StackSize),
|
||||||
);
|
(VOID*)(UINTN)PrivateData->StackBase
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -345,7 +346,7 @@ Returns:
|
|||||||
DebugFoundPeimPoint++;
|
DebugFoundPeimPoint++;
|
||||||
DebugNotDispatchedBitmap >>= 1;
|
DebugNotDispatchedBitmap >>= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_CODE_END ();
|
DEBUG_CODE_END ();
|
||||||
|
|
||||||
return EFI_NOT_FOUND;
|
return EFI_NOT_FOUND;
|
||||||
|
50
EdkModulePkg/Core/Pei/Dispatcher/Stack.c
Normal file
50
EdkModulePkg/Core/Pei/Dispatcher/Stack.c
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/** @file
|
||||||
|
PeiSwitchStacks() function for PEI dispatcher.
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation<BR>
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
Module Name: String.c
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's
|
||||||
|
Reserved on other architectures.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
PeiSwitchStacks (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack,
|
||||||
|
IN VOID *NewBsp
|
||||||
|
)
|
||||||
|
{
|
||||||
|
SwitchStack (EntryPoint, Context1, Context2, NewStack);
|
||||||
|
}
|
58
EdkModulePkg/Core/Pei/Ipf/Stack.c
Normal file
58
EdkModulePkg/Core/Pei/Ipf/Stack.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/** @file
|
||||||
|
PeiSwitchStacks() function for PEI dispatcher.
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation<BR>
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
Module Name: String.c
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include <PeiMain.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's
|
||||||
|
Reserved on other architectures.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
PeiSwitchStacks (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack,
|
||||||
|
IN VOID *NewBsp
|
||||||
|
)
|
||||||
|
{
|
||||||
|
AsmSwitchStackAndBackingStore (
|
||||||
|
EntryPoint,
|
||||||
|
Context1,
|
||||||
|
Context2,
|
||||||
|
NewStack,
|
||||||
|
NewBsp
|
||||||
|
);
|
||||||
|
}
|
@ -1,13 +1,13 @@
|
|||||||
/*++
|
/*++
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
Copyright (c) 2006, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
http://opensource.org/licenses/bsd-license.php
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ PeiCore (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
Main entry point to Pei Core. After switching stack in the PEI core,
|
Main entry point to Pei Core. After switching stack in the PEI core,
|
||||||
it will restart with the old core data.
|
it will restart with the old core data.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@ -180,10 +180,10 @@ Arguments:
|
|||||||
|
|
||||||
PeiServices - Calling context.
|
PeiServices - Calling context.
|
||||||
|
|
||||||
DependencyExpression - Pointer to a dependency expression. The Grammar adheres to
|
DependencyExpression - Pointer to a dependency expression. The Grammar adheres to
|
||||||
the BNF described above and is stored in postfix notation.
|
the BNF described above and is stored in postfix notation.
|
||||||
Runnable - is True if the driver can be scheduled and False if the driver
|
Runnable - is True if the driver can be scheduled and False if the driver
|
||||||
cannot be scheduled. This is the value that the schedulers
|
cannot be scheduled. This is the value that the schedulers
|
||||||
should use for deciding the state of the driver.
|
should use for deciding the state of the driver.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -222,7 +222,7 @@ Returns:
|
|||||||
|
|
||||||
EFI_SUCCESS - Successfully dispatched PEIM.
|
EFI_SUCCESS - Successfully dispatched PEIM.
|
||||||
EFI_NOT_FOUND - The dispatch failed.
|
EFI_NOT_FOUND - The dispatch failed.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ Arguments:
|
|||||||
|
|
||||||
FwVolHeader - Pointer to the FV header of the volume to search.
|
FwVolHeader - Pointer to the FV header of the volume to search.
|
||||||
This parameter must point to a valid FFS volume.
|
This parameter must point to a valid FFS volume.
|
||||||
|
|
||||||
PeimFileHeader - Pointer to the current file from which to begin searching.
|
PeimFileHeader - Pointer to the current file from which to begin searching.
|
||||||
This pointer will be updated upon return to reflect the file found.
|
This pointer will be updated upon return to reflect the file found.
|
||||||
|
|
||||||
@ -375,9 +375,9 @@ Routine Description:
|
|||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
CoreData - The PEI core Private Data
|
CoreData - The PEI core Private Data
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -432,7 +432,7 @@ Arguments:
|
|||||||
NewHandOffHob - The new handoff HOB list.
|
NewHandOffHob - The new handoff HOB list.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -518,7 +518,7 @@ Arguments:
|
|||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
Status - EFI_SUCCESS if the PPI is in the database
|
Status - EFI_SUCCESS if the PPI is in the database
|
||||||
EFI_NOT_FOUND if the PPI is not in the database
|
EFI_NOT_FOUND if the PPI is not in the database
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
@ -610,12 +610,12 @@ PeiGetBootMode (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
This service enables PEIMs to ascertain the present value of the boot mode.
|
This service enables PEIMs to ascertain the present value of the boot mode.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
PeiServices - The PEI core services table.
|
PeiServices - The PEI core services table.
|
||||||
BootMode - A pointer to contain the value of the boot mode.
|
BootMode - A pointer to contain the value of the boot mode.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
@ -635,7 +635,7 @@ PeiSetBootMode (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
This service enables PEIMs to update the boot mode variable.
|
This service enables PEIMs to update the boot mode variable.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
@ -744,7 +744,7 @@ Returns:
|
|||||||
EFI_SUCCESS - Get the pointer of HOB List
|
EFI_SUCCESS - Get the pointer of HOB List
|
||||||
EFI_NOT_AVAILABLE_YET - the HOB List is not yet published
|
EFI_NOT_AVAILABLE_YET - the HOB List is not yet published
|
||||||
EFI_INVALID_PARAMETER - HobList is NULL (in debug mode)
|
EFI_INVALID_PARAMETER - HobList is NULL (in debug mode)
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -775,7 +775,7 @@ Returns:
|
|||||||
- EFI_INVALID_PARAMETER if Hob is NULL
|
- EFI_INVALID_PARAMETER if Hob is NULL
|
||||||
- EFI_NOT_AVAILABLE_YET if HobList is still not available.
|
- EFI_NOT_AVAILABLE_YET if HobList is still not available.
|
||||||
- EFI_OUT_OF_RESOURCES if there is no more memory to grow the Hoblist.
|
- EFI_OUT_OF_RESOURCES if there is no more memory to grow the Hoblist.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -825,16 +825,16 @@ Routine Description:
|
|||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
PeiServices - Pointer to the PEI Core Services Table.
|
PeiServices - Pointer to the PEI Core Services Table.
|
||||||
|
|
||||||
SearchType - Filter to find only files of this type.
|
SearchType - Filter to find only files of this type.
|
||||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||||
|
|
||||||
FwVolHeader - Pointer to the FV header of the volume to search.
|
FwVolHeader - Pointer to the FV header of the volume to search.
|
||||||
This parameter must point to a valid FFS volume.
|
This parameter must point to a valid FFS volume.
|
||||||
|
|
||||||
FileHeader - Pointer to the current file from which to begin searching.
|
FileHeader - Pointer to the current file from which to begin searching.
|
||||||
This pointer will be updated upon return to reflect the file found.
|
This pointer will be updated upon return to reflect the file found.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||||
EFI_SUCCESS
|
EFI_SUCCESS
|
||||||
@ -895,9 +895,9 @@ Arguments:
|
|||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Pointer to the Firmware Volume instance requested
|
Pointer to the Firmware Volume instance requested
|
||||||
|
|
||||||
EFI_INVALID_PARAMETER - FwVolHeader is NULL
|
EFI_INVALID_PARAMETER - FwVolHeader is NULL
|
||||||
|
|
||||||
EFI_SUCCESS - Firmware volume instance successfully found.
|
EFI_SUCCESS - Firmware volume instance successfully found.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
@ -955,7 +955,7 @@ Arguments:
|
|||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
Status - EFI_SUCCESS
|
Status - EFI_SUCCESS
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -971,7 +971,7 @@ PeiAllocatePages (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
Memory allocation service on permanent memory,
|
Memory allocation service on permanent memory,
|
||||||
not usable prior to the memory installation.
|
not usable prior to the memory installation.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@ -1004,7 +1004,7 @@ PeiAllocatePool (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
Memory allocation service on the CAR.
|
Memory allocation service on the CAR.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
@ -1019,7 +1019,7 @@ Returns:
|
|||||||
Status - EFI_SUCCESS The allocation was successful
|
Status - EFI_SUCCESS The allocation was successful
|
||||||
EFI_OUT_OF_RESOURCES There is not enough heap to satisfy the requirement
|
EFI_OUT_OF_RESOURCES There is not enough heap to satisfy the requirement
|
||||||
to allocate the requested size.
|
to allocate the requested size.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1038,15 +1038,15 @@ Routine Description:
|
|||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
PeiServices - Calling context.
|
PeiServices - Calling context.
|
||||||
|
|
||||||
PeimFileHeader - Peim file's header.
|
PeimFileHeader - Peim file's header.
|
||||||
|
|
||||||
EntryPoint - Entry point of that Peim file.
|
EntryPoint - Entry point of that Peim file.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
Status code.
|
Status code.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1070,15 +1070,15 @@ Routine Description:
|
|||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
PeiServices - The PEI core services table.
|
PeiServices - The PEI core services table.
|
||||||
|
|
||||||
CodeType - Type of Status Code.
|
CodeType - Type of Status Code.
|
||||||
|
|
||||||
Value - Value to output for Status Code.
|
Value - Value to output for Status Code.
|
||||||
|
|
||||||
Instance - Instance Number of this status code.
|
Instance - Instance Number of this status code.
|
||||||
|
|
||||||
CallerId - ID of the caller of this status code.
|
CallerId - ID of the caller of this status code.
|
||||||
|
|
||||||
Data - Optional data associated with this status code.
|
Data - Optional data associated with this status code.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -1109,10 +1109,42 @@ Returns:
|
|||||||
|
|
||||||
Status - EFI_NOT_AVAILABLE_YET. PPI not available yet.
|
Status - EFI_NOT_AVAILABLE_YET. PPI not available yet.
|
||||||
- EFI_DEVICE_ERROR. Did not reset system.
|
- EFI_DEVICE_ERROR. Did not reset system.
|
||||||
|
|
||||||
Otherwise, resets the system.
|
Otherwise, resets the system.
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's
|
||||||
|
Reserved on other architectures.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
PeiSwitchStacks (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack,
|
||||||
|
IN VOID *NewBsp
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -71,9 +71,11 @@
|
|||||||
<Filename>Reset/Reset.c</Filename>
|
<Filename>Reset/Reset.c</Filename>
|
||||||
<Filename>Security/Security.c</Filename>
|
<Filename>Security/Security.c</Filename>
|
||||||
<Filename>StatusCode/StatusCode.c</Filename>
|
<Filename>StatusCode/StatusCode.c</Filename>
|
||||||
<Filename SupArchList="IPF">ipf/SwitchToCacheMode.c</Filename>
|
<Filename SupArchList="IPF">Ipf/SwitchToCacheMode.c</Filename>
|
||||||
<Filename SupArchList="IPF">ipf/IpfCpuCore.i</Filename>
|
<Filename SupArchList="IPF">Ipf/IpfCpuCore.i</Filename>
|
||||||
<Filename SupArchList="IPF">ipf/IpfCpuCore.s</Filename>
|
<Filename SupArchList="IPF">Ipf/IpfCpuCore.s</Filename>
|
||||||
|
<Filename SupArchList="IPF">Ipf/Stack.c</Filename>
|
||||||
|
<Filename SupArchList="IA32 X64 EBC">Dispatcher/Stack.c</Filename>
|
||||||
</SourceFiles>
|
</SourceFiles>
|
||||||
<PackageDependencies>
|
<PackageDependencies>
|
||||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||||
|
@ -410,6 +410,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
<Filename SupArchList="IPF">Ipf/CpuPause.s</Filename>
|
<Filename SupArchList="IPF">Ipf/CpuPause.s</Filename>
|
||||||
<Filename SupArchList="IPF">Ipf/CpuFlushTlb.s</Filename>
|
<Filename SupArchList="IPF">Ipf/CpuFlushTlb.s</Filename>
|
||||||
<Filename SupArchList="IPF">Ipf/GetInterruptState.s</Filename>
|
<Filename SupArchList="IPF">Ipf/GetInterruptState.s</Filename>
|
||||||
|
<Filename SupArchList="IPF">Ipf/Non-existing.c</Filename>
|
||||||
<Filename SupArchList="EBC">Math64.c</Filename>
|
<Filename SupArchList="EBC">Math64.c</Filename>
|
||||||
<Filename SupArchList="EBC">Unaligned.c</Filename>
|
<Filename SupArchList="EBC">Unaligned.c</Filename>
|
||||||
<Filename SupArchList="EBC">Ebc/SwitchStack.c</Filename>
|
<Filename SupArchList="EBC">Ebc/SwitchStack.c</Filename>
|
||||||
|
53
MdePkg/Library/BaseLib/Ipf/Non-existing.c
Normal file
53
MdePkg/Library/BaseLib/Ipf/Non-existing.c
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/** @file
|
||||||
|
Non-existing BaseLib functions on Ipf
|
||||||
|
|
||||||
|
Copyright (c) 2006, Intel Corporation
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
Module Name: Non-existing.c
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "../BaseLibInternals.h"
|
||||||
|
/**
|
||||||
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
Transfers control to the function specified by EntryPoint using the new stack
|
||||||
|
specified by NewStack and passing in the parameters specified by Context1 and
|
||||||
|
Context2. Context1 and Context2 are optional and may be NULL. The function
|
||||||
|
EntryPoint must never return.
|
||||||
|
|
||||||
|
If EntryPoint is NULL, then ASSERT().
|
||||||
|
If NewStack is NULL, then ASSERT().
|
||||||
|
|
||||||
|
@param EntryPoint A pointer to function to call with the new stack.
|
||||||
|
@param Context1 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param Context2 A pointer to the context to pass into the EntryPoint
|
||||||
|
function.
|
||||||
|
@param NewStack A pointer to the new stack to use for the EntryPoint
|
||||||
|
function.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalSwitchStack (
|
||||||
|
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
|
||||||
|
IN VOID *Context1, OPTIONAL
|
||||||
|
IN VOID *Context2, OPTIONAL
|
||||||
|
IN VOID *NewStack
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// This version of this function does not actually change the stack pointer
|
||||||
|
// This is to support compilation of CPU types that do not support assemblers
|
||||||
|
// such as EBC
|
||||||
|
//
|
||||||
|
ASSERT (FALSE);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user