Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
a20df564
Commit
a20df564
authored
Jul 29, 2010
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'arm/booting' of
git://git.pengutronix.de/git/ukl/linux-2.6
into devel-stable
Conflicts: arch/arm/Kconfig
parents
d50f58bb
e69edc79
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
152 additions
and
79 deletions
+152
-79
arch/arm/Kconfig
arch/arm/Kconfig
+105
-0
arch/arm/boot/Makefile
arch/arm/boot/Makefile
+3
-5
arch/arm/boot/compressed/Makefile
arch/arm/boot/compressed/Makefile
+1
-10
arch/arm/boot/compressed/Makefile.debug
arch/arm/boot/compressed/Makefile.debug
+0
-23
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+29
-11
arch/arm/boot/compressed/misc.c
arch/arm/boot/compressed/misc.c
+0
-20
arch/arm/kernel/Makefile
arch/arm/kernel/Makefile
+3
-1
arch/arm/kernel/compat.c
arch/arm/kernel/compat.c
+0
-7
arch/arm/kernel/compat.h
arch/arm/kernel/compat.h
+0
-2
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+11
-0
No files found.
arch/arm/Kconfig
View file @
a20df564
...
...
@@ -1404,6 +1404,12 @@ config CC_STACKPROTECTOR
neutralized via a kernel panic.
This feature requires gcc version 4.2 or above.
config DEPRECATED_PARAM_STRUCT
bool "Provide old way to pass kernel parameters"
help
This was deprecated in 2001 and announced to live on for 5 years.
Some old boot loaders still use this way.
endmenu
menu "Boot options"
...
...
@@ -1514,6 +1520,105 @@ config ATAGS_PROC
Should the atags used to boot the kernel be exported in an "atags"
file in procfs. Useful with kexec.
config AUTO_ZRELADDR
bool "Auto calculation of the decompressed kernel image address"
depends on !ZBOOT_ROM && !ARCH_U300
help
ZRELADDR is the physical address where the decompressed kernel
image will be placed. If AUTO_ZRELADDR is selected, the address
will be determined at run-time by masking the current IP with
0xf8000000. This assumes the zImage being placed in the first 128MB
from start of memory.
config ZRELADDR
hex "Physical address of the decompressed kernel image"
depends on !AUTO_ZRELADDR
default 0x00008000 if ARCH_BCMRING ||\
ARCH_CNS3XXX ||\
ARCH_DOVE ||\
ARCH_EBSA110 ||\
ARCH_FOOTBRIDGE ||\
ARCH_INTEGRATOR ||\
ARCH_IOP13XX ||\
ARCH_IOP33X ||\
ARCH_IXP2000 ||\
ARCH_IXP23XX ||\
ARCH_IXP4XX ||\
ARCH_KIRKWOOD ||\
ARCH_KS8695 ||\
ARCH_LOKI ||\
ARCH_MMP ||\
ARCH_MV78XX0 ||\
ARCH_NOMADIK ||\
ARCH_NUC93X ||\
ARCH_NS9XXX ||\
ARCH_ORION5X ||\
ARCH_SPEAR3XX ||\
ARCH_SPEAR6XX ||\
ARCH_U8500 ||\
ARCH_VERSATILE ||\
ARCH_W90X900
default 0x08008000 if ARCH_MX1 ||\
ARCH_SHARK
default 0x10008000 if ARCH_MSM ||\
ARCH_OMAP1 ||\
ARCH_RPC
default 0x20008000 if ARCH_S5P6440 ||\
ARCH_S5P6442 ||\
ARCH_S5PC100 ||\
ARCH_S5PV210
default 0x30008000 if ARCH_S3C2410 ||\
ARCH_S3C2400 ||\
ARCH_S3C2412 ||\
ARCH_S3C2416 ||\
ARCH_S3C2440 ||\
ARCH_S3C2443
default 0x40008000 if ARCH_STMP378X ||\
ARCH_STMP37XX ||\
ARCH_SH7372 ||\
ARCH_SH7377
default 0x50008000 if ARCH_S3C64XX ||\
ARCH_SH7367
default 0x60008000 if ARCH_VEXPRESS
default 0x80008000 if ARCH_MX25 ||\
ARCH_MX3 ||\
ARCH_NETX ||\
ARCH_OMAP2PLUS ||\
ARCH_PNX4008
default 0x90008000 if ARCH_MX5 ||\
ARCH_MX91231
default 0xa0008000 if ARCH_IOP32X ||\
ARCH_PXA ||\
MACH_MX27
default 0xc0008000 if ARCH_LH7A40X ||\
MACH_MX21
default 0xf0008000 if ARCH_AAEC2000 ||\
ARCH_L7200
default 0xc0028000 if ARCH_CLPS711X
default 0x70008000 if ARCH_AT91 && (ARCH_AT91CAP9 || ARCH_AT91SAM9G45)
default 0x20008000 if ARCH_AT91 && !(ARCH_AT91CAP9 || ARCH_AT91SAM9G45)
default 0xc0008000 if ARCH_DAVINCI && ARCH_DAVINCI_DA8XX
default 0x80008000 if ARCH_DAVINCI && !ARCH_DAVINCI_DA8XX
default 0x00008000 if ARCH_EP93XX && EP93XX_SDCE3_SYNC_PHYS_OFFSET
default 0xc0008000 if ARCH_EP93XX && EP93XX_SDCE0_PHYS_OFFSET
default 0xd0008000 if ARCH_EP93XX && EP93XX_SDCE1_PHYS_OFFSET
default 0xe0008000 if ARCH_EP93XX && EP93XX_SDCE2_PHYS_OFFSET
default 0xf0008000 if ARCH_EP93XX && EP93XX_SDCE3_ASYNC_PHYS_OFFSET
default 0x00008000 if ARCH_GEMINI && GEMINI_MEM_SWAP
default 0x10008000 if ARCH_GEMINI && !GEMINI_MEM_SWAP
default 0x70008000 if ARCH_REALVIEW && REALVIEW_HIGH_PHYS_OFFSET
default 0x00008000 if ARCH_REALVIEW && !REALVIEW_HIGH_PHYS_OFFSET
default 0xc0208000 if ARCH_SA1100 && SA1111
default 0xc0008000 if ARCH_SA1100 && !SA1111
default 0x30108000 if ARCH_S3C2410 && PM_H1940
default 0x28E08000 if ARCH_U300 && MACH_U300_SINGLE_RAM
default 0x48008000 if ARCH_U300 && !MACH_U300_SINGLE_RAM
help
ZRELADDR is the physical address where the decompressed kernel
image will be placed. ZRELADDR has to be specified when the
assumption of AUTO_ZRELADDR is not valid, or when ZBOOT_ROM is
selected.
endmenu
menu "CPU Power Management"
...
...
arch/arm/boot/Makefile
View file @
a20df564
...
...
@@ -14,18 +14,16 @@
MKIMAGE
:=
$(srctree)
/scripts/mkuboot.sh
ifneq
($(MACHINE),)
include
$(srctree)/$(MACHINE)/Makefile.boot
-
include
$(srctree)/$(MACHINE)/Makefile.boot
endif
# Note: the following conditions must always be true:
# ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
# PARAMS_PHYS must be within 4MB of ZRELADDR
# INITRD_PHYS must be in RAM
ZRELADDR
:=
$
(
zreladdr-y
)
PARAMS_PHYS
:=
$
(
params_phys-y
)
INITRD_PHYS
:=
$
(
initrd_phys-y
)
export
ZRELADDR
INITRD_PHYS
PARAMS_PHYS
export
INITRD_PHYS
PARAMS_PHYS
targets
:=
Image zImage xipImage bootpImage uImage
...
...
@@ -67,7 +65,7 @@ quiet_cmd_uimage = UIMAGE $@
ifeq
($(CONFIG_ZBOOT_ROM),y)
$(obj)/uImage
:
LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
else
$(obj)/uImage
:
LOADADDR=$(ZRELADDR)
$(obj)/uImage
:
LOADADDR=$(
CONFIG_
ZRELADDR)
endif
ifeq
($(CONFIG_THUMB2_KERNEL),y)
...
...
arch/arm/boot/compressed/Makefile
View file @
a20df564
...
...
@@ -4,6 +4,7 @@
# create a compressed vmlinuz image from the original vmlinux
#
AFLAGS_head.o
+=
-DTEXT_OFFSET
=
$(TEXT_OFFSET)
HEAD
=
head.o
OBJS
=
misc.o decompress.o
FONTC
=
$(srctree)
/drivers/video/console/font_acorn_8x8.c
...
...
@@ -79,19 +80,9 @@ endif
EXTRA_CFLAGS
:=
-fpic
-fno-builtin
EXTRA_AFLAGS
:=
-Wa
,-march
=
all
# Supply ZRELADDR, INITRD_PHYS and PARAMS_PHYS to the decompressor via
# linker symbols. We only define initrd_phys and params_phys if the
# machine class defined the corresponding makefile variable.
LDFLAGS_vmlinux
:=
--defsym
zreladdr
=
$(ZRELADDR)
ifeq
($(CONFIG_CPU_ENDIAN_BE8),y)
LDFLAGS_vmlinux
+=
--be8
endif
ifneq
($(INITRD_PHYS),)
LDFLAGS_vmlinux
+=
--defsym
initrd_phys
=
$(INITRD_PHYS)
endif
ifneq
($(PARAMS_PHYS),)
LDFLAGS_vmlinux
+=
--defsym
params_phys
=
$(PARAMS_PHYS)
endif
# ?
LDFLAGS_vmlinux
+=
-p
# Report unresolved symbol references
...
...
arch/arm/boot/compressed/Makefile.debug
deleted
100644 → 0
View file @
d50f58bb
#
# linux/arch/arm/boot/compressed/Makefile
#
# create a compressed vmlinux image from the original vmlinux
#
COMPRESSED_EXTRA
=
../../lib/ll_char_wr.o
OBJECTS
=
misc-debug.o ll_char_wr.aout.o
CFLAGS
=
-D__KERNEL__
-O2
-DSTDC_HEADERS
-DSTANDALONE_DEBUG
-Wall
-I
../../../../include
-c
test-gzip
:
piggy.aout.o $(OBJECTS)
$(CC)
-o
$@
$(OBJECTS)
piggy.aout.o
misc-debug.o
:
misc.c
$(CC)
$(CFLAGS)
-o
$@
misc.c
piggy.aout.o
:
piggy.o
arm-linuxelf-objcopy
--change-leading-char
-I
elf32-arm
-O
arm-aout32-linux piggy.o piggy.aout.o
ll_char_wr.aout.o
:
$(COMPRESSED_EXTRA)
arm-linuxelf-objcopy
--change-leading-char
-I
elf32-arm
-O
arm-aout32-linux
$(COMPRESSED_EXTRA)
ll_char_wr.aout.o
arch/arm/boot/compressed/head.S
View file @
a20df564
...
...
@@ -170,9 +170,16 @@ not_angel:
.
text
adr
r0
,
LC0
ARM
(
ldmia
r0
,
{
r1
,
r2
,
r3
,
r
4
,
r
5
,
r6
,
r11
,
ip
,
sp
})
THUMB
(
ldmia
r0
,
{
r1
,
r2
,
r3
,
r
4
,
r
5
,
r6
,
r11
,
ip
}
)
ARM
(
ldmia
r0
,
{
r1
,
r2
,
r3
,
r5
,
r6
,
r11
,
ip
,
sp
})
THUMB
(
ldmia
r0
,
{
r1
,
r2
,
r3
,
r5
,
r6
,
r11
,
ip
}
)
THUMB
(
ldr
sp
,
[
r0
,
#
32
]
)
#ifdef CONFIG_AUTO_ZRELADDR
@
determine
final
kernel
image
address
and
r4
,
pc
,
#
0xf8000000
add
r4
,
r4
,
#
TEXT_OFFSET
#else
ldr
r4
,
=
CONFIG_ZRELADDR
#endif
subs
r0
,
r0
,
r1
@
calculate
the
delta
offset
@
if
delta
is
zero
,
we
are
...
...
@@ -310,18 +317,17 @@ wont_overwrite: mov r0, r4
LC0
:
.
word
LC0
@
r1
.
word
__bss_start
@
r2
.
word
_end
@
r3
.
word
zreladdr
@
r4
.
word
_start
@
r5
.
word
_image_size
@
r6
.
word
_got_start
@
r11
.
word
_got_end
@
ip
.
word
user_stack
+
4096
@
sp
.
word
user_stack
_end
@
sp
LC1
:
.
word
reloc_end
-
reloc_start
.
size
LC0
,
.
-
LC0
#ifdef CONFIG_ARCH_RPC
.
globl
params
params
:
ldr
r0
,
=
params_phys
params
:
ldr
r0
,
=
0x10000100
@
params_phys
for
RPC
mov
pc
,
lr
.
ltorg
.
align
...
...
@@ -339,9 +345,8 @@ params: ldr r0, =params_phys
*
r4
=
kernel
execution
address
*
r7
=
architecture
number
*
r8
=
atags
pointer
*
r9
=
run
-
time
address
of
"start"
(???)
*
On
exit
,
*
r1
,
r2
,
r3
,
r9
,
r10
,
r12
corrupted
*
r
0
,
r
1
,
r2
,
r3
,
r9
,
r10
,
r12
corrupted
*
This
routine
must
preserve
:
*
r4
,
r5
,
r6
,
r7
,
r8
*/
...
...
@@ -396,12 +401,18 @@ __armv3_mpu_cache_on:
mov
r0
,
#
0
mcr
p15
,
0
,
r0
,
c7
,
c0
,
0
@
invalidate
whole
cache
v3
/
*
*
??
ARMv3
MMU
does
not
allow
reading
the
control
register
,
*
does
this
really
work
on
ARMv3
MPU
?
*/
mrc
p15
,
0
,
r0
,
c1
,
c0
,
0
@
read
control
reg
@
....
....
....
WC
.
M
orr
r0
,
r0
,
#
0x000d
@
....
....
....
11
.1
/
*
??
this
overwrites
the
value
constructed
above
?
*/
mov
r0
,
#
0
mcr
p15
,
0
,
r0
,
c1
,
c0
,
0
@
write
control
reg
/
*
??
invalidate
for
the
second
time
?
*/
mcr
p15
,
0
,
r0
,
c7
,
c0
,
0
@
invalidate
whole
cache
v3
mov
pc
,
lr
...
...
@@ -771,8 +782,10 @@ proc_types:
*
Turn
off
the
Cache
and
MMU
.
ARMv3
does
not
support
*
reading
the
control
register
,
but
ARMv4
does
.
*
*
On
exit
,
r0
,
r1
,
r2
,
r3
,
r9
,
r12
corrupted
*
This
routine
must
preserve
:
r4
,
r6
,
r7
*
On
exit
,
*
r0
,
r1
,
r2
,
r3
,
r9
,
r12
corrupted
*
This
routine
must
preserve
:
*
r4
,
r6
,
r7
*/
.
align
5
cache_off
:
mov
r3
,
#
12
@
cache_off
function
...
...
@@ -845,7 +858,7 @@ __armv3_mmu_cache_off:
*
Clean
and
flush
the
cache
to
maintain
consistency
.
*
*
On
exit
,
*
r1
,
r2
,
r3
,
r9
,
r11
,
r12
corrupted
*
r1
,
r2
,
r3
,
r9
,
r1
0
,
r1
1
,
r12
corrupted
*
This
routine
must
preserve
:
*
r0
,
r4
,
r5
,
r6
,
r7
*/
...
...
@@ -988,7 +1001,7 @@ no_cache_id:
__armv3_mmu_cache_flush
:
__armv3_mpu_cache_flush
:
mov
r1
,
#
0
mcr
p15
,
0
,
r
0
,
c7
,
c0
,
0
@
invalidate
whole
cache
v3
mcr
p15
,
0
,
r
1
,
c7
,
c0
,
0
@
invalidate
whole
cache
v3
mov
pc
,
lr
/*
...
...
@@ -1001,6 +1014,7 @@ __armv3_mpu_cache_flush:
phexbuf
:
.
space
12
.
size
phexbuf
,
.
-
phexbuf
@
phex
corrupts
{
r0
,
r1
,
r2
,
r3
}
phex
:
adr
r3
,
phexbuf
mov
r2
,
#
0
strb
r2
,
[
r3
,
r1
]
...
...
@@ -1015,6 +1029,7 @@ phex: adr r3, phexbuf
strb
r2
,
[
r3
,
r1
]
b
1
b
@
puts
corrupts
{
r0
,
r1
,
r2
,
r3
}
puts
:
loadsp
r3
,
r1
1
:
ldrb
r2
,
[
r0
],
#
1
teq
r2
,
#
0
...
...
@@ -1029,12 +1044,14 @@ puts: loadsp r3, r1
teq
r0
,
#
0
bne
1
b
mov
pc
,
lr
@
putc
corrupts
{
r0
,
r1
,
r2
,
r3
}
putc
:
mov
r2
,
r0
mov
r0
,
#
0
loadsp
r3
,
r1
b
2
b
@
memdump
corrupts
{
r0
,
r1
,
r2
,
r3
,
r10
,
r11
,
r12
,
lr
}
memdump
:
mov
r12
,
r0
mov
r10
,
lr
mov
r11
,
#
0
...
...
@@ -1070,3 +1087,4 @@ reloc_end:
.
align
.
section
".stack"
,
"w"
user_stack
:
.
space
4096
user_stack_end
:
arch/arm/boot/compressed/misc.c
View file @
a20df564
...
...
@@ -28,9 +28,6 @@ unsigned int __machine_arch_type;
#include <asm/unaligned.h>
#ifdef STANDALONE_DEBUG
#define putstr printf
#else
static
void
putstr
(
const
char
*
ptr
);
extern
void
error
(
char
*
x
);
...
...
@@ -116,7 +113,6 @@ static void putstr(const char *ptr)
flush
();
}
#endif
void
*
memcpy
(
void
*
__dest
,
__const
void
*
__src
,
size_t
__n
)
{
...
...
@@ -186,7 +182,6 @@ asmlinkage void __div0(void)
extern
void
do_decompress
(
u8
*
input
,
int
len
,
u8
*
output
,
void
(
*
error
)(
char
*
x
));
#ifndef STANDALONE_DEBUG
unsigned
long
decompress_kernel
(
unsigned
long
output_start
,
unsigned
long
free_mem_ptr_p
,
...
...
@@ -211,18 +206,3 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
putstr
(
" done, booting the kernel.
\n
"
);
return
output_ptr
;
}
#else
char
output_buffer
[
1500
*
1024
];
int
main
()
{
output_data
=
output_buffer
;
putstr
(
"Uncompressing Linux..."
);
decompress
(
input_data
,
input_data_end
-
input_data
,
NULL
,
NULL
,
output_data
,
NULL
,
error
);
putstr
(
"done.
\n
"
);
return
0
;
}
#endif
arch/arm/kernel/Makefile
View file @
a20df564
...
...
@@ -13,10 +13,12 @@ CFLAGS_REMOVE_return_address.o = -pg
# Object file lists.
obj-y
:=
compat.o
elf.o entry-armv.o entry-common.o irq.o
\
obj-y
:=
elf.o entry-armv.o entry-common.o irq.o
\
process.o ptrace.o return_address.o setup.o signal.o
\
sys_arm.o stacktrace.o time.o traps.o
obj-$(CONFIG_DEPRECATED_PARAM_STRUCT)
+=
compat.o
obj-$(CONFIG_LEDS)
+=
leds.o
obj-$(CONFIG_OC_ETM)
+=
etm.o
...
...
arch/arm/kernel/compat.c
View file @
a20df564
...
...
@@ -217,10 +217,3 @@ void __init convert_to_tag_list(struct tag *tags)
struct
param_struct
*
params
=
(
struct
param_struct
*
)
tags
;
build_tag_list
(
params
,
&
params
->
u2
);
}
void
__init
squash_mem_tags
(
struct
tag
*
tag
)
{
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
if
(
tag
->
hdr
.
tag
==
ATAG_MEM
)
tag
->
hdr
.
tag
=
ATAG_NONE
;
}
arch/arm/kernel/compat.h
View file @
a20df564
...
...
@@ -9,5 +9,3 @@
*/
extern
void
convert_to_tag_list
(
struct
tag
*
tags
);
extern
void
squash_mem_tags
(
struct
tag
*
tag
);
arch/arm/kernel/setup.c
View file @
a20df564
...
...
@@ -44,7 +44,9 @@
#include <asm/traps.h>
#include <asm/unwind.h>
#if defined(CONFIG_DEPRECATED_PARAM_STRUCT)
#include "compat.h"
#endif
#include "atags.h"
#include "tcm.h"
...
...
@@ -663,6 +665,13 @@ static int __init customize_machine(void)
}
arch_initcall
(
customize_machine
);
static
void
__init
squash_mem_tags
(
struct
tag
*
tag
)
{
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
if
(
tag
->
hdr
.
tag
==
ATAG_MEM
)
tag
->
hdr
.
tag
=
ATAG_NONE
;
}
void
__init
setup_arch
(
char
**
cmdline_p
)
{
struct
tag
*
tags
=
(
struct
tag
*
)
&
init_tags
;
...
...
@@ -683,12 +692,14 @@ void __init setup_arch(char **cmdline_p)
else
if
(
mdesc
->
boot_params
)
tags
=
phys_to_virt
(
mdesc
->
boot_params
);
#if defined(CONFIG_DEPRECATED_PARAM_STRUCT)
/*
* If we have the old style parameters, convert them to
* a tag list.
*/
if
(
tags
->
hdr
.
tag
!=
ATAG_CORE
)
convert_to_tag_list
(
tags
);
#endif
if
(
tags
->
hdr
.
tag
!=
ATAG_CORE
)
tags
=
(
struct
tag
*
)
&
init_tags
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment