Path: blob/master/arch/sh/boot/compressed/head_32.S
10819 views
/*1* linux/arch/sh/boot/compressed/head.S2*3* Copyright (C) 1999 Stuart Menefy4* Copyright (C) 2003 SUGIOKA Toshinobu5*/67.text89#include <asm/page.h>1011.global startup12startup:13/* Load initial status register */14mov.l init_sr, r115ldc r1, sr1617/* Move myself to proper location if necessary */18mova 1f, r019mov.l 1f, r220cmp/eq r2, r021bt clear_bss22sub r0, r223mov.l bss_start_addr, r024mov #0xffffffe0, r125and r1, r0 ! align cache line26mov.l text_start_addr, r327mov r0, r128sub r2, r1293:30mov.l @r1, r431mov.l @(4,r1), r532mov.l @(8,r1), r633mov.l @(12,r1), r734mov.l @(16,r1), r835mov.l @(20,r1), r936mov.l @(24,r1), r1037mov.l @(28,r1), r1138mov.l r4, @r039mov.l r5, @(4,r0)40mov.l r6, @(8,r0)41mov.l r7, @(12,r0)42mov.l r8, @(16,r0)43mov.l r9, @(20,r0)44mov.l r10, @(24,r0)45mov.l r11, @(28,r0)46#ifdef CONFIG_CPU_SH447ocbwb @r048#endif49cmp/hi r3, r050add #-32, r051bt/s 3b52add #-32, r153mov.l 2f, r054jmp @r055nop5657.align 2581: .long 1b592: .long clear_bss60text_start_addr:61.long startup6263/* Clear BSS */64clear_bss:65mov.l end_addr, r166mov.l bss_start_addr, r267mov #0, r068l1:69mov.l r0, @-r170cmp/eq r1,r271bf l17273/* Set the initial pointer. */74mov.l init_stack_addr, r075mov.l @r0, r157677/* Decompress the kernel */78mov.l decompress_kernel_addr, r079jsr @r080nop8182/* Jump to the start of the decompressed kernel */83mov.l kernel_start_addr, r084jmp @r085nop8687.align 288bss_start_addr:89.long __bss_start90end_addr:91.long _end92init_sr:93.long 0x500000F0 /* Privileged mode, Bank=0, Block=1, IMASK=0xF */94kexec_magic:95.long 0x400000F0 /* magic used by kexec to parse zImage format */96init_stack_addr:97.long stack_start98decompress_kernel_addr:99.long decompress_kernel100kernel_start_addr:101#ifdef CONFIG_32BIT102.long ___pa(_text+PAGE_SIZE)103#else104.long _text+PAGE_SIZE105#endif106107.align 9108fake_headers_as_bzImage:109.word 0110.ascii "HdrS" ! header signature111.word 0x0202 ! header version number (>= 0x0105)112! or else old loadlin-1.5 will fail)113.word 0 ! default_switch114.word 0 ! SETUPSEG115.word 0x1000116.word 0 ! pointing to kernel version string117.byte 0 ! = 0, old one (LILO, Loadlin,118! 0xTV: T=0 for LILO119! V = version120.byte 1 ! Load flags bzImage=1121.word 0x8000 ! size to move, when setup is not122.long 0x100000 ! 0x100000 = default for big kernel123.long 0 ! address of loaded ramdisk image124.long 0 # its size in bytes125126127