Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
a20df564
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a20df564
编写于
7月 29, 2010
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'arm/booting' of
git://git.pengutronix.de/git/ukl/linux-2.6
into devel-stable
Conflicts: arch/arm/Kconfig
上级
d50f58bb
e69edc79
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
152 addition
and
79 deletion
+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
未找到文件。
arch/arm/Kconfig
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录