Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
powerpc
boot
treeboot-iss4xx.c
Go to the documentation of this file.
1
/*
2
* Copyright 2010 Ben. Herrenschmidt, IBM Corporation.
3
*
4
* Based on earlier code:
5
* Copyright (C) Paul Mackerras 1997.
6
*
7
* Matt Porter <
[email protected]
>
8
* Copyright 2002-2005 MontaVista Software Inc.
9
*
10
* Eugene Surovegin <
[email protected]
> or <
[email protected]
>
11
* Copyright (c) 2003, 2004 Zultys Technologies
12
*
13
* Copyright 2007 David Gibson, IBM Corporation.
14
*
15
* This program is free software; you can redistribute it and/or
16
* modify it under the terms of the GNU General Public License
17
* as published by the Free Software Foundation; either version
18
* 2 of the License, or (at your option) any later version.
19
*/
20
#include <stdarg.h>
21
#include <stddef.h>
22
#include "
types.h
"
23
#include "
elf.h
"
24
#include "
string.h
"
25
#include "
stdio.h
"
26
#include "
page.h
"
27
#include "
ops.h
"
28
#include "
reg.h
"
29
#include "
io.h
"
30
#include "
dcr.h
"
31
#include "
4xx.h
"
32
#include "
44x.h
"
33
#include "libfdt.h"
34
35
BSS_STACK
(4096);
36
37
static
u32
ibm4xx_memstart;
38
39
static
void
iss_4xx_fixups(
void
)
40
{
41
void
*
memory
;
42
u32
reg
[3];
43
44
memory = finddevice(
"/memory"
);
45
if
(!memory)
46
fatal
(
"Can't find memory node\n"
);
47
/* This assumes #address-cells = 2, #size-cells =1 and that */
48
getprop(memory,
"reg"
, reg,
sizeof
(reg));
49
if
(reg[2])
50
/* If the device tree specifies the memory range, use it */
51
ibm4xx_memstart = reg[1];
52
else
53
/* othersize, read it from the SDRAM controller */
54
ibm4xx_sdram_fixup_memsize
();
55
}
56
57
static
void
*iss_4xx_vmlinux_alloc(
unsigned
long
size
)
58
{
59
return
(
void
*)ibm4xx_memstart;
60
}
61
62
#define SPRN_PIR 0x11E
/* Processor Indentification Register */
63
void
platform_init
(
void
)
64
{
65
unsigned
long
end_of_ram = 0x08000000;
66
unsigned
long
avail_ram
= end_of_ram - (
unsigned
long
)
_end
;
67
u32
pir_reg;
68
69
simple_alloc_init
(
_end
, avail_ram, 128, 64);
70
platform_ops
.
fixups
= iss_4xx_fixups;
71
platform_ops
.
vmlinux_alloc
= iss_4xx_vmlinux_alloc;
72
platform_ops
.
exit
=
ibm44x_dbcr_reset
;
73
pir_reg =
mfspr
(
SPRN_PIR
);
74
fdt_set_boot_cpuid_phys(
_dtb_start
, pir_reg);
75
fdt_init
(
_dtb_start
);
76
serial_console_init
();
77
}
Generated on Thu Jan 10 2013 13:13:13 for Linux Kernel by
1.8.2