PrePeiCore.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /** @file
  2. Main file supporting the transition to PEI Core in Normal World for Versatile Express
  3. Copyright (c) 2011 - 2022, ARM Limited. All rights reserved.
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #ifndef __PREPEICORE_H_
  7. #define __PREPEICORE_H_
  8. #include <Library/ArmLib.h>
  9. #include <Library/ArmPlatformLib.h>
  10. #include <Library/BaseMemoryLib.h>
  11. #include <Library/DebugLib.h>
  12. #include <Library/IoLib.h>
  13. #include <Library/PcdLib.h>
  14. #include <PiPei.h>
  15. #include <Ppi/TemporaryRamSupport.h>
  16. VOID
  17. CreatePpiList (
  18. OUT UINTN *PpiListSize,
  19. OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
  20. );
  21. EFI_STATUS
  22. EFIAPI
  23. PrePeiCoreTemporaryRamSupport (
  24. IN CONST EFI_PEI_SERVICES **PeiServices,
  25. IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,
  26. IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,
  27. IN UINTN CopySize
  28. );
  29. VOID
  30. SecSwitchStack (
  31. INTN StackDelta
  32. );
  33. // Vector Table for Pei Phase
  34. VOID
  35. PeiVectorTable (
  36. VOID
  37. );
  38. VOID
  39. EFIAPI
  40. PrimaryMain (
  41. IN EFI_PEI_CORE_ENTRY_POINT PeiCoreEntryPoint
  42. );
  43. /*
  44. * This is the main function for secondary cores. They loop around until a non Null value is written to
  45. * SYS_FLAGS register.The SYS_FLAGS register is platform specific.
  46. * Note:The secondary cores, while executing secondary_main, assumes that:
  47. * : SGI 0 is configured as Non-secure interrupt
  48. * : Priority Mask is configured to allow SGI 0
  49. * : Interrupt Distributor and CPU interfaces are enabled
  50. *
  51. */
  52. VOID
  53. EFIAPI
  54. SecondaryMain (
  55. IN UINTN MpId
  56. );
  57. VOID
  58. PeiCommonExceptionEntry (
  59. IN UINT32 Entry,
  60. IN UINTN LR
  61. );
  62. /*
  63. * Autogenerated function that calls the library constructors for all of the
  64. * module's dependent libraries.
  65. */
  66. VOID
  67. EFIAPI
  68. ProcessLibraryConstructorList (
  69. VOID
  70. );
  71. #endif