From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by mx.groups.io with SMTP id smtpd.web09.8107.1633794638978202275 for ; Sat, 09 Oct 2021 08:50:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ocUCie4U; spf=pass (domain: gmail.com, ip: 209.85.214.181, mailfrom: retrage01@gmail.com) Received: by mail-pl1-f181.google.com with SMTP id t11so8132003plq.11 for ; Sat, 09 Oct 2021 08:50:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rlpCDcs9d9H3kKfN/+dtBreuJmVKS91Y25XYwJGrLGQ=; b=ocUCie4UOk82uM9oQSA0EKHkWEOgsURi2qGEe4DqGxRnNlNpVJ+8KG7dUuxSHlHdLC eqKDHF513sgcIOdKdO2Wxec2AbTFrmHYtxZaL39066HXMPAulnacBztrlCn8fqa3/QHX j8w+0HL286bWbOL88Tr+r6+MrUrsADgjbKVsqHPWqzL5GRi3KSTrNLT9cryOdlHnl2nG SeaqiS2boj0BR6sx+UvpHirZtKBrwoJ2ajrGEgwo7rnjJwtRMN7FwCrA1AI5G1t+vZk2 vAeVNRNLsETDO3aRQWCjzQU7sOOvny+x6EQewfmcAKIcd7ggoV0EtaHF1wbdxHekGyTr EZuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rlpCDcs9d9H3kKfN/+dtBreuJmVKS91Y25XYwJGrLGQ=; b=wE4Aa/RP+sqdvTQ7VsEKcAv6eJ9A5Fk9dQx6QiHhJyVkcS0miEd3YWihZzYeU14vLZ ZgAx63lleiBXiN0ZLEHQwEHG43owfXVycwuscrHJ0SubZBeaHhnugO/52xMK1elZMqQx xFZW3JOydbjmOgQDuj1LxVbBoKTTGEBXWgbl9X9zyzYL1V+z1AhCzQh9alP6f/5ZA/bG zUAEPpxXklgXz5RIhKuCcpStVn+hXP4VSBqhj29GKq2nXikFL61/jyTTb8VbWpNqVA2L r/6gDlPqMxj6ht9cB1t78Y+82lT+kLXNM3sL3XBqJ8VN1Lmmwd4SpfufbAkzxZ8BxduY 9cmQ== X-Gm-Message-State: AOAM5303fcxZn+LfWiQLH46oNzUQRGU43G+XB4wbMPo+fHqFC121N8za 3lLocazcgFKg92g+AkL+d4/AAsIla4M0M7M= X-Google-Smtp-Source: ABdhPJz+I8eg+bpTb27AJVpn/8cWsFNCZWcI4a6116t+HbUOkLofK7AUm6J2mY1SiduHNlZKI3J04w== X-Received: by 2002:a17:90a:fb4a:: with SMTP id iq10mr4378177pjb.117.1633794638591; Sat, 09 Oct 2021 08:50:38 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([240d:1a:ada:4400:d496:915d:ba15:739a]) by smtp.gmail.com with ESMTPSA id z2sm2633255pfe.210.2021.10.09.08.50.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 09 Oct 2021 08:50:38 -0700 (PDT) From: "Akira Moroo" To: devel@edk2.groups.io Cc: afish@apple.com, ray.ni@intel.com, Akira Moroo Subject: [RFC PATCH 2/4] EmulatorPkg/Sec: Add AArch64 support Date: Sun, 10 Oct 2021 00:49:16 +0900 Message-Id: <963e9d53c9011af94afeeea1ddb39ec171329ab5.1633789833.git.retrage01@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This commit adds AArch64 support to EmulatorPkg/Sec. The architecture specific part is switching stack from temporary to permanent. Signed-off-by: Akira Moroo --- EmulatorPkg/Sec/AArch64/SwitchRam.S | 22 +++++++++++ EmulatorPkg/Sec/AArch64/TempRam.c | 58 +++++++++++++++++++++++++++++ EmulatorPkg/Sec/Sec.inf | 4 ++ 3 files changed, 84 insertions(+) create mode 100644 EmulatorPkg/Sec/AArch64/SwitchRam.S create mode 100644 EmulatorPkg/Sec/AArch64/TempRam.c diff --git a/EmulatorPkg/Sec/AArch64/SwitchRam.S b/EmulatorPkg/Sec/AArch64/= SwitchRam.S new file mode 100644 index 0000000000..9ec8ddd627 --- /dev/null +++ b/EmulatorPkg/Sec/AArch64/SwitchRam.S @@ -0,0 +1,22 @@ +#-------------------------------------------------------------------------= -----=0D +#=0D +# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
=0D +# Portions copyright (c) 2011, Apple Inc. All rights reserved.=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +#-------------------------------------------------------------------------= -----=0D +=0D +=0D +// VOID=0D +// EFIAPI=0D +// SecSwitchStack (=0D +// VOID *StackDelta=0D +// )=0D +//=0D +ASM_GLOBAL ASM_PFX(SecSwitchStack)=0D +ASM_PFX(SecSwitchStack):=0D + mov x1, sp=0D + add x1, x0, x1=0D + mov sp, x1=0D + ret=0D +=0D diff --git a/EmulatorPkg/Sec/AArch64/TempRam.c b/EmulatorPkg/Sec/AArch64/Te= mpRam.c new file mode 100644 index 0000000000..cce1dc559a --- /dev/null +++ b/EmulatorPkg/Sec/AArch64/TempRam.c @@ -0,0 +1,58 @@ +/*++ @file=0D + Temp RAM PPI=0D +=0D +Copyright (c) 2011, Apple Inc. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include =0D +#include =0D +#include =0D +=0D +#include =0D +=0D +VOID=0D +EFIAPI=0D +SecSwitchStack (=0D + VOID *StackDelta=0D + );=0D +=0D +=0D +EFI_STATUS=0D +EFIAPI=0D +SecTemporaryRamSupport (=0D + IN CONST EFI_PEI_SERVICES **PeiServices,=0D + IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,=0D + IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,=0D + IN UINTN CopySize=0D + )=0D +{=0D + //=0D + // Migrate the whole temporary memory to permanent memory.=0D + //=0D + CopyMem (=0D + (VOID*)(UINTN)PermanentMemoryBase,=0D + (VOID*)(UINTN)TemporaryMemoryBase,=0D + CopySize=0D + );=0D +=0D + //=0D + // SecSwitchStack function must be invoked after the memory migration=0D + // immediately, also we need fixup the stack change caused by new call i= nto=0D + // permanent memory.=0D + //=0D + SecSwitchStack ((VOID *)(PermanentMemoryBase - TemporaryMemoryBase));=0D +=0D + //=0D + // We need *not* fix the return address because currently,=0D + // The PeiCore is executed in flash.=0D + //=0D +=0D + //=0D + // Simulate to invalid temporary memory, terminate temporary memory=0D + //=0D + ZeroMem ((VOID*)(UINTN)TemporaryMemoryBase, CopySize);=0D +=0D + return EFI_SUCCESS;=0D +}=0D diff --git a/EmulatorPkg/Sec/Sec.inf b/EmulatorPkg/Sec/Sec.inf index 2f9e3d4780..83248fbaca 100644 --- a/EmulatorPkg/Sec/Sec.inf +++ b/EmulatorPkg/Sec/Sec.inf @@ -30,6 +30,10 @@ Ia32/SwitchRam.asm=0D Ia32/SwitchRam.S=0D =0D +[Sources.AARCH64]=0D + AArch64/TempRam.c=0D + AArch64/SwitchRam.S=0D +=0D [Packages]=0D MdePkg/MdePkg.dec=0D EmulatorPkg/EmulatorPkg.dec=0D --=20 2.33.0