1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
/* $Id$ */
/* Copyright 2000 AG Electronics Ltd. */
/* This code is distributed without warranty under the GPL v2 (see COPYING) */
#define ASM
#include "ppcreg.h"
#include <ppc_asm.tmpl>
.section ".rom.data", "a", @progbits
.section ".rom.text", "ax", @progbits
.globl _start
.type _start, @function
.globl __bss_end
.globl __start_address_check
/*
* Locate at hreset vector
*/
.space (0x100)
_start:
b system_reset
/*
* Space for exception table
*/
.space (0x3000)
system_reset:
%%EARLY_INIT%%
start_payload:
/*
* Relocate payload (text & data) to ram
*/
lis r3, _liseg@ha
addi r3, r3, _liseg@l
lis r4, _iseg@ha
addi r4, r4, _iseg@l
/*
* Skip if they're the same
*/
cmp 0, 0, r3, r4
beq 1f
lis r7, _eliseg@ha
addi r7, r7, _eliseg@l
2:
lwzx r5, 0, r3
stwx r5, 0, r4
addi r3, r3, 4
addi r4, r4, 4
cmp 0, 0, r3, r7
ble 2b
1:
/*
* Start payload
*/
b _iseg
%%NORTHBRIDGE_INIT%%
|