public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Daniel Schaefer" <daniel.schaefer@hpe.com>
To: <devel@edk2.groups.io>
Cc: G Edhaya Chandran <Edhaya.Chandran@arm.com>,
	Barton Gao <gaojie@byosoft.com.cn>,
	Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>,
	Eric Jin <eric.jin@intel.com>, Arvin Chen <arvinx.chen@intel.com>,
	Leif Lindholm <leif@nuviainc.com>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Abner Chang <abner.chang@hpe.com>
Subject: [edk2-test PATCHv3 2/5] SctPkg: Adapt Aarch64 sources for Riscv64
Date: Thu,  4 Mar 2021 11:21:13 +0800	[thread overview]
Message-ID: <20210304032116.24357-3-daniel.schaefer@hpe.com> (raw)
In-Reply-To: <20210304032116.24357-1-daniel.schaefer@hpe.com>

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3042

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>
Cc: Eric Jin <eric.jin@intel.com>
Cc: Arvin Chen <arvinx.chen@intel.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Abner Chang <abner.chang@hpe.com>
Signed-off-by: Daniel Schaefer <daniel.schaefer@hpe.com>
---
 uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h                                                                        |  3 +-
 uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S                                                                           |  9 ++--
 uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c                                                                       | 16 +++----
 uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c                                                                            | 22 +++------
 uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c                                                                               |  7 +--
 uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h                                                                               | 48 --------------------
 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c | 12 ++---
 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/PlatformIsa.c                                 |  4 +-
 uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h                                         |  3 +-
 9 files changed, 32 insertions(+), 92 deletions(-)

diff --git a/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h b/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h
index ee7c656b..69e7f904 100644
--- a/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h
+++ b/uefi-sct/SctPkg/Library/SctLib/Riscv64/SctLibPlat.h
@@ -2,6 +2,7 @@
 
   Copyright 2006 - 2012 Unified EFI, Inc.<BR>
   Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2021, 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
@@ -20,7 +21,7 @@ Module Name:
 
 Abstract:
 
-  AArch64 specific defines
+  RISCV64 specific defines
 
 --*/
 
diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S
index d223b36b..ae33da18 100644
--- a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S
+++ b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/GoVirtual.S
@@ -2,6 +2,7 @@
 #
 #  Copyright 2010 - 2012 Unified EFI, Inc.<BR>
 #  Copyright (c) 2012, ARM Ltd. All rights reserved.<BR>
+#  Copyright (c) 2021, 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
@@ -23,8 +24,6 @@
 #--*/
 #start of the code section
 .text
-/* FIXME: Should alignment be different on Aarch64? */
-.align 3
 
 .global JumpToTestFunc
 .type JumpToTestFunc, %function
@@ -37,8 +36,8 @@
 #   )
 #
 JumpToTestFunc:
-	mov x2, x0
-	mov x0, x1
+	mv x2, x0
+	mv x0, x1
 
 	// Jump to Virtual function
-	blr x2
+	jalr x2
diff --git a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c
index 397b3514..00b59594 100644
--- a/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c
+++ b/uefi-sct/SctPkg/SCRT/SCRTApp/Riscv64/VirtualMemory.c
@@ -2,6 +2,7 @@
 
   Copyright 2006 - 2012 Unified EFI, Inc.<BR>
   Copyright (c) 2012, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2021, 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
@@ -22,9 +23,6 @@ Module Name:
 
 #include "SCRTApp.h"
 
-#define VIRT_TO_PHYS_OFFSET       (0x80000000)     //2G
-
-BOOLEAN     HighAddress = FALSE;
 UINTN       PageTable   = 0;
 
 
@@ -49,11 +47,10 @@ Returns:
 
 --*/
 {
-	/*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.
+  /* Note: It is presumed that on RISCV 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? */
 }
 
 
@@ -174,9 +171,8 @@ Returns:
 --*/
 {
   //
-  // Note: It is assumed that the MMU and page tables are configured on ARM platforms
-  // based on ARM v5 v6 and v7 architecture.
+  // Note: It is assumed that the MMU and page tables are configured on RISC-V
+  // platforms.
   //
-  /* FIXME: Is it the same on ARM v8? */
 	JumpToTestFunc(VirtualFunc, HandOffAddr);
 }
diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c
index 6161d596..2991935a 100644
--- a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c
+++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Debug.c
@@ -1,7 +1,8 @@
 /** @file
 
   Copyright 2006 - 2012 Unified EFI, Inc.<BR>
-  Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.<BR>   
+  Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2021 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
@@ -24,7 +25,6 @@ Module Name:
 #include "SCRTDriver.h"
 
 UINTN                 mHandOffPtr        =  0;
-EFI_PHYSICAL_ADDRESS  mIoPortSpaceAddress = 0;
 
 
 EFI_STATUS
@@ -42,18 +42,10 @@ ConsumeHandOff (
    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;
-   } else {
-     //
-     // If debug port is MMIO, fix MmioBase Address.
-     //
-     FixAddress(&HandOffPtr->DebuggerInfo.MmioBase);
-   }
+   //
+   // Fix MmioBase Address.
+   //
+   FixAddress(&HandOffPtr->DebuggerInfo.MmioBase);
 
    return EFI_SUCCESS;
 }
@@ -65,7 +57,7 @@ Send2UART (
   )
 {
   //
-  // TODO: On ARM platforms use platform specific functions to
+  // TODO: On RISC-V platforms use platform specific functions to
   // write the data to UART.
   //
   return EFI_SUCCESS;
diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c
index b925e151..255cb9a6 100644
--- a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c
+++ b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.c
@@ -2,6 +2,7 @@
 
   Copyright 2006 - 2012 Unified EFI, Inc.<BR>
   Copyright (c) 2011 - 2012 ARM Ltd. All rights reserved.<BR>   
+  (C) Copyright 2021 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
@@ -21,7 +22,7 @@ Module Name:
 
 --*/
 
-#include "Io.h"
+#include "SCRTDriver.h"
 
 EFI_STATUS
 EFIAPI
@@ -119,11 +120,11 @@ FixAddress (
   )
 {
 		//
-		//Note: On ARM platforms don't have to do this as all the functions are virtually mapped.
+		//Note: On RISC-V platforms don't have to do this as all the functions are virtually mapped.
 		//
 }
 
-// Quick port to ARM
+// Quick port to RISC-V. It doesn't have traditional I/O-Port 80h POST Codes
 
 VOID
 Port80 (
diff --git a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h b/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h
deleted file mode 100644
index 1e78b3e4..00000000
--- a/uefi-sct/SctPkg/SCRT/SCRTDriver/Riscv64/Io.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/** @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.h
-
---*/
-
-#ifndef _IA32_IO_ACCESS_H
-#define _IA32_IO_ACCESS_H
-
-#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/DebugSupportBBTestExceptionCallbackFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/DebugSupport/BlackBoxTest/Riscv64/DebugSupportBBTestExceptionCallbackFunction.c
index c27c0c0c..c6e72806 100644
--- 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
@@ -2,6 +2,7 @@
 
   Copyright 2006 - 2016 Unified EFI, Inc.<BR>
   Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2021, 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
@@ -37,7 +38,7 @@ SoftwareBreak (
   void
   )
 {
-  // Not ported to ARM yet
+  // Not ported to RISC-V yet
   ASSERT (FALSE);
 }
 
@@ -99,9 +100,7 @@ BBTestRegisterExceptionCallbackFunctionManualTest (
   // 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);
+  Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, ExceptionCallback, EXCEPT_RISCV_BREAKPOINT);
 
   if ((Status == EFI_SUCCESS) || (Status == EFI_ALREADY_STARTED)) {
     AssertionType = EFI_TEST_ASSERTION_PASSED;
@@ -205,7 +204,7 @@ BBTestRegisterExceptionCallbackFunctionManualTest (
   // Assertion Point 3.4.2.3
   // Invoke RegisterExceptionCallback() to install another interrupt handler function.
   //
-  Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, ExceptionCallback1, EXCEPT_IA32_BREAKPOINT);
+  Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, ExceptionCallback1, EXCEPT_RISCV_BREAKPOINT);
 
   if (Status != EFI_ALREADY_STARTED) {
     AssertionType = EFI_TEST_ASSERTION_FAILED;
@@ -228,7 +227,7 @@ BBTestRegisterExceptionCallbackFunctionManualTest (
   // Assertion Point 3.4.2.4
   // Invoke RegisterExceptionCallback() to unstall the interrupt handler function.
   //
-  Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, NULL, EXCEPT_IA32_BREAKPOINT);
+  Status = DebugSupport->RegisterExceptionCallback (DebugSupport, 0, NULL, EXCEPT_RISCV_BREAKPOINT);
 
   if (EFI_ERROR(Status)) {
     AssertionType = EFI_TEST_ASSERTION_FAILED;
@@ -273,4 +272,3 @@ BBTestRegisterExceptionCallbackFunctionManualTest (
 
   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
index 8334f601..8b23d91b 100644
--- 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
@@ -2,6 +2,7 @@
 
   Copyright 2006 - 2012 Unified EFI, Inc.<BR>
   Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2021, 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
@@ -26,5 +27,4 @@ Abstract:
 
 #include "DebugSupportBBTestMain.h"
 
-EFI_INSTRUCTION_SET_ARCHITECTURE PlatformIsa = IsaAArch64;
-
+EFI_INSTRUCTION_SET_ARCHITECTURE PlatformIsa = IsaRiscv64;
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
index ff781aee..144f812a 100644
--- a/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h
+++ b/uefi-sct/SctPkg/TestInfrastructure/SCT/Framework/ENTS/EasLib/Riscv64/EntsLibPlat.h
@@ -2,6 +2,7 @@
 
   Copyright 2006 - 2012 Unified EFI, Inc.<BR>
   Copyright (c) 2010 - 2012, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2021 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
@@ -20,7 +21,7 @@ Module Name:
 
 Abstract:
 
-  AArch64 specific defines
+  RISCV64 specific defines
 
 --*/
 
-- 
2.30.0


  parent reply	other threads:[~2021-03-04  3:21 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-04  3:21 [edk2-test PATCHv3 0/5] Port SCT to RISCV64 Daniel Schaefer
2021-03-04  3:21 ` [edk2-test PATCHv3 1/5] SctPkg: Add RISCV64 support by using Aarch64 sources Daniel Schaefer
2021-03-30 12:25   ` Sunny Wang
2021-03-04  3:21 ` Daniel Schaefer [this message]
2021-03-04  7:50   ` [edk2-test PATCHv3 2/5] SctPkg: Adapt Aarch64 sources for Riscv64 Abner Chang
2021-03-30 12:25   ` Sunny Wang
2021-03-04  3:21 ` [edk2-test PATCHv3 3/5] SctPkg: Add RISCV64 build support Daniel Schaefer
2021-03-30 12:26   ` [edk2-devel] " Sunny Wang
2021-03-04  3:21 ` [edk2-test PATCHv3 4/5] SctPkg: Unify CC_FLAGS for all GCC platforms Daniel Schaefer
2021-03-04  7:50   ` Abner Chang
2021-03-30 12:26   ` [edk2-devel] " Sunny Wang
2021-03-04  3:21 ` [edk2-test PATCHv3 5/5] SctPkg: Remove trailing whitespace Daniel Schaefer
2021-03-04  7:51   ` Abner Chang

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=20210304032116.24357-3-daniel.schaefer@hpe.com \
    --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