From patchwork Fri Sep 21 08:05:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 972903 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42GmQc1w4hz9s4Z for ; Fri, 21 Sep 2018 18:06:48 +1000 (AEST) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vRUjbRy+"; dkim-atps=neutral Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 42GmQc0LTXzF3SR for ; Fri, 21 Sep 2018 18:06:48 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vRUjbRy+"; dkim-atps=neutral X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::442; helo=mail-pf1-x442.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vRUjbRy+"; dkim-atps=neutral Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 42GmP43PCyzF3Pw for ; Fri, 21 Sep 2018 18:05:28 +1000 (AEST) Received: by mail-pf1-x442.google.com with SMTP id l9-v6so5618368pff.9 for ; Fri, 21 Sep 2018 01:05:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5prZNZAqKekUwrS2FUVcxp0C7USXFpYKuUtq7Fd686o=; b=vRUjbRy+dd06HOl8IRBYvIKPJthDTcRFGiuGlELsJsVeIKB7+lHXCTvU5rdNZcHnD5 EB5CtwVRBb303GIrkkv7a7+7Qd3xMxoVnfTHNVKrZgSXx5EiyRvWoFOGVUdKSogm6ngp WbO1IB+idk+q7VYjcr0jCHKHSY1t9uNZKGP1kfrPu/GsMqP7s9nutBLkZKBgeK0p2Moy C6NR1cFQ9zPChfc92aWonTxIhQx6eEdyKMGKv+sc0yw+4RUod8TMPCjfOStlvpm9EhCK phMcxxOMx3yXEqJyATNoMBtho3AYj3YCfHRRMsZ8rV9DPCxLK3C0oHUXbclSQYNkWwiQ tD/w== 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=5prZNZAqKekUwrS2FUVcxp0C7USXFpYKuUtq7Fd686o=; b=YVmRhDzUwrM3Mo0xxeRCDK18zEAvJBFajNTj7XGNib312QA3UKHMH0fy9PQ2Ey1lzS NLvW41ROBGHBS4Dlq/zNp5ZmXGYYoypi0ogTZzPlwsFPZXQ+HXGA+jRp2kVNrTIWJLcK G9j+j8YfXJVlKQGvNw5+2rFLsmS+vZKBua1pnq7vqqJXYHGDcw6IdVngoHmZIBrGwGFZ jIZADm+saCGCQSLJjy/lsdgxfL240ZNodOKvJf86Ql/dRFsP+qIlDp1b+DOSbYJjdOHI I1Z5p3PKnGfcGBjdT8BkFRCo2fwVpLDRtllmJYpdbGMC842vSzk0cLhhFEZGtqDBbm8/ BlQw== X-Gm-Message-State: APzg51AbuhW02kNygqqTomSs/pV7sHb/oDJgdHPT/NGa0AI2m7C22ftD vZk4M9rthz+TTeNuV/Ui5dkaoIs8 X-Google-Smtp-Source: ANB0VdZCyGEi8WHBOMMXCopx8eGQjjGSKk3CZLqoo+z0perZLv8lErT8jmhaIt7w39uc26HR6/zcOg== X-Received: by 2002:a63:5c10:: with SMTP id q16-v6mr40018583pgb.452.1537517126222; Fri, 21 Sep 2018 01:05:26 -0700 (PDT) Received: from roar.local0.net (14-202-184-212.tpgi.com.au. [14.202.184.212]) by smtp.gmail.com with ESMTPSA id p64-v6sm40865501pfa.47.2018.09.21.01.05.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 21 Sep 2018 01:05:25 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Fri, 21 Sep 2018 18:05:08 +1000 Message-Id: <20180921080511.22026-5-npiggin@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180921080511.22026-1-npiggin@gmail.com> References: <20180921080511.22026-1-npiggin@gmail.com> Subject: [Skiboot] [RFC PATCH 4/7] asm/head: use HSRR exception registers in FIXUP_ENDIAN X-BeenThere: skiboot@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list for skiboot development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Taken from the Linux FIXUP_ENDIAN_HV macro, use the HSRR registers in FIXUP_ENDIAN. This allows the 0x100 exception handler (the single user of the macro) to preserve SRR registers and potentially recover, debug, or do something useful with them. This also allows the maco to be used in code with MSR[RI]=1, if the need arises. Signed-off-by: Nicholas Piggin --- asm/head.S | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/asm/head.S b/asm/head.S index 8b9c0483..b7569d24 100644 --- a/asm/head.S +++ b/asm/head.S @@ -472,17 +472,18 @@ call_relocate: 1: /* Fatal relocate failure */ attn -#define FIXUP_ENDIAN \ - tdi 0,0,0x48; /* Reverse endian of b . + 8 */ \ - b $+36; /* Skip trampoline if endian is good */ \ - .long 0x05009f42; /* bcl 20,31,$+4 */ \ - .long 0xa602487d; /* mflr r10 */ \ - .long 0x1c004a39; /* addi r10,r10,28 */ \ - .long 0xa600607d; /* mfmsr r11 */ \ - .long 0x01006b69; /* xori r11,r11,1 */ \ - .long 0xa6035a7d; /* mtsrr0 r10 */ \ - .long 0xa6037b7d; /* mtsrr1 r11 */ \ - .long 0x2400004c /* rfid */ +#define FIXUP_ENDIAN \ + tdi 0,0,0x48; /* Reverse endian of b . + 8 */ \ + b 191f; /* Skip trampoline if endian is good */ \ + .long 0xa600607d; /* mfmsr r11 */ \ + .long 0x01006b69; /* xori r11,r11,1 */ \ + .long 0x05009f42; /* bcl 20,31,$+4 */ \ + .long 0xa602487d; /* mflr r10 */ \ + .long 0x14004a39; /* addi r10,r10,20 */ \ + .long 0xa64b5a7d; /* mthsrr0 r10 */ \ + .long 0xa64b7b7d; /* mthsrr1 r11 */ \ + .long 0x2402004c; /* hrfid */ \ +191: /* This is a little piece of code that is copied down to * 0x100 for handling power management wakeups