public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Akira Moroo" <retrage01@gmail.com>
To: devel@edk2.groups.io
Cc: afish@apple.com, ray.ni@intel.com, Akira Moroo <retrage01@gmail.com>
Subject: [RFC PATCH 3/4] EmulatorPkg/Unix/Host: Add AArch64 support
Date: Sun, 10 Oct 2021 00:49:17 +0900	[thread overview]
Message-ID: <a40af5f638c77429e21683aa80142960bab466fa.1633789833.git.retrage01@gmail.com> (raw)
In-Reply-To: <cover.1633789833.git.retrage01@gmail.com>

Since there is no difference in calling convention between the Unix host
and the UEFI environment on AArch64, it does not require gaskets. In
this commit, it defines EmulatorPkg protocols that calls the host
functions without gaskets and adds AArch64 specific stack switch logic.

Signed-off-by: Akira Moroo <retrage01@gmail.com>
---
 EmulatorPkg/Unix/Host/AArch64/Gasket.c       | 50 +++++++++++
 EmulatorPkg/Unix/Host/AArch64/SwitchStack.S  | 42 +++++++++
 EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c | 37 ++++++++
 EmulatorPkg/Unix/Host/BlockIo.c              | 26 ++++++
 EmulatorPkg/Unix/Host/EmuThunk.c             | 29 ++++++
 EmulatorPkg/Unix/Host/Host.c                 | 32 +++++++
 EmulatorPkg/Unix/Host/Host.inf               |  5 +-
 EmulatorPkg/Unix/Host/LinuxPacketFilter.c    | 38 ++++++++
 EmulatorPkg/Unix/Host/PosixFileSystem.c      | 94 +++++++++++++++++++-
 EmulatorPkg/Unix/Host/Pthreads.c             | 30 ++++++-
 EmulatorPkg/Unix/Host/X11GraphicsWindow.c    | 26 +++++-
 11 files changed, 405 insertions(+), 4 deletions(-)
 create mode 100644 EmulatorPkg/Unix/Host/AArch64/Gasket.c
 create mode 100644 EmulatorPkg/Unix/Host/AArch64/SwitchStack.S

diff --git a/EmulatorPkg/Unix/Host/AArch64/Gasket.c b/EmulatorPkg/Unix/Host/AArch64/Gasket.c
new file mode 100644
index 0000000000..69a728d408
--- /dev/null
+++ b/EmulatorPkg/Unix/Host/AArch64/Gasket.c
@@ -0,0 +1,50 @@
+/** @file
+
+  Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>
+  Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.<BR>
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "Host.h"
+
+//
+// Reverse (UNIX to EFIAPI) gaskets
+//
+
+typedef
+UINTN
+(EFIAPI *CALL_BACK_1) (
+  UINT64 Delta
+  );
+
+UINTN
+ReverseGasketUint64 (
+  UINTN  CallBack,
+  UINT64 a
+  )
+{
+  return ((CALL_BACK_1) CallBack) (a);
+}
+
+//
+// UNIX ABI to EFI ABI call
+//
+
+typedef
+UINTN
+(EFIAPI *CALL_BACK_2) (
+  VOID  *Context,
+  VOID  *Key
+  );
+
+UINTN
+ReverseGasketUint64Uint64 (
+  VOID      *CallBack,
+  VOID      *Context,
+  VOID      *Key
+  )
+{
+  return ((CALL_BACK_2) CallBack) (Context, Key);
+}
diff --git a/EmulatorPkg/Unix/Host/AArch64/SwitchStack.S b/EmulatorPkg/Unix/Host/AArch64/SwitchStack.S
new file mode 100644
index 0000000000..6e903b94ef
--- /dev/null
+++ b/EmulatorPkg/Unix/Host/AArch64/SwitchStack.S
@@ -0,0 +1,42 @@
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
+# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
+# Portions copyright (c) 2011 - 2013, ARM Limited. All rights reserved.<BR>
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#------------------------------------------------------------------------------
+
+.text
+.align 5
+
+GCC_ASM_EXPORT(PeiSwitchStacks)
+
+#/**
+#
+#  This allows the caller to switch the stack and goes to the new entry point
+#
+# @param      EntryPoint   The pointer to the location to enter
+# @param      Context      Parameter to pass in
+# @param      Context2     Parameter2 to pass in
+# @param      NewStack     New Location of the stack
+#
+# @return     Nothing. Goes to the Entry Point passing in the new parameters
+#
+#**/
+#VOID
+#EFIAPI
+#PeiSwitchStacks (
+#  SWITCH_STACK_ENTRY_POINT EntryPoint,
+#  VOID  *Context,
+#  VOID  *Context2,
+#  VOID  *NewStack
+#  );
+#
+ASM_PFX(PeiSwitchStacks):
+  mov   x29, #0
+  mov   x30, x0
+  mov   sp, x3
+  mov   x0, x1
+  mov   x1, x2
+  ret
diff --git a/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c b/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c
index 441f1e8d0a..f591d94f4e 100644
--- a/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c
+++ b/EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c
@@ -972,6 +972,26 @@ EmuSnpReceive (
   return EFI_SUCCESS;
 }
 
+#if defined(__aarch64__)
+
+EMU_SNP_PROTOCOL gEmuSnpProtocol = {
+  EmuSnpCreateMapping,
+  EmuSnpStart,
+  EmuSnpStop,
+  EmuSnpInitialize,
+  EmuSnpReset,
+  EmuSnpShutdown,
+  EmuSnpReceiveFilters,
+  EmuSnpStationAddress,
+  EmuSnpStatistics,
+  EmuSnpMCastIpToMac,
+  EmuSnpNvData,
+  EmuSnpGetStatus,
+  EmuSnpTransmit,
+  EmuSnpReceive
+};
+
+#else
 
 EMU_SNP_PROTOCOL gEmuSnpProtocol = {
   GasketSnpCreateMapping,
@@ -990,6 +1010,8 @@ EMU_SNP_PROTOCOL gEmuSnpProtocol = {
   GasketSnpReceive
 };
 
+#endif
+
 EFI_STATUS
 GetInterfaceMacAddr (
   EMU_SNP_PRIVATE    *Private
@@ -1092,6 +1114,19 @@ EmuSnpThunkClose (
 }
 
 
+#if defined(__aarch64__)
+
+EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {
+  &gEmuSnpProtocolGuid,
+  NULL,
+  NULL,
+  0,
+  EmuSnpThunkOpen,
+  EmuSnpThunkClose,
+  NULL
+};
+
+#else
 
 EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {
   &gEmuSnpProtocolGuid,
@@ -1104,3 +1139,5 @@ EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {
 };
 
 #endif
+
+#endif
diff --git a/EmulatorPkg/Unix/Host/BlockIo.c b/EmulatorPkg/Unix/Host/BlockIo.c
index 18368060d5..b335db192e 100644
--- a/EmulatorPkg/Unix/Host/BlockIo.c
+++ b/EmulatorPkg/Unix/Host/BlockIo.c
@@ -594,6 +594,17 @@ StdDupUnicodeToAscii (
   return Ascii;
 }
 
+#if defined(__aarch64__)
+
+EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = {
+  EmuBlockIoReset,
+  EmuBlockIoReadBlocks,
+  EmuBlockIoWriteBlocks,
+  EmuBlockIoFlushBlocks,
+  EmuBlockIoCreateMapping
+};
+
+#else
 
 EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = {
   GasketEmuBlockIoReset,
@@ -603,6 +614,8 @@ EMU_BLOCK_IO_PROTOCOL gEmuBlockIoProtocol = {
   GasketEmuBlockIoCreateMapping
 };
 
+#endif
+
 EFI_STATUS
 EmuBlockIoThunkOpen (
   IN  EMU_IO_THUNK_PROTOCOL   *This
@@ -687,7 +700,19 @@ EmuBlockIoThunkClose (
   return EFI_SUCCESS;
 }
 
+#if defined(__aarch64__)
 
+EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo = {
+  &gEmuBlockIoProtocolGuid,
+  NULL,
+  NULL,
+  0,
+  EmuBlockIoThunkOpen,
+  EmuBlockIoThunkClose,
+  NULL
+};
+
+#else
 
 EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo = {
   &gEmuBlockIoProtocolGuid,
@@ -699,4 +724,5 @@ EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo = {
   NULL
 };
 
+#endif
 
diff --git a/EmulatorPkg/Unix/Host/EmuThunk.c b/EmulatorPkg/Unix/Host/EmuThunk.c
index b8b0651c6a..bd78232f9c 100644
--- a/EmulatorPkg/Unix/Host/EmuThunk.c
+++ b/EmulatorPkg/Unix/Host/EmuThunk.c
@@ -396,6 +396,34 @@ SecGetNextProtocol (
   return GetNextThunkProtocol (EmuBusDriver, Instance);
 }
 
+#if defined(__aarch64__)
+
+EMU_THUNK_PROTOCOL gEmuThunkProtocol = {
+  SecWriteStdErr,
+  SecConfigStdIn,
+  SecWriteStdOut,
+  SecReadStdIn,
+  SecPollStdIn,
+  SecMalloc,
+  SecValloc,
+  SecFree,
+  SecPeCoffGetEntryPoint,
+  SecPeCoffRelocateImageExtraAction,
+  SecPeCoffUnloadImageExtraAction,
+  SecEnableInterrupt,
+  SecDisableInterrupt,
+  QueryPerformanceFrequency,
+  QueryPerformanceCounter,
+  SecSleep,
+  SecCpuSleep,
+  SecExit,
+  SecGetTime,
+  SecSetTime,
+  SecSetTimer,
+  SecGetNextProtocol
+};
+
+#else
 
 EMU_THUNK_PROTOCOL gEmuThunkProtocol = {
   GasketSecWriteStdErr,
@@ -422,6 +450,7 @@ EMU_THUNK_PROTOCOL gEmuThunkProtocol = {
   GasketSecGetNextProtocol
 };
 
+#endif
 
 VOID
 SecInitThunkProtocol (
diff --git a/EmulatorPkg/Unix/Host/Host.c b/EmulatorPkg/Unix/Host/Host.c
index b4e5510613..bba6282738 100644
--- a/EmulatorPkg/Unix/Host/Host.c
+++ b/EmulatorPkg/Unix/Host/Host.c
@@ -12,17 +12,49 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #define MAP_ANONYMOUS MAP_ANON
 #endif
 
+EFI_STATUS
+SecUnixPeiAutoScan (
+  IN  UINTN                 Index,
+  OUT EFI_PHYSICAL_ADDRESS  *MemoryBase,
+  OUT UINT64                *MemorySize
+  );
+
+EFI_STATUS
+SecUnixFdAddress (
+  IN     UINTN                 Index,
+  IN OUT EFI_PHYSICAL_ADDRESS  *FdBase,
+  IN OUT UINT64                *FdSize,
+  IN OUT EFI_PHYSICAL_ADDRESS  *FixUp
+  );
+
+VOID *
+SecEmuThunkAddress (
+  VOID
+  );
+
 
 //
 // Globals
 //
 
+#if defined(__aarch64__)
+
+EMU_THUNK_PPI mSecEmuThunkPpi = {
+  SecUnixPeiAutoScan,
+  SecUnixFdAddress,
+  SecEmuThunkAddress
+};
+
+#else
+
 EMU_THUNK_PPI mSecEmuThunkPpi = {
   GasketSecUnixPeiAutoScan,
   GasketSecUnixFdAddress,
   GasketSecEmuThunkAddress
 };
 
+#endif
+
 char *gGdbWorkingFileName = NULL;
 unsigned int mScriptSymbolChangesCount = 0;
 
diff --git a/EmulatorPkg/Unix/Host/Host.inf b/EmulatorPkg/Unix/Host/Host.inf
index c479d2b7d0..43cb55aa21 100644
--- a/EmulatorPkg/Unix/Host/Host.inf
+++ b/EmulatorPkg/Unix/Host/Host.inf
@@ -20,7 +20,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
+#  VALID_ARCHITECTURES           = IA32 X64 AARCH64 EBC
 #
 
 [Sources]
@@ -42,6 +42,9 @@
   Ia32/Gasket.S       # enforce 16-byte stack alignment for Mac OS X
   Ia32/SwitchStack.c
 
+[Sources.AARCH64]
+  AArch64/Gasket.c
+  AArch64/SwitchStack.S
 
 [Packages]
   MdePkg/MdePkg.dec
diff --git a/EmulatorPkg/Unix/Host/LinuxPacketFilter.c b/EmulatorPkg/Unix/Host/LinuxPacketFilter.c
index 2b772ab884..9c696a8774 100644
--- a/EmulatorPkg/Unix/Host/LinuxPacketFilter.c
+++ b/EmulatorPkg/Unix/Host/LinuxPacketFilter.c
@@ -518,6 +518,27 @@ EmuSnpReceive (
 }
 
 
+#if defined(__aarch64__)
+
+EMU_SNP_PROTOCOL gEmuSnpProtocol = {
+  EmuSnpCreateMapping,
+  EmuSnpStart,
+  EmuSnpStop,
+  EmuSnpInitialize,
+  EmuSnpReset,
+  EmuSnpShutdown,
+  EmuSnpReceiveFilters,
+  EmuSnpStationAddress,
+  EmuSnpStatistics,
+  EmuSnpMCastIpToMac,
+  EmuSnpNvData,
+  EmuSnpGetStatus,
+  EmuSnpTransmit,
+  EmuSnpReceive
+};
+
+#else
+
 EMU_SNP_PROTOCOL gEmuSnpProtocol = {
   GasketSnpCreateMapping,
   GasketSnpStart,
@@ -535,6 +556,8 @@ EMU_SNP_PROTOCOL gEmuSnpProtocol = {
   GasketSnpReceive
 };
 
+#endif
+
 EFI_STATUS
 EmuSnpThunkOpen (
   IN  EMU_IO_THUNK_PROTOCOL   *This
@@ -584,6 +607,19 @@ EmuSnpThunkClose (
 }
 
 
+#if defined(__aarch64__)
+
+EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {
+  &gEmuSnpProtocolGuid,
+  NULL,
+  NULL,
+  0,
+  EmuSnpThunkOpen,
+  EmuSnpThunkClose,
+  NULL
+};
+
+#else
 
 EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {
   &gEmuSnpProtocolGuid,
@@ -596,3 +632,5 @@ EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {
 };
 
 #endif
+
+#endif
diff --git a/EmulatorPkg/Unix/Host/PosixFileSystem.c b/EmulatorPkg/Unix/Host/PosixFileSystem.c
index 0a618abcd8..4676f2f933 100644
--- a/EmulatorPkg/Unix/Host/PosixFileSystem.c
+++ b/EmulatorPkg/Unix/Host/PosixFileSystem.c
@@ -53,6 +53,51 @@ typedef struct {
       EMU_EFI_FILE_PRIVATE_SIGNATURE \
       )
 
+EFI_STATUS
+PosixFileOpen (
+  IN EFI_FILE_PROTOCOL        *This,
+  OUT EFI_FILE_PROTOCOL       **NewHandle,
+  IN CHAR16                   *FileName,
+  IN UINT64                   OpenMode,
+  IN UINT64                   Attributes
+  );
+
+EFI_STATUS
+PosixFileCLose (
+  IN EFI_FILE_PROTOCOL  *This
+  );
+
+EFI_STATUS
+PosixFileDelete (
+  IN EFI_FILE_PROTOCOL  *This
+  );
+
+EFI_STATUS
+PosixFileRead (
+  IN EFI_FILE_PROTOCOL        *This,
+  IN OUT UINTN                *BufferSize,
+  OUT VOID                    *Buffer
+  );
+
+EFI_STATUS
+PosixFileWrite (
+  IN EFI_FILE_PROTOCOL        *This,
+  IN OUT UINTN                *BufferSize,
+  IN VOID                     *Buffer
+  );
+
+EFI_STATUS
+PosixFileGetPossition (
+  IN EFI_FILE_PROTOCOL        *This,
+  OUT UINT64                  *Position
+  );
+
+EFI_STATUS
+PosixFileSetPossition (
+  IN EFI_FILE_PROTOCOL        *This,
+  IN UINT64                   Position
+  );
+
 EFI_STATUS
 PosixFileGetInfo (
   IN EFI_FILE_PROTOCOL        *This,
@@ -69,6 +114,39 @@ PosixFileSetInfo (
   IN VOID                     *Buffer
   );
 
+EFI_STATUS
+PosixFileFlush (
+  IN EFI_FILE_PROTOCOL  *This
+  );
+
+EFI_STATUS
+PosixOpenVolume (
+  IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL    *This,
+  OUT EFI_FILE_PROTOCOL                 **Root
+  );
+
+#if defined(__aarch64__)
+
+EFI_FILE_PROTOCOL gPosixFileProtocol = {
+  EFI_FILE_REVISION,
+  PosixFileOpen,
+  PosixFileCLose,
+  PosixFileDelete,
+  PosixFileRead,
+  PosixFileWrite,
+  PosixFileGetPossition,
+  PosixFileSetPossition,
+  PosixFileGetInfo,
+  PosixFileSetInfo,
+  PosixFileFlush
+};
+
+EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gPosixFileSystemProtocol = {
+  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION,
+  PosixOpenVolume,
+};
+
+#else
 
 EFI_FILE_PROTOCOL gPosixFileProtocol = {
   EFI_FILE_REVISION,
@@ -89,6 +167,7 @@ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gPosixFileSystemProtocol = {
   GasketPosixOpenVolume,
 };
 
+#endif
 
 /**
   Open the root directory on a volume.
@@ -1573,6 +1652,19 @@ PosixFileSystmeThunkClose (
   return EFI_SUCCESS;
 }
 
+#if defined(__aarch64__)
+
+EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo = {
+  &gEfiSimpleFileSystemProtocolGuid,
+  NULL,
+  NULL,
+  0,
+  PosixFileSystmeThunkOpen,
+  PosixFileSystmeThunkClose,
+  NULL
+};
+
+#else
 
 EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo = {
   &gEfiSimpleFileSystemProtocolGuid,
@@ -1584,4 +1676,4 @@ EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo = {
   NULL
 };
 
-
+#endif
diff --git a/EmulatorPkg/Unix/Host/Pthreads.c b/EmulatorPkg/Unix/Host/Pthreads.c
index 025687c356..3613e4cf60 100644
--- a/EmulatorPkg/Unix/Host/Pthreads.c
+++ b/EmulatorPkg/Unix/Host/Pthreads.c
@@ -173,6 +173,20 @@ PthreadSelf (
   return (UINTN)pthread_self ();
 }
 
+#if defined(__aarch64__)
+
+EMU_THREAD_THUNK_PROTOCOL gPthreadThunk = {
+  PthreadMutexLock,
+  PthreadMutexUnLock,
+  PthreadMutexTryLock,
+  PthreadMutexInit,
+  PthreadMutexDestroy,
+  PthreadCreate,
+  PthreadExit,
+  PthreadSelf
+};
+
+#else
 
 EMU_THREAD_THUNK_PROTOCOL gPthreadThunk = {
   GasketPthreadMutexLock,
@@ -185,6 +199,7 @@ EMU_THREAD_THUNK_PROTOCOL gPthreadThunk = {
   GasketPthreadSelf
 };
 
+#endif
 
 EFI_STATUS
 PthreadOpen (
@@ -215,6 +230,19 @@ PthreadClose (
   return EFI_SUCCESS;
 }
 
+#if defined(__aarch64__)
+
+EMU_IO_THUNK_PROTOCOL gPthreadThunkIo = {
+  &gEmuThreadThunkProtocolGuid,
+  NULL,
+  NULL,
+  0,
+  PthreadOpen,
+  PthreadClose,
+  NULL
+};
+
+#else
 
 EMU_IO_THUNK_PROTOCOL gPthreadThunkIo = {
   &gEmuThreadThunkProtocolGuid,
@@ -226,4 +254,4 @@ EMU_IO_THUNK_PROTOCOL gPthreadThunkIo = {
   NULL
 };
 
-
+#endif
diff --git a/EmulatorPkg/Unix/Host/X11GraphicsWindow.c b/EmulatorPkg/Unix/Host/X11GraphicsWindow.c
index 5325a0e35b..cff8a6f7b9 100644
--- a/EmulatorPkg/Unix/Host/X11GraphicsWindow.c
+++ b/EmulatorPkg/Unix/Host/X11GraphicsWindow.c
@@ -918,6 +918,16 @@ X11GraphicsWindowOpen (
     return EFI_OUT_OF_RESOURCES;
   }
 
+#if defined(__aarch64__)
+  Drv->GraphicsIo.Size                = X11Size;
+  Drv->GraphicsIo.CheckKey            = X11CheckKey;
+  Drv->GraphicsIo.GetKey              = X11GetKey;
+  Drv->GraphicsIo.KeySetState         = X11KeySetState;
+  Drv->GraphicsIo.RegisterKeyNotify   = X11RegisterKeyNotify;
+  Drv->GraphicsIo.Blt                 = X11Blt;
+  Drv->GraphicsIo.CheckPointer        = X11CheckPointer;
+  Drv->GraphicsIo.GetPointerState     = X11GetPointerState;
+#else
   Drv->GraphicsIo.Size                = GasketX11Size;
   Drv->GraphicsIo.CheckKey            = GasketX11CheckKey;
   Drv->GraphicsIo.GetKey              = GasketX11GetKey;
@@ -926,6 +936,7 @@ X11GraphicsWindowOpen (
   Drv->GraphicsIo.Blt                 = GasketX11Blt;
   Drv->GraphicsIo.CheckPointer        = GasketX11CheckPointer;
   Drv->GraphicsIo.GetPointerState     = GasketX11GetPointerState;
+#endif
 
 
   Drv->key_count = 0;
@@ -1008,6 +1019,19 @@ X11GraphicsWindowClose (
   return EFI_SUCCESS;
 }
 
+#if defined(__aarch64__)
+
+EMU_IO_THUNK_PROTOCOL gX11ThunkIo = {
+  &gEmuGraphicsWindowProtocolGuid,
+  NULL,
+  NULL,
+  0,
+  X11GraphicsWindowOpen,
+  X11GraphicsWindowClose,
+  NULL
+};
+
+#else
 
 EMU_IO_THUNK_PROTOCOL gX11ThunkIo = {
   &gEmuGraphicsWindowProtocolGuid,
@@ -1019,4 +1043,4 @@ EMU_IO_THUNK_PROTOCOL gX11ThunkIo = {
   NULL
 };
 
-
+#endif
-- 
2.33.0


  parent reply	other threads:[~2021-10-09 15:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-09 15:49 [RFC PATCH 0/4] EmulatorPkg AArch64 Linux support retrage01
2021-10-09 15:49 ` [RFC PATCH 1/4] EmulatorPkg/Unix/Host: Fix typo Akira Moroo
2021-10-09 15:49 ` [RFC PATCH 2/4] EmulatorPkg/Sec: Add AArch64 support Akira Moroo
2021-10-09 15:49 ` Akira Moroo [this message]
2021-10-09 15:49 ` [RFC PATCH 4/4] EmulatorPkg: Add AArch64 Unix host build support Akira Moroo

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=a40af5f638c77429e21683aa80142960bab466fa.1633789833.git.retrage01@gmail.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