Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/avr32/boot/u-boot/head.S
15126 views
1
/*
2
* Startup code for use with the u-boot bootloader.
3
*
4
* Copyright (C) 2004-2006 Atmel Corporation
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation.
9
*/
10
#include <asm/setup.h>
11
12
/*
13
* The kernel is loaded where we want it to be and all caches
14
* have just been flushed. We get two parameters from u-boot:
15
*
16
* r12 contains a magic number (ATAG_MAGIC)
17
* r11 points to a tag table providing information about
18
* the system.
19
*/
20
.section .init.text,"ax"
21
.global _start
22
_start:
23
/* Check if the boot loader actually provided a tag table */
24
lddpc r0, magic_number
25
cp.w r12, r0
26
brne no_tag_table
27
28
/* Initialize .bss */
29
lddpc r2, bss_start_addr
30
lddpc r3, end_addr
31
mov r0, 0
32
mov r1, 0
33
1: st.d r2++, r0
34
cp r2, r3
35
brlo 1b
36
37
/*
38
* Save the tag table address for later use. This must be done
39
* _after_ .bss has been initialized...
40
*/
41
lddpc r0, tag_table_addr
42
st.w r0[0], r11
43
44
/* Jump to loader-independent setup code */
45
rjmp kernel_entry
46
47
.align 2
48
magic_number:
49
.long ATAG_MAGIC
50
tag_table_addr:
51
.long bootloader_tags
52
bss_start_addr:
53
.long __bss_start
54
end_addr:
55
.long _end
56
57
no_tag_table:
58
sub r12, pc, (. - 2f)
59
bral panic
60
2: .asciz "Boot loader didn't provide correct magic number\n"
61
62