uboot/arch/sh/cpu/sh4/start.S
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2007, 2010
   3 * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation; either version 2 of
   8 * the License, or (at your option) any later version.
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 * GNU General Public License for more details.
  14 *
  15 * You should have received a copy of the GNU General Public License
  16 * along with this program; if not, write to the Free Software
  17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  18 * MA 02111-1307 USA
  19 */
  20
  21#include <asm-offsets.h>
  22#include <config.h>
  23#include <version.h>
  24
  25        .text
  26        .align  2
  27
  28        .global _start
  29_sh_start:
  30        mov.l   ._lowlevel_init, r0
  31100:    bsrf    r0
  32        nop
  33
  34        bsr     1f
  35        nop
  361:      sts     pr, r5
  37        mov.l   ._reloc_dst, r4
  38        add     #(_sh_start-1b), r5
  39        mov.l   ._reloc_dst_end, r6
  40
  412:      mov.l   @r5+, r1
  42        mov.l   r1, @r4
  43        add     #4, r4
  44        cmp/hs  r6, r4
  45        bf      2b
  46
  47        mov.l   ._bss_start, r4
  48        mov.l   ._bss_end, r5
  49        mov     #0, r1
  50
  513:      mov.l   r1, @r4                 /* bss clear */
  52        add     #4, r4
  53        cmp/hs  r5, r4
  54        bf      3b
  55
  56        mov.l   ._gd_init, r13          /* global data */
  57        mov.l   ._stack_init, r15       /* stack */
  58
  59        mov.l   ._sh_generic_init, r0
  60        jsr     @r0
  61        nop
  62
  63loop:
  64        bra     loop
  65
  66        .align  2
  67
  68._lowlevel_init:        .long   (lowlevel_init - (100b + 4))
  69._reloc_dst:            .long   reloc_dst
  70._reloc_dst_end:        .long   reloc_dst_end
  71._bss_start:            .long   bss_start
  72._bss_end:              .long   bss_end
  73._gd_init:              .long   (_sh_start - GENERATED_GBL_DATA_SIZE)
  74._stack_init:           .long   (_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16)
  75._sh_generic_init:      .long   sh_generic_init
  76