root/arch/sh/boot/romimage/head.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  *  linux/arch/sh/boot/romimage/head.S
   4  *
   5  * Board specific setup code, executed before zImage loader
   6  */
   7 
   8 .text
   9         #include <asm/page.h>
  10 
  11         .global romstart
  12 romstart:
  13         /* include board specific setup code */
  14 #include <mach/romimage.h>
  15 
  16 #ifdef CONFIG_ROMIMAGE_MMCIF
  17         /* load the romImage to above the empty zero page */
  18         mov.l   empty_zero_page_dst, r4
  19         mov.l   empty_zero_page_dst_adj, r5
  20         add     r5, r4
  21         mov.l   bytes_to_load, r5
  22         mov.l   loader_function, r7
  23         jsr     @r7
  24          mov    r4, r15
  25 
  26         mov.l   empty_zero_page_dst, r4
  27         mov.l   empty_zero_page_dst_adj, r5
  28         add     r5, r4
  29         mov.l   loaded_code_offs, r5
  30         add     r5, r4
  31         jmp     @r4
  32          nop
  33 
  34         .balign 4
  35 empty_zero_page_dst_adj:
  36         .long   PAGE_SIZE
  37 bytes_to_load:
  38         .long   end_data - romstart
  39 loader_function:
  40         .long   mmcif_loader
  41 loaded_code_offs:
  42         .long   loaded_code - romstart
  43 loaded_code:
  44 #endif /* CONFIG_ROMIMAGE_MMCIF */
  45 
  46         /* copy the empty_zero_page contents to where vmlinux expects it */
  47         mova    extra_data_pos, r0
  48         mov.l   extra_data_size, r1
  49         add     r1, r0
  50         mov.l   empty_zero_page_dst, r1
  51         mov     #(PAGE_SHIFT - 4), r4
  52         mov     #1, r3
  53         shld    r4, r3 /* r3 = PAGE_SIZE / 16 */
  54 
  55 1:
  56         mov.l   @r0, r4
  57         mov.l   @(4, r0), r5
  58         mov.l   @(8, r0), r6
  59         mov.l   @(12, r0), r7
  60         add     #16,r0
  61         mov.l   r4, @r1
  62         mov.l   r5, @(4, r1)
  63         mov.l   r6, @(8, r1)
  64         mov.l   r7, @(12, r1)
  65         dt      r3
  66         add     #16,r1
  67         bf      1b
  68 
  69         /* jump to the zImage entry point located after the zero page data */
  70         mov     #PAGE_SHIFT, r4
  71         mov     #1, r1
  72         shld    r4, r1
  73         mova    extra_data_pos, r0
  74         add     r1, r0
  75         mov.l   extra_data_size, r1
  76         add     r1, r0
  77         jmp     @r0
  78          nop
  79 
  80         .align 2
  81 empty_zero_page_dst:
  82         .long   _text
  83 extra_data_pos:
  84 extra_data_size:
  85         .long   zero_page_pos - extra_data_pos

/* [<][>][^][v][top][bottom][index][help] */