From patchwork Tue Nov 14 01:55:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 837654 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="I2ShYAaw"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ybVz56Mzqz9s7G for ; Tue, 14 Nov 2017 12:58:25 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 98CCCC21EBD; Tue, 14 Nov 2017 01:58:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 194C2C21F02; Tue, 14 Nov 2017 01:55:54 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 9C49CC21EE4; Tue, 14 Nov 2017 01:55:28 +0000 (UTC) Received: from mail-oi0-f67.google.com (mail-oi0-f67.google.com [209.85.218.67]) by lists.denx.de (Postfix) with ESMTPS id 4030FC21EDD for ; Tue, 14 Nov 2017 01:55:23 +0000 (UTC) Received: by mail-oi0-f67.google.com with SMTP id r128so12672289oig.9 for ; Mon, 13 Nov 2017 17:55:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=BzME2jKuOnLPRfmqiiZmFBZCTN/gdpNTnGmiY5pnBFc=; b=I2ShYAawhQwwUNNlrMmbPEXAfJu8yKWyxUYD7R67jAKHtTV2z1sfjzSXu+vfQSoa1P RDv2y3qIyw8APs11utaUZtOKiBSnjrUuF5TdzDOf8172wJu3U8wqB2tvTnnuHbpVn/eu wsMji3Ak41KA5JvguQmweBU0Z7SjKmcx0OkohrIPkmXXtpvuj/FTqPl3KMThvbRCCHwb WdL6NFBphCPhrhI543ypuftJb+ZDzHCeH7aSmAin5uyP0XsK0wZNfgvk3oAccVv7EfUp K6/xR3FQ7th/JKfJ481wl3MziskCFvCRwpuMqncY81P4dvIvpNH/MLgY+QEvtfLyF2+a /1ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=BzME2jKuOnLPRfmqiiZmFBZCTN/gdpNTnGmiY5pnBFc=; b=LME6rvhVxc0y02gSBa/tg6MMXfZTg19WKJjN85YJJZKKNA+CfAMmVoJRcVXLtunU0K 3jxLn3qtQc6serSsQxFB71RMwfX1RUva3r2wiTlSYDc1pr2SKubW6ep7bhCDuLOkm6DK Y0pSyPT9J1rVFwY6ksKZdhYm3n8W6X+vpaE0Ow21IRHZqtB1ORILmbr8WLeIVG6cYun3 NkjMXbabgLGDkO1Csy7AoFYGkT/Do7AXk+dmHGo+lfZpLqDjkXDgcHBKSflqj4r8zSj5 mR5J5OSBKYwt/SIPRQ+RSy3PHeNvTNbvxFBgC9NgSnK6hvkK8I9bLgCuJAmwIaTe8ea7 iPGQ== X-Gm-Message-State: AJaThX4vluQymtPOGhhoyRAOeTPfCDtKG4bw+t8n+bWc49q7H+G/1lpj M5mtipsAjT0e5bbHPpWjB9Tp2g== X-Google-Smtp-Source: AGs4zMbVLI9CJ47OzYxSVPXwPPzDbk4iQOV6B+NGQhENnbu3VPNTl6I9ki9kmLvYgTCU2eT3m8zm/A== X-Received: by 10.202.240.137 with SMTP id o131mr6794327oih.407.1510624521656; Mon, 13 Nov 2017 17:55:21 -0800 (PST) Received: from kiwi.bld.corp.google.com ([100.101.164.89]) by smtp.gmail.com with ESMTPSA id v33sm5548704ota.29.2017.11.13.17.55.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Nov 2017 17:55:21 -0800 (PST) Received: by kiwi.bld.corp.google.com (Postfix, from userid 121222) id 753F8141AE7; Mon, 13 Nov 2017 18:55:20 -0700 (MST) From: Simon Glass To: U-Boot Mailing List Date: Mon, 13 Nov 2017 18:55:03 -0700 Message-Id: <20171114015506.25673-11-sjg@chromium.org> X-Mailer: git-send-email 2.15.0.448.gf294e3d99a-goog In-Reply-To: <20171114015506.25673-1-sjg@chromium.org> References: <20171114015506.25673-1-sjg@chromium.org> Cc: Tom Rini Subject: [U-Boot] [PATCH 10/13] binman: Add binman symbol support to SPL X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Allow SPL to access binman symbols and use this to get the address of U-Boot. This falls back to CONFIG_SYS_TEXT_BASE if the binman symbol is not available. Signed-off-by: Simon Glass Signed-off-by: Simon Glass --- common/spl/spl.c | 16 ++++++++++++++-- include/spl.h | 11 +++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/common/spl/spl.c b/common/spl/spl.c index aaddddd9958..9e4a1ad0edc 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -32,6 +33,9 @@ DECLARE_GLOBAL_DATA_PTR; u32 *boot_params_ptr = NULL; +/* See spl.h for information about this */ +binman_sym_declare(ulong, u_boot_any, pos); + /* Define board data structure */ static bd_t bdata __attribute__ ((section(".data"))); @@ -120,9 +124,17 @@ __weak void spl_board_prepare_for_boot(void) void spl_set_header_raw_uboot(struct spl_image_info *spl_image) { + ulong u_boot_pos = binman_sym(ulong, u_boot_any, pos); + spl_image->size = CONFIG_SYS_MONITOR_LEN; - spl_image->entry_point = CONFIG_SYS_UBOOT_START; - spl_image->load_addr = CONFIG_SYS_TEXT_BASE; + if (u_boot_pos != BINMAN_SYM_MISSING) { + /* biman does not support separate entry addresses at present */ + spl_image->entry_point = u_boot_pos; + spl_image->load_addr = u_boot_pos; + } else { + spl_image->entry_point = CONFIG_SYS_UBOOT_START; + spl_image->load_addr = CONFIG_SYS_TEXT_BASE; + } spl_image->os = IH_OS_U_BOOT; spl_image->name = "U-Boot"; } diff --git a/include/spl.h b/include/spl.h index b14a29c57cc..36af553c167 100644 --- a/include/spl.h +++ b/include/spl.h @@ -7,6 +7,8 @@ #ifndef _SPL_H_ #define _SPL_H_ +#include + /* Platform-specific defines */ #include #include @@ -48,6 +50,15 @@ struct spl_load_info { void *buf); }; +/* + * We need to know the position of U-Boot in memory so we can jump to it. We + * allow any U-Boot binary to be used (u-boot.bin, u-boot-nodtb.bin, + * u-boot.img), hence the '_any'. These is no checking here that the correct + * image is found. For * example if u-boot.img is used we don't check that + * spl_parse_image_header() can parse a valid header. + */ +extern binman_sym_declare(ulong, u_boot_any, pos); + /** * spl_load_simple_fit() - Loads a fit image from a device. * @spl_image: Image description to set up