On 2016-05-07 21:23:36, Abner Chang wrote: > From: AbnerChang <[email protected]> >
git config settings. :) > The implementation of RISC-V DxeIpl. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Abner Chang<[email protected]> space before < > --- > MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 6 +- > MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c | 79 > ++++++++++++++++++++++ Is it Riscv64 or RiscV64? Like MdePkg, I think MdeModulePkg only supports achitectures in the UEFI spec. -Jordan > 2 files changed, 84 insertions(+), 1 deletion(-) > create mode 100644 MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > > diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > index 04ad928..13c0852 100644 > --- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > +++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > @@ -6,6 +6,7 @@ > # needed to run the DXE Foundation. > # > # Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR> > +# Copyright (c) 2016, Hewlett Packard Enterprise Development LP. All rights > reserved.<BR> > # 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 > @@ -29,7 +30,7 @@ > # > # The following information is for reference only and not required by the > build tools. > # > -# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for build only) > AARCH64 > +# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for build only) > AARCH64 RISCV64 > # > > [Sources] > @@ -57,6 +58,9 @@ > [Sources.ARM, Sources.AARCH64] > Arm/DxeLoadFunc.c > > +[Sources.RISCV64] > + Riscv64/DxeLoadFunc.c > + > [Packages] > MdePkg/MdePkg.dec > MdeModulePkg/MdeModulePkg.dec > diff --git a/MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > b/MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > new file mode 100644 > index 0000000..6b42e44 > --- /dev/null > +++ b/MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > @@ -0,0 +1,79 @@ > +/** @file > + RISC-V specific functionality for DxeLoad. > + > + Copyright (c) 2016, Hewlett Packard Enterprise Development LP. All rights > reserved.<BR> > + > + 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. > +**/ > + > +#include "DxeIpl.h" > + > +typedef > +VOID* > +(EFIAPI *DXEENTRYPOINT) ( > + IN VOID *HobStart > + ); > + > +/** > + Transfers control to DxeCore. > + > + This function performs a CPU architecture specific operations to execute > + the entry point of DxeCore with the parameters of HobList. > + It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase. > + > + @param DxeCoreEntryPoint The entry point of DxeCore. > + @param HobList The start of HobList passed to DxeCore. > + > +**/ > +VOID > +HandOffToDxeCore ( > + IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint, > + IN EFI_PEI_HOB_POINTERS HobList > + ) > +{ > + VOID *BaseOfStack; > + VOID *TopOfStack; > + EFI_STATUS Status; > + // > + // > + // Allocate 128KB for the Stack > + // > + BaseOfStack = AllocatePages (EFI_SIZE_TO_PAGES (STACK_SIZE)); > + ASSERT (BaseOfStack != NULL); > + > + // > + // Compute the top of the stack we were allocated. Pre-allocate a UINTN > + // for safety. > + // > + TopOfStack = (VOID *) ((UINTN) BaseOfStack + EFI_SIZE_TO_PAGES > (STACK_SIZE) * EFI_PAGE_SIZE - CPU_STACK_ALIGNMENT); > + TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); > + > + // > + // End of PEI phase signal > + // > + Status = PeiServicesInstallPpi (&gEndOfPeiSignalPpi); > + ASSERT_EFI_ERROR (Status); > + > + // > + // Update the contents of BSP stack HOB to reflect the real stack info > passed to DxeCore. > + // > + UpdateStackHob ((EFI_PHYSICAL_ADDRESS)(UINTN) BaseOfStack, STACK_SIZE); > + > + DEBUG ((EFI_D_INFO, "DXE Core new stack at %x, stack pointer at %x\n", > BaseOfStack, TopOfStack)); > + > + // > + // Transfer the control to the entry point of DxeCore. > + // > + SwitchStack ( > + (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint, > + HobList.Raw, > + NULL, > + TopOfStack > + ); > +} > -- > 1.9.5.msysgit.0 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

