From: "Leif Lindholm" <leif@nuviainc.com>
To: devel@edk2.groups.io, daniel.schaefer@hpe.com
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>,
Abner Chang <abner.chang@hpe.com>,
Gilbert Chen <gilbert.chen@hpe.com>,
Eric Jin <eric.jin@intel.com>,
G Edhaya Chandran <Edhaya.Chandran@arm.com>,
Barton Gao <gaojie@byosoft.com.cn>,
Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>
Subject: Re: [edk2-devel] [edk2-test PATCH v1 2/2] SctPkg: Enable RISCV64 support using AARCH64 sources
Date: Wed, 2 Dec 2020 12:04:36 +0000 [thread overview]
Message-ID: <20201202120436.GE1664@vanye> (raw)
In-Reply-To: <20201201161752.23734-3-daniel.schaefer@hpe.com>
On Wed, Dec 02, 2020 at 00:17:52 +0800, Daniel Schaefer wrote:
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3042
>
> TODO: Need to check whether we can avoid copying Aarch64 sources.
>
> Cc: Leif Lindholm <leif@nuviainc.com>
> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Cc: Abner Chang <abner.chang@hpe.com>
> Cc: Gilbert Chen <gilbert.chen@hpe.com>
> Cc: Eric Jin <eric.jin@intel.com>
> Cc: G Edhaya Chandran <Edhaya.Chandran@arm.com>
> Cc: Barton Gao <gaojie@byosoft.com.cn>
> Cc: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>
> Signed-off-by: Daniel Schaefer <daniel.schaefer@hpe.com>
> ---
> uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h | 32 +++
> uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c | 45 ++++
> uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S | 45 ++++
> uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c | 182 +++++++++++++
> uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c | 88 +++++++
> uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c | 68 +++++
> uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c | 134 ++++++++++
> uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h | 48 ++++
> uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestCacheFunction.c | 137 ++++++++++
> uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c | 276 ++++++++++++++++++++
> uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/PlatformIsa.c | 30 +++
> uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/Riscv64/TimerInterrupt.c | 51 ++++
> uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h | 55 ++++
> uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/InitPlat.c | 55 ++++
> 14 files changed, 1246 insertions(+)
>
> diff --git a/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h b/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h
> new file mode 100644
> index 00000000..ee7c656b
> --- /dev/null
> +++ b/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h
> @@ -0,0 +1,32 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + SctLibPlat.h
> +
> +Abstract:
> +
> + AArch64 specific defines
*cough*
> +
> +--*/
> +
> +#ifndef _EFI_LIB_PLAT_H_
> +#define _EFI_LIB_PLAT_H_
No leading _ in macros.
> +
> +#define MIN_ALIGNMENT_SIZE 8
> +
> +#endif
> diff --git a/uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c b/uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c
> new file mode 100644
> index 00000000..a48bb2f3
> --- /dev/null
> +++ b/uefi-sct/SctPkg/Library/SctLib/Riscv64/initplat.c
> @@ -0,0 +1,45 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + initplat.c
> +
> +Abstract:
> +
> + Math routines for compatibility with native EFI library routines.
> +
> +--*/
> +
> +#include "SctLibInternal.h"
> +
> +VOID
> +InitializeLibPlatform (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +
> +{
> + // No platform-specific initializations
> +}
> +
> +UINT64
> +SctReadTsc (
> + VOID
> + )
> +{
> + return 0;
> +}
> diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S
> new file mode 100644
> index 00000000..8bc2c624
> --- /dev/null
> +++ b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S
> @@ -0,0 +1,45 @@
> +## @file
> +#
> +# Copyright 2010 - 2012 Unified EFI, Inc.<BR>
> +# Copyright (c) 2012, ARM Ltd. All rights reserved.<BR>
> +# Copyright (c) 2020, Hewlett Packard Enterprise Development LP.<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.
> +#
> +##
> +#
> +#
> +#/*++
> +#
> +# Module Name:
> +#
> +# GoVirtual.S
> +#
> +#--*/
> +#start of the code section
> +.text
> +/* FIXME: Should alignment be different on Aarch64? */
1) FIXME
2) Aarch64.
> +.align 3
> +
> +.global JumpToTestFunc
> +.type JumpToTestFunc, %function
> +
> +#------------------------------------------------------------------------------
> +# VOID
> +# JumpToTestFunc (
> +# IN UINTN FuncPointer,
> +# IN UNITN ConfigInfo
> +# )
> +# TODO: Make sure this code is correct
No TODO.
Should this set really be called an RFC?
> +JumpToTestFunc:
> + mv x2, x0
> + mv x0, x1
> +
> + // Jump to Virtual function
> + jalr x2
> diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c
> new file mode 100644
> index 00000000..397b3514
> --- /dev/null
> +++ b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c
> @@ -0,0 +1,182 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2012, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + VirtualMemory.c
> +
> +--*/
> +
> +#include "SCRTApp.h"
> +
> +#define VIRT_TO_PHYS_OFFSET (0x80000000) //2G
> +
> +BOOLEAN HighAddress = FALSE;
> +UINTN PageTable = 0;
> +
> +
> +VOID
> +ConvertRuntimeFuncPtr (
> + IN OUT UINTN *VirtualFunc
> + )
> +/*++
> +
> +Routine Description:
> +
> + Change RuntimeTestFunc physical address to virtual address
> +
> +Arguments:
> +
> + VirtualFunc - On input, RuntimeTestFunc physical address.
> + On output, RuntimeTest virtual address.
> +
> +Returns:
> +
> + NONE
> +
> +--*/
> +{
> + /*Note: It is presumed that on ARM v5, V6 and V7 architectures
> + * the MMU is configured and enabled in PEI phase. As VirtualFunc
> + * is already mapped to virtual memory, don't have to do anything here.
> + */
> + /* FIXME: Is it the same on ARM v8? */
FIXME?
(Even if it's copied, it's wrong :)
ARM in general.
> +}
> +
> +
> +EFI_STATUS
> +DoMemoryAllocation (
> + IN UINTN PhysicalFunc
> + )
> +/*++
> +
> +Routine Description:
> +
> + Allocate memory and create the PageTable to set up physical-virtual map.
> +
> +Arguments:
> +
> + PhysicalFunc - Physical address where RuntimeTestFunc locates.
> +
> +Returns:
> +
> + EFI_STATUS
> +
> +--*/
> +{
> + EFI_STATUS Status;
> + EFI_PHYSICAL_ADDRESS AllocateMemory;
> +
> + //create new page tables or use existing page tables.
> + //
> + // Allocate PageTable memory close to this Application image location in
> + // the system memory. In this way, it is safe for page table memory.
> + //
> + AllocateMemory = PhysicalFunc;
> +
> + Status = tBS->AllocatePages (
> + AllocateMaxAddress,
> + EfiRuntimeServicesData,
> + 1,
> + &AllocateMemory
> + );
> +
> + if (EFI_ERROR(Status)) {
> + return Status;
> + }
> +
> + PageTable = (UINTN)AllocateMemory;
> + return EFI_SUCCESS;
> +}
> +
> +
> +VOID
> +PrepareVirtualAddressMap (
> + IN UINTN MemoryMapSize,
> + IN UINTN DescriptorSize,
> + IN EFI_MEMORY_DESCRIPTOR *MemoryMap,
> + IN EFI_MEMORY_DESCRIPTOR *VirtualMemoryMap,
> + IN OUT UINTN *VirtualMapSize
> + )
> +/*++
> +
> +Routine Description:
> +
> + Construct VirtualAddressMap from physical address to virtual address
> +
> +Arguments:
> +
> + MemoryMapSize - The size, in bytes, of the MemoryMap buffer
> + DescriptorSize - The size, in bytes, of an individual EFI_MEMORY_DESCRIPTOR
> + MemoryMap - A pointer to the current memory map
> + VirtualMemoryMap - A pointer to the modified virtual memory map
> + VirtualMapSize - A pointer to the size, in bytes, of the VirtualMemoryMap buffer
> +
> +Returns:
> +
> + NONE
> +
> +--*/
> +{
> + UINTN Index;
> + *VirtualMapSize = 0;
> +
> + //
> + // Copy entries that need runtime mapping to construct virtualMemoryMap
> + //
> + for (Index = 0; Index < (MemoryMapSize / DescriptorSize); Index++) {
> + if ((MemoryMap->Attribute & EFI_MEMORY_RUNTIME) == EFI_MEMORY_RUNTIME) {
> + SctCopyMem ((VOID *) VirtualMemoryMap, (VOID *) MemoryMap, DescriptorSize);
> + VirtualMemoryMap->VirtualStart = VirtualMemoryMap->PhysicalStart;
> + *VirtualMapSize += DescriptorSize;
> + VirtualMemoryMap = NextMemoryDescriptor (VirtualMemoryMap, DescriptorSize);
> + }
> +
> + MemoryMap = NextMemoryDescriptor (MemoryMap, DescriptorSize);
> + }
> +}
> +
> +
> +
> +VOID
> +JumpVirtualMode(
> + IN UINTN VirtualFunc,
> + IN UINTN HandOffAddr
> + )
> +/*++
> +
> +Routine Description:
> +
> + Enable virtual addressing mode, and jump to RuntimeTestFunc in virtual address
> +
> +Arguments:
> +
> + VirtualFunc - RuntimeTestFunc virtual address
> + HandOffAddr - Configuration Data Address
> +
> +Returns:
> +
> + NONE
> +
> +--*/
> +{
> + //
> + // Note: It is assumed that the MMU and page tables are configured on ARM platforms
> + // based on ARM v5 v6 and v7 architecture.
> + //
> + /* FIXME: Is it the same on ARM v8? */
> + JumpToTestFunc(VirtualFunc, HandOffAddr);
Again.
> +}
> diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c
> new file mode 100644
> index 00000000..6161d596
> --- /dev/null
> +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c
> @@ -0,0 +1,88 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012 ARM Ltd. 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.
> +
> +**/
> +
> +/*++
> +
> +Module Name:
> +
> + Debug.c
> +
> +--*/
> +
> +#include "SCRTDriver.h"
> +
> +UINTN mHandOffPtr = 0;
> +EFI_PHYSICAL_ADDRESS mIoPortSpaceAddress = 0;
> +
> +
> +EFI_STATUS
> +ConsumeHandOff (
> + IN UINTN HandOffAddr,
> + OUT CONF_INFO *ConfigData
> + )
> +{
> + RUNTIME_HANDOFF *HandOffPtr;
> + //
> + // First fix the memory address of hand off data.
> + //
> + FixAddress(&HandOffAddr);
> + mHandOffPtr = HandOffAddr;
> + HandOffPtr = (RUNTIME_HANDOFF*)mHandOffPtr;
> + *ConfigData = HandOffPtr->ConfigureInfo;
> +
> + if (!HandOffPtr->DebuggerInfo.MmioFlag){
> + //
> + // If debug port is I/O mapped, fix IoBase Address.
> + //
> + FixAddress(&HandOffPtr->DebuggerInfo.IoBase);
> + mIoPortSpaceAddress = HandOffPtr->DebuggerInfo.IoBase;
Looks redundant on !x86
> + } else {
> + //
> + // If debug port is MMIO, fix MmioBase Address.
> + //
> + FixAddress(&HandOffPtr->DebuggerInfo.MmioBase);
> + }
> +
> + return EFI_SUCCESS;
> +}
> +
> +
> +EFI_STATUS
> +Send2UART (
> + CHAR8 *String
> + )
> +{
> + //
> + // TODO: On ARM platforms use platform specific functions to
> + // write the data to UART.
> + //
Ye gods...
> + return EFI_SUCCESS;
> +}
> +
> +
> +
> +EFI_STATUS
> +DebugWorker (
> + IN CHAR8 *String
> + )
> +{
> + EFI_STATUS Status;
> +
> + //
> + // Send text message to registered UART.
> + //
> + Status = Send2UART(String);
> + return Status;
> +}
> diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c
> new file mode 100644
> index 00000000..cc8d9869
> --- /dev/null
> +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Dump.c
> @@ -0,0 +1,68 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012 ARM Ltd. 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.
> +
> +**/
> +
> +/*++
> +
> +Module Name:
> +
> + Dump.c
> +
> +--*/
> +
> +#include "SCRTDriver.h"
> +
> +VOID
> +DumpRuntimeTable()
> +{
> + SctAPrint ("\n================Dump Runtime Table===============\n");
> + SctAPrint ("Header Signature = 0x%x\n", VRT->Hdr.Signature);
> +
> + SctAPrint ("\n================GetTime Service==============\n");
> + SctAPrint ("GetTime @ 0x%x\n", VRT->GetTime);
> +
> + SctAPrint ("\n================SetTime Service==============\n");
> + SctAPrint ("SetTime @ 0x%x\n", VRT->SetTime);
> +
> + SctAPrint ("\n================GetWakeupTime Service==============\n");
> + SctAPrint ("GetWakeupTime @ 0x%x\n", VRT->GetWakeupTime);
> +
> + SctAPrint ("\n================SetWakeupTime Service==============\n");
> + SctAPrint ("SetWakeupTime @ 0x%x\n", VRT->SetWakeupTime);
> +
> + SctAPrint ("\n================GetVariable Service==============\n");
> + SctAPrint ("GetVariable @ 0x%x\n", VRT->GetVariable);
> +
> + SctAPrint ("\n================GetNextVariableName Service==============\n");
> + SctAPrint ("GetNextVariableName @ 0x%x\n", VRT->GetNextVariableName);
> +
> + SctAPrint ("\n================SetVariable Service==============\n");
> + SctAPrint ("SetVariable @ 0x%x\n", VRT->SetVariable);
> +
> + SctAPrint ("\n================GetNextHighMonotonicCount Service==============\n");
> + SctAPrint ("GetNextHighMonotonicCount @ 0x%x\n", VRT->GetNextHighMonotonicCount);
> +
> + SctAPrint ("\n================ResetSystem Service==============\n");
> + SctAPrint ("ResetSystem @ 0x%x\n", VRT->ResetSystem);
> +#if 0
Better to delete if not usable, but why disabled for AArch64 in the
first place?
> + SctAPrint ("\n================UpdateCapsule Service==============\n");
> + SctAPrint ("UpdateCapsule @ 0x%x\n", VRT->UpdateCapsule);
> +
> + SctAPrint ("\n================QueryCapsuleCapabilities Service==============\n");
> + SctAPrint ("QueryCapsuleCapabilities @ 0x%x\n", VRT->QueryCapsuleCapabilities);
> +
> + SctAPrint ("\n================QueryVariableInfo Service==============\n");
> + SctAPrint ("QueryVariableInfo @ 0x%x\n", VRT->QueryVariableInfo);
> +#endif
> +}
> diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c
> new file mode 100644
> index 00000000..b925e151
> --- /dev/null
> +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c
> @@ -0,0 +1,134 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.<BR>
More trailing spaces than usual in line above.
(The below block has 3 of them in every copy.)
> +
> + 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:
> +
> + Io.c
> +
> +--*/
> +
> +#include "Io.h"
> +
> +EFI_STATUS
> +EFIAPI
> +CpuIoServiceWrite (
> + IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
> + IN UINT64 UserAddress,
> + IN UINTN Count,
> + IN VOID *UserBuffer
> + )
> +/*++
> +
> +Routine Description:
> +
> + Perform the port I/O write service
> +
> +Arguments:
> +
> + Width - Width of the port I/O operation
> + Address - Base address of the port I/O operation
> + Count - Count of the number of accesses to perform
> + Buffer - Pointer to the source buffer from which to write data
> +
> +Returns:
> +
> + EFI_SUCCESS - The data was written.
> + EFI_INVALID_PARAMETER - Width is invalid.
> + EFI_INVALID_PARAMETER - Buffer is NULL.
> + EFI_UNSUPPORTED - The Buffer is not aligned for the given Width.
> + EFI_UNSUPPORTED - The address range specified by Address, Width,
> + and Count is not valid.
> +
> +--*/
> +{
> + return EFI_UNSUPPORTED;
> +}
> +
> +
> +EFI_STATUS
> +EfiIoWrite (
> + IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
> + IN UINT64 Address,
> + IN UINTN Count,
> + IN OUT VOID *Buffer
> + )
> +/*++
> +
> +Routine Description:
> + Perform an IO write into Buffer.
> +
> +Arguments:
> + Width - Width of write transaction, and repeat operation to use
> + Address - IO address to write
> + Count - Number of times to write the IO address.
> + Buffer - Buffer to write data from. size is Width * Count
> +
> +Returns:
> + Status code
> +
> +--*/
> +{
> + return CpuIoServiceWrite(Width, Address, Count, Buffer);
> +}
> +
> +
> +EFI_STATUS
> +EfiIoRead (
> + IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
> + IN UINT64 Address,
> + IN UINTN Count,
> + IN OUT VOID *Buffer
> + )
> +/*++
> +
> +Routine Description:
> + Perform an IO read into Buffer.
> +
> +Arguments:
> + Width - Width of read transaction, and repeat operation to use
> + Address - IO address to read
> + Count - Number of times to read the IO address.
> + Buffer - Buffer to read data into. size is Width * Count
> +
> +Returns:
> + Status code
> +
> +--*/
> +{
> + return EFI_UNSUPPORTED;
> +}
> +
> +
> +VOID
> +FixAddress (
> + IN UINTN *PhyAddress
> + )
> +{
> + //
> + //Note: On ARM platforms don't have to do this as all the functions are virtually mapped.
> + //
ARM
> +}
> +
> +// Quick port to ARM
> +
> +VOID
> +Port80 (
> + UINT8 Number
> + )
> +{
> + //EFI_SCT_DEBUG ((EFI_SCT_D_ERROR, L"Port80 %02x", Number));
Eew.
> +}
> diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h
> new file mode 100644
> index 00000000..1e78b3e4
> --- /dev/null
> +++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h
> @@ -0,0 +1,48 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012 ARM Ltd. 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.
> +
Trailing spaces.
> +**/
> +
> +/*++
> +
> +Module Name:
> +
> + Debug.h
> +
> +--*/
> +
> +#ifndef _IA32_IO_ACCESS_H
> +#define _IA32_IO_ACCESS_H
Srsly?
> +
> +#include "SCRTDriver.h"
> +
> +#define IA32_MAX_IO_ADDRESS 0xFFFF
> +
> +#define IA32API
> +
> +
> +typedef union {
> + UINT8 VOLATILE *buf;
> + UINT8 VOLATILE *ui8;
> + UINT16 VOLATILE *ui16;
> + UINT32 VOLATILE *ui32;
> + UINT64 VOLATILE *ui64;
> + UINTN VOLATILE ui;
> +} PTR;
> +
> +// This address is assuming a pure PC architecture. Not required?
> +#define VIRT_TO_PHYS_OFFSET (0x80000000) //2G
> +
> +
> +
> +#endif
> diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestCacheFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestCacheFunction.c
> new file mode 100644
> index 00000000..96ee7b57
> --- /dev/null
> +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestCacheFunction.c
> @@ -0,0 +1,137 @@
> +/** @file
> +
> + Copyright 2006 - 2016 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2016, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + DebugSupportBBTestCacheFunction.c
> +
> +Abstract:
> +
> + Interface Function Test Cases of Debug Support Protocol
> +
> +--*/
> +
> +
> +#include "DebugSupportBBTestMain.h"
> +
> +/**
> + * Entrypoint for EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache() Function Test.
> + * @param This a pointer of EFI_BB_TEST_PROTOCOL.
> + * @param ClientInterface a pointer to the interface to be tested.
> + * @param TestLevel test "thoroughness" control.
> + * @param SupportHandle a handle containing protocols required.
> + * @return EFI_SUCCESS Finish the test successfully.
> + */
> +//
> +// TDS 3.5
> +//
> +EFI_STATUS
> +BBTestInvalidateInstructionCacheFunctionAutoTest (
> + IN EFI_BB_TEST_PROTOCOL *This,
> + IN VOID *ClientInterface,
> + IN EFI_TEST_LEVEL TestLevel,
> + IN EFI_HANDLE SupportHandle
> + )
> +{
> + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib;
> + EFI_STATUS Status;
> + EFI_DEBUG_SUPPORT_PROTOCOL *DebugSupport;
> + EFI_TEST_ASSERTION AssertionType;
> + UINT64 Start;
> + UINT64 Length;
> + UINTN MaxProcessorIndex;
> + UINTN ProcessorIndex;
> +
> + //
> + // Get the Standard Library Interface
> + //
> + Status = gtBS->HandleProtocol (
> + SupportHandle,
> + &gEfiStandardTestLibraryGuid,
> + (VOID **) &StandardLib
> + );
> +
> + if (EFI_ERROR(Status)) {
> + StandardLib->RecordAssertion (
> + StandardLib,
> + EFI_TEST_ASSERTION_FAILED,
> + gTestGenericFailureGuid,
> + L"BS.HandleProtocol - Handle standard test library",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> + return Status;
> + }
> +
> + DebugSupport = (EFI_DEBUG_SUPPORT_PROTOCOL *)ClientInterface;
> +
> + if (DebugSupport->Isa != PlatformIsa) {
> + return EFI_SUCCESS;
> + }
> +
> + Status = DebugSupport->GetMaximumProcessorIndex (DebugSupport, &MaxProcessorIndex);
> + if (EFI_ERROR(Status)) {
> + StandardLib->RecordAssertion (
> + StandardLib,
> + EFI_TEST_ASSERTION_FAILED,
> + gTestGenericFailureGuid,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.GetMaximumProcessorIndex",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> + return Status;
> + }
> +
> + for (ProcessorIndex = 0; ProcessorIndex <= MaxProcessorIndex; ProcessorIndex++) {
> +
> + //
> + // Assertion Point 3.5.2.1
> + // Invoke InvalidateInstructionCache and verify interface correctness.
> + //
> +
> + // The Physical base of the memory range to be invalidated.
> + Start = 0x0;
> +
> + // The minimum number of bytes in the processor's instruction cache to be invalidated.
> + Length = 0x0;
> +
> + Status = DebugSupport->InvalidateInstructionCache (DebugSupport, ProcessorIndex, (VOID*)&Start, Length);
> +
> + if (EFI_ERROR(Status)) {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid015,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache - Invoke this function and verify interface correctness",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> + }
> +
> + return EFI_SUCCESS;
> +}
> +
> diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c
> new file mode 100644
> index 00000000..c27c0c0c
> --- /dev/null
> +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c
> @@ -0,0 +1,276 @@
> +/** @file
> +
> + Copyright 2006 - 2016 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2016, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + DebugSupportBBExceptionCallbackFunction.c
> +
> +Abstract:
> +
> + Interface Function Test Cases of Debug Support Protocol
> +
> +--*/
> +
> +
> +#include "DebugSupportBBTestMain.h"
> +
> +extern volatile UINTN InvokedExceptionCallback;
> +extern volatile UINTN InvokedPeriodicCallback;
> +
> +extern EFI_INSTRUCTION_SET_ARCHITECTURE PlatformIsa;
> +
> +void
> +SoftwareBreak (
> + void
> + )
> +{
> + // Not ported to ARM yet
Eew.
> + ASSERT (FALSE);
> +}
> +
> +/**
> + * Entrypoint for EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback() Function Test.
> + * @param This a pointer of EFI_BB_TEST_PROTOCOL.
> + * @param ClientInterface a pointer to the interface to be tested.
> + * @param TestLevel test "thoroughness" control.
> + * @param SupportHandle a handle containing protocols required.
> + * @return EFI_SUCCESS Finish the test successfully.
> + */
> +//
> +// TDS 3.4
> +//
> +EFI_STATUS
> +BBTestRegisterExceptionCallbackFunctionManualTest (
> + IN EFI_BB_TEST_PROTOCOL *This,
> + IN VOID *ClientInterface,
> + IN EFI_TEST_LEVEL TestLevel,
> + IN EFI_HANDLE SupportHandle
> + )
> +{
> + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib;
> + EFI_STATUS Status;
> + EFI_DEBUG_SUPPORT_PROTOCOL *DebugSupport;
> + EFI_TEST_ASSERTION AssertionType;
> +
> + DebugSupport = (EFI_DEBUG_SUPPORT_PROTOCOL *)ClientInterface;
> +
> + if (DebugSupport->Isa != PlatformIsa) {
> + return EFI_SUCCESS;
> + }
> +
> + //
> + // Get the Standard Library Interface
> + //
> + Status = gtBS->HandleProtocol (
> + SupportHandle,
> + &gEfiStandardTestLibraryGuid,
> + (VOID **) &StandardLib
> + );
> +
> + if (EFI_ERROR(Status)) {
> + StandardLib->RecordAssertion (
> + StandardLib,
> + EFI_TEST_ASSERTION_FAILED,
> + gTestGenericFailureGuid,
> + L"BS.HandleProtocol - Handle standard test library",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> + return Status;
> + }
> +
> + //
> + // Assertion Point 3.4.2.1
> + // Invoke RegisterExceptionCallback() to install an interrupt handler function.
> + //
> + InvokedExceptionCallback = FALSE;
> + // FIXME: Is it normal that we use EXCEPT_IA32_BREAKPOINT here?
> + // Shouldn't we define proper constants for ARM exceptions in DebugSupportProtocol.h file?
> + Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, ExceptionCallback, EXCEPT_IA32_BREAKPOINT);
> +
> + if ((Status == EFI_SUCCESS) || (Status == EFI_ALREADY_STARTED)) {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid009,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Invoke this function and verify interface correctness",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> +
> + //
> + // If the callback function is already registed, return
> + //
> + if (EFI_ERROR(Status)) {
> + return EFI_SUCCESS;
> + }
> +
> + //
> + // Test the callback function registed.
> + //
> +
> + //
> + // Call SoftwareBreak to invoke the interrupt handler function.
> + //
> + SoftwareBreak ();
> +
> + if (InvokedExceptionCallback == FALSE) {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid010,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Verify the callback function was invoked.",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> +
> + //
> + // Assertion Point 3.4.2.2
> + // Invoke RegisterPeriodicCallback() to install the Periodic interrupt handler function.
> + // Verify the two callback functions can be both invoked.
> + //
> + InvokedExceptionCallback = FALSE;
> + InvokedPeriodicCallback = FALSE;
> +
> + Status = DebugSupport->RegisterPeriodicCallback (DebugSupport, 0, PeriodicCallback);
> + if (EFI_ERROR(Status)) {
> + return Status;
> + }
> +
> + //
> + // Wait the PeriodicCallback to be invoked.
> + //
> + gtBS->Stall (500000);
> +
> + //
> + // Call SoftwareBreak to invoke the interrupt handler function.
> + //
> + SoftwareBreak ();
> +
> + if ((InvokedExceptionCallback == TRUE) && (InvokedPeriodicCallback == TRUE)) {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid011,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Verify the two callback functions can be both invoked.",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> +
> + //
> + // Uninstall the Periodic callback function.
> + //
> + Status = DebugSupport->RegisterPeriodicCallback (DebugSupport, 0, NULL);
> + if (EFI_ERROR(Status)) {
> + return Status;
> + }
> +
> + //
> + // Assertion Point 3.4.2.3
> + // Invoke RegisterExceptionCallback() to install another interrupt handler function.
> + //
> + Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, ExceptionCallback1, EXCEPT_IA32_BREAKPOINT);
> +
> + if (Status != EFI_ALREADY_STARTED) {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid012,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Register another callback function.",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> +
> + //
> + // Assertion Point 3.4.2.4
> + // Invoke RegisterExceptionCallback() to unstall the interrupt handler function.
> + //
> + Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, NULL, EXCEPT_IA32_BREAKPOINT);
> +
> + if (EFI_ERROR(Status)) {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid013,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Invoke this function to uninstall the interrupt handler function",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> +
> + InvokedExceptionCallback = FALSE;
> +
> + //
> + // Call SoftwareBreak to invoke the interrupt handler function.
> + //
> + SoftwareBreak ();
> +
> + if (InvokedExceptionCallback != FALSE) {
> + AssertionType = EFI_TEST_ASSERTION_FAILED;
> + } else {
> + AssertionType = EFI_TEST_ASSERTION_PASSED;
> + }
> +
> + StandardLib->RecordAssertion (
> + StandardLib,
> + AssertionType,
> + gDebugSupportBBTestFunctionAssertionGuid014,
> + L"EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Verify the callback function wasn't invoked",
> + L"%a:%d:Status - %r",
> + __FILE__,
> + (UINTN)__LINE__,
> + Status
> + );
> +
> + return EFI_SUCCESS;
> +}
> +
> diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/PlatformIsa.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/PlatformIsa.c
> new file mode 100644
> index 00000000..8334f601
> --- /dev/null
> +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/PlatformIsa.c
> @@ -0,0 +1,30 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2011 - 2012, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + PlatformIsa.c
> +
> +Abstract:
> +
> + Platform related Isa definition.
> +
> +--*/
> +
> +#include "DebugSupportBBTestMain.h"
> +
> +EFI_INSTRUCTION_SET_ARCHITECTURE PlatformIsa = IsaAArch64;
> +
> diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/Riscv64/TimerInterrupt.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/Riscv64/TimerInterrupt.c
> new file mode 100644
> index 00000000..1c1940e5
> --- /dev/null
> +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/UsbHc/BlackBoxTest/Riscv64/TimerInterrupt.c
> @@ -0,0 +1,51 @@
> +/** @file
> +
> + Copyright 2006 - 2010 Unified EFI, Inc.<BR>
> + Copyright (c) 2010, Intel Corporation. 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.
> +
> +**/
> +/**
> + * Ipf Source file for Mask/Unmask TimerInterrupt.
> + */
> +/*++
> +
> +Module Name:
> + TimerInterrupt.c
> +
> +Abstract:
> + Ipf Source file for Mask/Unmask TimerInterrupt.
> +
> +Author(s):
> +
> +
> +References:
> + EFI Specification 1.10
> + EFI/Tiano DXE Test Case Writer's Guide
> +
> +Revision History:
> + Initial 10-20-2002
> + Version 0.01
> +
> +--*/
> +
> +#include "UsbHcTest.h"
> +
> +VOID MaskTimerInterrupt()
> +{
> + // TBD
> + return;
> +}
> +
> +VOID UnmaskTimerInterrupt()
> +{
> + // TBD
> + return;
> +}
> diff --git a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h
> new file mode 100644
> index 00000000..ff781aee
> --- /dev/null
> +++ b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h
> @@ -0,0 +1,55 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2010 - 2012, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + EntsLibPlat.h
> +
> +Abstract:
> +
> + AArch64 specific defines
> +
> +--*/
> +
> +#ifndef _EFI_LIB_PLAT_H_
> +#define _EFI_LIB_PLAT_H_
No leading _.
/
Leif
> +
> +#define MIN_ALIGNMENT_SIZE 8
> +
> +VOID
> +EntsInitializeLibPlatform (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +/*++
> +
> +Routine Description:
> +
> + Initialize platform.
> +
> +Arguments:
> +
> + ImageHandle - The image handle.
> + SystemTable - The system table.
> +
> +Returns:
> +
> + None.
> +
> +--*/
> +;
> +
> +#endif
> diff --git a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/InitPlat.c b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/InitPlat.c
> new file mode 100644
> index 00000000..70a509a4
> --- /dev/null
> +++ b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/InitPlat.c
> @@ -0,0 +1,55 @@
> +/** @file
> +
> + Copyright 2006 - 2012 Unified EFI, Inc.<BR>
> + Copyright (c) 2010 - 2012, ARM Ltd. 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.
> +
> +**/
> +/*++
> +
> +Module Name:
> +
> + InitPlat.c
> +
> +Abstract:
> +
> + Math routines for compatibility with native EFI library routines.
> +
> +--*/
> +
> +#include "Efi.h"
> +#include "EntsLibPlat.h"
> +
> +VOID
> +EntsInitializeLibPlatform (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +/*++
> +
> +Routine Description:
> +
> + Initialize platform.
> +
> +Arguments:
> +
> + ImageHandle - The image handle.
> + SystemTable - The system table.
> +
> +Returns:
> +
> + None.
> +
> +--*/
> +{
> + //
> + // No platform-specific initializations
> + //
> +}
> --
> 2.28.0
>
>
>
>
>
>
next prev parent reply other threads:[~2020-12-02 12:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-01 16:17 [edk2-test PATCH v1 0/2] Add RISCV64 support to SctPkg Daniel Schaefer
2020-12-01 16:17 ` [edk2-test PATCH v1 1/2] SctPkg: Add RISCV64 support Daniel Schaefer
2020-12-02 11:44 ` [edk2-devel] " Leif Lindholm
2021-02-08 15:09 ` Daniel Schaefer
2020-12-01 16:17 ` [edk2-test PATCH v1 2/2] SctPkg: Enable RISCV64 support using AARCH64 sources Daniel Schaefer
2020-12-02 12:04 ` Leif Lindholm [this message]
2021-02-08 15:09 ` [edk2-devel] " Daniel Schaefer
2021-02-08 17:04 ` Heinrich Schuchardt
2021-02-09 12:42 ` Leif Lindholm
2021-02-09 13:47 ` Heinrich Schuchardt
2021-02-09 14:58 ` Leif Lindholm
2021-02-09 15:11 ` Daniel Schaefer
2020-12-01 16:59 ` [edk2-test PATCH v1 0/2] Add RISCV64 support to SctPkg Heinrich Schuchardt
2020-12-01 17:11 ` Daniel Schaefer
2020-12-01 17:37 ` Heinrich Schuchardt
2021-02-08 14:30 ` Daniel Schaefer
2021-02-08 15:50 ` Heinrich Schuchardt
2020-12-02 12:07 ` Leif Lindholm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201202120436.GE1664@vanye \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox