From patchwork Wed Jul 22 15:49:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 498646 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 8D38B1402AE for ; Thu, 23 Jul 2015 01:51:33 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b=eqpBV0ua; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 352234B807; Wed, 22 Jul 2015 17:51:25 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sWprvC6TBGFE; Wed, 22 Jul 2015 17:51:25 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 921A84B7B6; Wed, 22 Jul 2015 17:51:03 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id E9F864B79B for ; Wed, 22 Jul 2015 17:50:51 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HdMw7b6sJgza for ; Wed, 22 Jul 2015 17:50:51 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-ig0-f182.google.com (mail-ig0-f182.google.com [209.85.213.182]) by theia.denx.de (Postfix) with ESMTPS id 1DEA74B7AE for ; Wed, 22 Jul 2015 17:50:49 +0200 (CEST) Received: by igr7 with SMTP id 7so71651101igr.0 for ; Wed, 22 Jul 2015 08:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=jByDAv1uk8nhxJINYP+dPZUGcuotVf44TPJBzLIDz5g=; b=eqpBV0uaR0TUbq/F6VXQX7GqlkuMF7zxWWlrUhn0oIINOCFTdApORgcqLq1puBKYju QyBI/RKuHSjnAgOxwkganvKGGcCm8VOb/TfmjdPsfnLl+23BGQzmoUgi074rpBSocdzL nXOeiYf7GH2fmyeM3VkOMSIFNbO3FyEs+M5Ev7LGGXpv4sVRVX3yogkXHUAKdZ8pkLhx rgMlddR064MBYjpdMLJH84av8xKxflWsyyptrUgY192+z9ffxnNyQE+BiP6emv4osst4 RWmDSRkR8oAAyIONgZTOT46ArHPqySkSk8sMN8eq8Xfy69ooKinhsHYhgUtdaKLyQtn9 cr9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=jByDAv1uk8nhxJINYP+dPZUGcuotVf44TPJBzLIDz5g=; b=NAYB1XoKuUxxLlw1bWUHuiSDTWrBFaaWtdB7Nj8JUrML4JzjMhanvDt2RfAfDYAXg2 XRces7VahT/IyoUZ0CqdmOjwBC6nMo6pbFc6mhBFUmAq3MXbr5V6A7iR5sF1MEywCZXo 2OFQ/seoIARsGjkvR2apCuWliRBbBiodM6MAEA/go8jDW9Lw/teOFrnvVJeEOvAoBGP2 CMxGjeSO6INylflIpKTcIVoGGMr4WrWZrzXwvdCaRM1KOt89W1MT4mz+Daa6RkZQIZF1 OHlDbLIyoUYvyQhEsZ05Xo3R07Qmq98KYdpGLRvUvrVJzTLGxyeDIH3PpKFnm3CPrpMC 8sbw== X-Gm-Message-State: ALoCoQnFRRgzIK0durRSN8X+zdUzWzzSWzPKWxUQg8zmamflz/Mver0BOhAyZ0RCazXRzx+6nN+D X-Received: by 10.50.39.80 with SMTP id n16mr7434741igk.76.1437580247965; Wed, 22 Jul 2015 08:50:47 -0700 (PDT) Received: from kaki.bld.corp.google.com ([172.29.216.32]) by smtp.gmail.com with ESMTPSA id o2sm1544574igr.9.2015.07.22.08.50.44 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Jul 2015 08:50:46 -0700 (PDT) Received: by kaki.bld.corp.google.com (Postfix, from userid 121222) id 5215822120E; Wed, 22 Jul 2015 09:50:42 -0600 (MDT) From: Simon Glass To: U-Boot Mailing List Date: Wed, 22 Jul 2015 09:49:00 -0600 Message-Id: <1437580180-6405-9-git-send-email-sjg@chromium.org> X-Mailer: git-send-email 2.4.3.573.g4eafbef In-Reply-To: <1437580180-6405-1-git-send-email-sjg@chromium.org> References: <1437580180-6405-1-git-send-email-sjg@chromium.org> Cc: Tom Rini , Rob Herring , Graeme Russ Subject: [U-Boot] [PATCH 08/48] x86: Add various minor tidy-ups to the 32-bit startup code X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" Fix a typo, improve some comments and add a little more detail in some cases. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- arch/x86/cpu/start.S | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S index 00e585e..7ef8b88 100644 --- a/arch/x86/cpu/start.S +++ b/arch/x86/cpu/start.S @@ -25,11 +25,11 @@ .globl _x86boot_start _x86boot_start: /* - * This is the fail safe 32-bit bootstrap entry point. The - * following code is not executed from a cold-reset (actually, a - * lot of it is, but from real-mode after cold reset. It is - * repeated here to put the board into a state as close to cold - * reset as necessary) + * This is the fail-safe 32-bit bootstrap entry point. + * + * This code is used when booting from another boot loader like + * coreboot or EFI. So we repeat some of the same init found in + * start16. */ cli cld @@ -45,15 +45,15 @@ _x86boot_start: jmp 1f _start: /* - * This is the 32-bit cold-reset entry point. Initialize %bx to 0 - * in case we're preceeded by some sort of boot stub. + * This is the 32-bit cold-reset entry point, coming from start16. + * Set %bx to 0 to indicate this. */ movw $GD_FLG_COLD_BOOT, %bx 1: /* Save BIST */ movl %eax, %ebp - /* Load the segement registes to match the gdt loaded in start16.S */ + /* Load the segement registers to match the GDT loaded in start16.S */ movl $(X86_GDT_ENTRY_32BIT_DS * X86_GDT_ENTRY_SIZE), %eax movw %ax, %fs movw %ax, %ds @@ -64,7 +64,11 @@ _start: /* Clear the interrupt vectors */ lidt blank_idt_ptr - /* Early platform init (setup gpio, etc ) */ + /* + * Critical early platform init - generally not used, we prefer init + * to happen later when we have a console, in case something goes + * wrong. + */ jmp early_board_init .globl early_board_init_ret early_board_init_ret: @@ -79,7 +83,7 @@ car_init_ret: * We now have CONFIG_SYS_CAR_SIZE bytes of Cache-As-RAM (or SRAM, * or fully initialised SDRAM - we really don't care which) * starting at CONFIG_SYS_CAR_ADDR to be used as a temporary stack - * and early malloc area. The MRC requires some space at the top. + * and early malloc() area. The MRC requires some space at the top. * * Stack grows down from top of CAR. We have: * @@ -97,7 +101,7 @@ car_init_ret: #endif #else /* - * When we get here after car_init, esp points to a temporary stack + * When we get here after car_init(), esp points to a temporary stack * and esi holds the HOB list address returned by the FSP. */ #endif @@ -137,17 +141,18 @@ skip_hob: movl %esp, %ecx #if defined(CONFIG_SYS_MALLOC_F_LEN) + /* Set up the pre-relocation malloc pool */ subl $CONFIG_SYS_MALLOC_F_LEN, %esp movl %eax, %edx addl $GD_MALLOC_BASE, %edx movl %esp, (%edx) #endif - /* Store BIST */ + /* Store BIST into global_data */ movl %eax, %edx addl $GD_BIST, %edx movl %ebp, (%edx) - /* Set second parameter to setup_gdt */ + /* Set second parameter to setup_gdt() */ movl %ecx, %edx /* Setup global descriptor table so gd->xyz works */ @@ -157,7 +162,7 @@ skip_hob: post_code(POST_START_DONE) xorl %eax, %eax - /* Enter, U-boot! */ + /* Enter, U-Boot! */ call board_init_f /* indicate (lack of) progress */ @@ -184,13 +189,13 @@ board_init_f_r_trampoline: /* Align global data to 16-byte boundary */ andl $0xfffffff0, %esp - /* Setup first parameter to memcpy (and setup_gdt) */ + /* Setup first parameter to memcpy() and setup_gdt() */ movl %esp, %eax - /* Setup second parameter to memcpy */ + /* Setup second parameter to memcpy() */ fs movl 0, %edx - /* Set third parameter to memcpy */ + /* Set third parameter to memcpy() */ movl $GENERATED_GBL_DATA_SIZE, %ecx /* Copy global data from CAR to SDRAM stack */ @@ -202,7 +207,7 @@ board_init_f_r_trampoline: /* Align global descriptor table to 16-byte boundary */ andl $0xfffffff0, %esp - /* Set second parameter to setup_gdt */ + /* Set second parameter to setup_gdt() */ movl %esp, %edx /* Setup global descriptor table so gd->xyz works */ @@ -216,7 +221,7 @@ board_init_f_r_trampoline: call car_uninit 1: - /* Re-enter U-Boot by calling board_init_f_r */ + /* Re-enter U-Boot by calling board_init_f_r() */ call board_init_f_r die: @@ -230,9 +235,10 @@ blank_idt_ptr: .p2align 2 /* force 4-byte alignment */ + /* Add a multiboot header so U-Boot can be loaded by GRUB2 */ multiboot_header: /* magic */ - .long 0x1BADB002 + .long 0x1badb002 /* flags */ .long (1 << 16) /* checksum */