From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::543; helo=mail-pg1-x543.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E56082119173B for ; Fri, 16 Nov 2018 14:56:06 -0800 (PST) Received: by mail-pg1-x543.google.com with SMTP id v28so707396pgk.10 for ; Fri, 16 Nov 2018 14:56:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zJT5TTpHNqpk1frJTVhczwwfwv06AyYLP6q1lJXOKMA=; b=C14g9E4Nzr9k9Qqccdtxoh2aQId0KPiiwyrbxGIpDUZd5Yl8mU2ptXcGO3hKt84dPc 1Ofn6Mbk6GtCynNpWaPrVFRbPlrFaILuSE924bVs/1FghRSs44BXgL9fhmtR4G7ZcLVw JYPGanJ6KU2zmUvJ5k+eEZY9Xs5NXW4EhaX+s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zJT5TTpHNqpk1frJTVhczwwfwv06AyYLP6q1lJXOKMA=; b=VpMC5mFxnjJk627or6NHcruCH7Y68oCOkfV6yBFIe0B87yqxcdqXpehTA7Ulu3T94I 2bPbqax8rKUq3o227IMhqQy1DBWX8In8HoV0n5uiA/EuZ0XPPb7EwkT8HwI3A5VDnbQR g7O0HMdK5+a+IoRrZPRiU0tog3aKvoeFh1EhQRgPgUJm8IVrsZwXL3DUe23Gi/uzXthU ixb3uii6ARLavAcPSCOew03qSads5mgu3LumzcDCOaLY7FC0mgEzGRYskHwvbeeS3R1Q 6Nf4NoTW4rGw7dEvCH7B5i7k91vyQDfGRz0/s1d8aph0VyWuqc3xsVoErhrJRjZmP0Yu VCiA== X-Gm-Message-State: AGRZ1gKFvlkFZYnAxQ5skynP3i17lVyaB1s3OxStHjv6HkfJ0ag4G42d OFHoUFCXd6JeAZtOzxw8IoQjCeM82AfT8w== X-Google-Smtp-Source: AJdET5chKu9huuuRW4DYm2ifTbZAr8kJc2fVULoYhjWDs6WlP+UbZkexzLxb65JNY6fj9hL/6VOXdA== X-Received: by 2002:a62:81c1:: with SMTP id t184mr6060789pfd.246.1542408966352; Fri, 16 Nov 2018 14:56:06 -0800 (PST) Received: from mba13.psav.com ([64.114.255.114]) by smtp.gmail.com with ESMTPSA id r6sm41670483pgk.91.2018.11.16.14.56.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Nov 2018 14:56:05 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Cc: lersek@redhat.com, leif.lindholm@linaro.org, philmd@redhat.com, Ard Biesheuvel Date: Fri, 16 Nov 2018 14:55:58 -0800 Message-Id: <20181116225558.27720-3-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181116225558.27720-1-ard.biesheuvel@linaro.org> References: <20181116225558.27720-1-ard.biesheuvel@linaro.org> Subject: [PATCH 2/2] ArmVirtPkg/PrePi: clear frame pointer in startup code X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Nov 2018 22:56:07 -0000 When setting up the stack in the startup code and jumping into C code for the first time, ensure that the frame pointer register is cleared so that backtraces terminate correctly. Otherwise, output like the below is shown when encountering an exception on a DEBUG build: Synchronous Exception at 0x0000000078A14780 PC 0x000078A14780 (0x000078A00000+0x00014780) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A10634 (0x000078A00000+0x00010634) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A11CF0 (0x000078A00000+0x00011CF0) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A11DD0 (0x000078A00000+0x00011DD0) [ 0] ArmVeNorFlashDxe.dll PC 0x00007BC9D87C (0x00007BC98000+0x0000587C) [ 1] PartitionDxe.dll PC 0x00007BC99B3C (0x00007BC98000+0x00001B3C) [ 1] PartitionDxe.dll PC 0x00007F362F50 (0x00007F359000+0x00009F50) [ 2] DxeCore.dll PC 0x00007BD63BB0 (0x00007BD5B000+0x00008BB0) [ 3] BdsDxe.dll PC 0x00007BD6EE00 (0x00007BD5B000+0x00013E00) [ 3] BdsDxe.dll PC 0x00007BD67C70 (0x00007BD5B000+0x0000CC70) [ 3] BdsDxe.dll PC 0x00007F3724F0 (0x00007F359000+0x000194F0) [ 4] DxeCore.dll PC 0x00004008FC30 PC 0x000040090130 PC 0x5800F6025800F5E1 Recursive exception occurred while dumping the CPU state which is rather unhelpful, given that this prevent the remaining debug output from being printed (register dump, stack dump, fault related system registers etc) Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S index 891cf1fcab40..86b9fbee6e67 100644 --- a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S +++ b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S @@ -121,6 +121,9 @@ _GetStackBase: mov x1, x21 mov x2, x22 + // Set the frame pointer to 0x0 so any backtraces terminate here + mov x29, xzr + // Jump to PrePiCore C code // x0 = MpId // x1 = UefiMemoryBase -- 2.17.1