lkml.org 
[lkml]   [2013]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 113/212] avr32: setup crt for early panic()
    Date
    3.12-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Andreas Bießmann <andreas@biessmann.de>

    commit 7a2a74f4b856993218aa7cdeeb6c3103101340db upstream.

    Before the CRT was (fully) set up in kernel_entry (bss cleared before in
    _start, but also not before jump to panic() in no_tag_table case).

    This patch fixes this up to have a fully working CRT when branching to panic()
    in no_tag_table.

    Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
    Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
    Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/avr32/boot/u-boot/head.S | 30 +++++++++++++++++++++++++-----
    arch/avr32/kernel/head.S | 20 --------------------
    2 files changed, 25 insertions(+), 25 deletions(-)

    --- a/arch/avr32/boot/u-boot/head.S
    +++ b/arch/avr32/boot/u-boot/head.S
    @@ -8,6 +8,8 @@
    * published by the Free Software Foundation.
    */
    #include <asm/setup.h>
    +#include <asm/thread_info.h>
    +#include <asm/sysreg.h>

    /*
    * The kernel is loaded where we want it to be and all caches
    @@ -20,11 +22,6 @@
    .section .init.text,"ax"
    .global _start
    _start:
    - /* Check if the boot loader actually provided a tag table */
    - lddpc r0, magic_number
    - cp.w r12, r0
    - brne no_tag_table
    -
    /* Initialize .bss */
    lddpc r2, bss_start_addr
    lddpc r3, end_addr
    @@ -34,6 +31,25 @@ _start:
    cp r2, r3
    brlo 1b

    + /* Initialize status register */
    + lddpc r0, init_sr
    + mtsr SYSREG_SR, r0
    +
    + /* Set initial stack pointer */
    + lddpc sp, stack_addr
    + sub sp, -THREAD_SIZE
    +
    +#ifdef CONFIG_FRAME_POINTER
    + /* Mark last stack frame */
    + mov lr, 0
    + mov r7, 0
    +#endif
    +
    + /* Check if the boot loader actually provided a tag table */
    + lddpc r0, magic_number
    + cp.w r12, r0
    + brne no_tag_table
    +
    /*
    * Save the tag table address for later use. This must be done
    * _after_ .bss has been initialized...
    @@ -53,6 +69,10 @@ bss_start_addr:
    .long __bss_start
    end_addr:
    .long _end
    +init_sr:
    + .long 0x007f0000 /* Supervisor mode, everything masked */
    +stack_addr:
    + .long init_thread_union

    no_tag_table:
    sub r12, pc, (. - 2f)
    --- a/arch/avr32/kernel/head.S
    +++ b/arch/avr32/kernel/head.S
    @@ -10,33 +10,13 @@
    #include <linux/linkage.h>

    #include <asm/page.h>
    -#include <asm/thread_info.h>
    -#include <asm/sysreg.h>

    .section .init.text,"ax"
    .global kernel_entry
    kernel_entry:
    - /* Initialize status register */
    - lddpc r0, init_sr
    - mtsr SYSREG_SR, r0
    -
    - /* Set initial stack pointer */
    - lddpc sp, stack_addr
    - sub sp, -THREAD_SIZE
    -
    -#ifdef CONFIG_FRAME_POINTER
    - /* Mark last stack frame */
    - mov lr, 0
    - mov r7, 0
    -#endif
    -
    /* Start the show */
    lddpc pc, kernel_start_addr

    .align 2
    -init_sr:
    - .long 0x007f0000 /* Supervisor mode, everything masked */
    -stack_addr:
    - .long init_thread_union
    kernel_start_addr:
    .long start_kernel

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2013-12-03 07:41    [W:2.079 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site