From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by mx.groups.io with SMTP id smtpd.web08.3760.1606910680980001618 for ; Wed, 02 Dec 2020 04:04:41 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20150623.gappssmtp.com header.s=20150623 header.b=SERvAV6+; spf=pass (domain: nuviainc.com, ip: 209.85.128.42, mailfrom: leif@nuviainc.com) Received: by mail-wm1-f42.google.com with SMTP id a3so7208254wmb.5 for ; Wed, 02 Dec 2020 04:04:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=/XYtbITS+HO4r3Iwyc1AUzpUTwkGCQOErxH5wMt5SkM=; b=SERvAV6+pmN78qXIz0TIF3qmS+fvXOHTsqpJn3ubOOFew40ftdwuEAolNGwpWxwJX/ fqU7YZrMc7xD99QAEaYeX8z2AeL79VmeX+aMz/Gcr4xmgC8Cy35tDcf0gH3flh3Z7BCo LWT8OneSqvJevNd+3V4lCfNQotbtyPaM+Z+7dVxZbQUJa93C9/xTsnRDLSIrfy/vp+qR 4ufnpMws7CECuY7frYf2Oeph+B4KI7ReMqEZUxGURU+Qvas5CXEMHteKQOAs5/HYD+Ov crAcVyv1pjPoeqcPUHz+IrenuzrAItXmjylwG1/vApfyHRQYPuhbD1f/WvwcyuoBS3bI gMdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=/XYtbITS+HO4r3Iwyc1AUzpUTwkGCQOErxH5wMt5SkM=; b=fqbcp3Tz6v2qs7tNJdWdYWNVv0J6GBp8lQFgrlEjOy/HjBgLF9EElBRe5qUdgbPSHy 7sdlXAhuMWGmO1f3U0kKjfcgVOySdUPA41k1P+WPsF5rhO7W7kwJw0p06PKsmXYrT6pP 4sxvYptMIvxfEnpEDFER7vaPf0VjIm7cQjbZhQC7jmhHCVKdRCyg+TF/IirojZGufg5P kfDMr3+/q/ttc+0v8AZdtmuuB+v9wbg+XPk1dd0YpP0wDcb3nXVOoNjrj57LAVf2Easv xAzyfEcKMEOJy3QqikTdT0pfH/ucnELWZRvqUSu4JwFWv6DMiVKaLzwDgYpp20HIXOUg 6UYw== X-Gm-Message-State: AOAM533JoVPtAzVgJ1npSHQd2AV4tiK2kvMsHJNxBtIr3gpaNZ+NZchR sPIp8ctilO/1kGVFUTLn0wxW7XF0bfQdk7WCVPwKYfCwJPBFehlY0/0ZzWGBFBRi0aOWd6w8+n7 tTyIXWHcdl3tQU55b8S7UGK3pVzjfEyx/EhtPO8Z11gfLVHqS7witRcJTYjbkhtI0yzu/ X-Google-Smtp-Source: ABdhPJxFLcgfR4LbuM1RlzujsZdkgx+PdJDF/rq0WJ7TGeHE1XvxYpw4rC0Har6vdq+dBbr7pSJ7RA== X-Received: by 2002:a1c:3d86:: with SMTP id k128mr2752908wma.66.1606910678804; Wed, 02 Dec 2020 04:04:38 -0800 (PST) Return-Path: Received: from vanye (cpc1-cmbg19-2-0-cust915.5-4.cable.virginm.net. [82.27.183.148]) by smtp.gmail.com with ESMTPSA id r82sm1838665wma.18.2020.12.02.04.04.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Dec 2020 04:04:38 -0800 (PST) Date: Wed, 2 Dec 2020 12:04:36 +0000 From: "Leif Lindholm" To: devel@edk2.groups.io, daniel.schaefer@hpe.com Cc: Heinrich Schuchardt , Abner Chang , Gilbert Chen , Eric Jin , G Edhaya Chandran , Barton Gao , Samer El-Haj-Mahmoud Subject: Re: [edk2-devel] [edk2-test PATCH v1 2/2] SctPkg: Enable RISCV64 support using AARCH64 sources Message-ID: <20201202120436.GE1664@vanye> References: <20201201161752.23734-1-daniel.schaefer@hpe.com> <20201201161752.23734-3-daniel.schaefer@hpe.com> MIME-Version: 1.0 In-Reply-To: <20201201161752.23734-3-daniel.schaefer@hpe.com> User-Agent: Mutt/1.10.1 (2018-07-13) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 > Cc: Heinrich Schuchardt > Cc: Abner Chang > Cc: Gilbert Chen > Cc: Eric Jin > Cc: G Edhaya Chandran > Cc: Barton Gao > Cc: Samer El-Haj-Mahmoud > Signed-off-by: Daniel Schaefer > --- > 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.
> + Copyright (c) 2011 - 2012, ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2011 - 2012, ARM Ltd. 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: > + > + 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.
> +# Copyright (c) 2012, ARM Ltd. All rights reserved.
> +# Copyright (c) 2020, Hewlett Packard Enterprise Development LP.
> +# > +# 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.
> + Copyright (c) 2012, ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2011 - 2012 ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2011 - 2012 ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.
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.
> + Copyright (c) 2011 - 2012 ARM Ltd. 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. > + 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.
> + Copyright (c) 2011 - 2016, ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2011 - 2016, ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2011 - 2012, ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2010, 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. > + > +**/ > +/** > + * 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.
> + Copyright (c) 2010 - 2012, ARM Ltd. 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: > + > + 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.
> + Copyright (c) 2010 - 2012, ARM Ltd. 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: > + > + 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 > > > > > >