Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
96f90c79
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
96f90c79
编写于
8月 29, 2011
作者:
N
Nicolas Pitre
提交者:
Nicolas Pitre
8月 29, 2011
浏览文件
操作
浏览文件
下载
差异文件
Merge the enabling by default of ARM_PATCH_PHYS_VIRT
Conflicts: arch/arm/mach-msm/board-msm7x30.c
上级
ad30a2bb
daece596
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
95 addition
and
73 deletion
+95
-73
arch/arm/Kconfig
arch/arm/Kconfig
+7
-11
arch/arm/Makefile
arch/arm/Makefile
+3
-0
arch/arm/include/asm/memory.h
arch/arm/include/asm/memory.h
+0
-7
arch/arm/include/asm/module.h
arch/arm/include/asm/module.h
+0
-4
arch/arm/kernel/head.S
arch/arm/kernel/head.S
+13
-48
arch/arm/mach-msm/board-msm7x30.c
arch/arm/mach-msm/board-msm7x30.c
+22
-0
arch/arm/mach-msm/board-msm8960.c
arch/arm/mach-msm/board-msm8960.c
+22
-0
arch/arm/mach-msm/board-msm8x60.c
arch/arm/mach-msm/board-msm8x60.c
+25
-0
arch/arm/mach-msm/include/mach/memory.h
arch/arm/mach-msm/include/mach/memory.h
+3
-3
未找到文件。
arch/arm/Kconfig
浏览文件 @
96f90c79
...
...
@@ -195,7 +195,8 @@ config VECTORS_BASE
The base address of exception vectors.
config ARM_PATCH_PHYS_VIRT
bool "Patch physical to virtual translations at runtime"
bool "Patch physical to virtual translations at runtime" if EMBEDDED
default y
depends on !XIP_KERNEL && MMU
depends on !ARCH_REALVIEW || !SPARSEMEM
help
...
...
@@ -204,16 +205,12 @@ config ARM_PATCH_PHYS_VIRT
kernel in system memory.
This can only be used with non-XIP MMU kernels where the base
of physical memory is at a 16MB boundary, or theoretically 64K
for the MSM machine class.
of physical memory is at a 16MB boundary.
Only disable this option if you know that you do not require
this feature (eg, building a kernel for a single machine) and
you need to shrink the kernel to the minimal size.
config ARM_PATCH_PHYS_VIRT_16BIT
def_bool y
depends on ARM_PATCH_PHYS_VIRT && ARCH_MSM
help
This option extends the physical to virtual translation patching
to allow physical memory down to a theoretical minimum of 64K
boundaries.
source "init/Kconfig"
...
...
@@ -301,7 +298,6 @@ config ARCH_AT91
select ARCH_REQUIRE_GPIOLIB
select HAVE_CLK
select CLKDEV_LOOKUP
select ARM_PATCH_PHYS_VIRT if MMU
help
This enables support for systems based on the Atmel AT91RM9200,
AT91SAM9 and AT91CAP9 processors.
...
...
arch/arm/Makefile
浏览文件 @
96f90c79
...
...
@@ -128,6 +128,9 @@ textofs-$(CONFIG_PM_H1940) := 0x00108000
ifeq
($(CONFIG_ARCH_SA1100),y)
textofs-$(CONFIG_SA1111)
:=
0x00208000
endif
textofs-$(CONFIG_ARCH_MSM7X30)
:=
0x00208000
textofs-$(CONFIG_ARCH_MSM8X60)
:=
0x00208000
textofs-$(CONFIG_ARCH_MSM8960)
:=
0x00208000
# Machine directory name. This list is sorted alphanumerically
# by CONFIG_* macro name.
...
...
arch/arm/include/asm/memory.h
浏览文件 @
96f90c79
...
...
@@ -151,7 +151,6 @@
* so that all we need to do is modify the 8-bit constant field.
*/
#define __PV_BITS_31_24 0x81000000
#define __PV_BITS_23_16 0x00810000
extern
unsigned
long
__pv_phys_offset
;
#define PHYS_OFFSET __pv_phys_offset
...
...
@@ -169,9 +168,6 @@ static inline unsigned long __virt_to_phys(unsigned long x)
{
unsigned
long
t
;
__pv_stub
(
x
,
t
,
"add"
,
__PV_BITS_31_24
);
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
__pv_stub
(
t
,
t
,
"add"
,
__PV_BITS_23_16
);
#endif
return
t
;
}
...
...
@@ -179,9 +175,6 @@ static inline unsigned long __phys_to_virt(unsigned long x)
{
unsigned
long
t
;
__pv_stub
(
x
,
t
,
"sub"
,
__PV_BITS_31_24
);
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
__pv_stub
(
t
,
t
,
"sub"
,
__PV_BITS_23_16
);
#endif
return
t
;
}
#else
...
...
arch/arm/include/asm/module.h
浏览文件 @
96f90c79
...
...
@@ -31,11 +31,7 @@ struct mod_arch_specific {
/* Add __virt_to_phys patching state as well */
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
#define MODULE_ARCH_VERMAGIC_P2V "p2v16 "
#else
#define MODULE_ARCH_VERMAGIC_P2V "p2v8 "
#endif
#else
#define MODULE_ARCH_VERMAGIC_P2V ""
#endif
...
...
arch/arm/kernel/head.S
浏览文件 @
96f90c79
...
...
@@ -488,13 +488,8 @@ __fixup_pv_table:
add
r5
,
r5
,
r3
@
adjust
table
end
address
add
r7
,
r7
,
r3
@
adjust
__pv_phys_offset
address
str
r8
,
[
r7
]
@
save
computed
PHYS_OFFSET
to
__pv_phys_offset
#ifndef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
mov
r6
,
r3
,
lsr
#
24
@
constant
for
add
/
sub
instructions
teq
r3
,
r6
,
lsl
#
24
@
must
be
16
MiB
aligned
#else
mov
r6
,
r3
,
lsr
#
16
@
constant
for
add
/
sub
instructions
teq
r3
,
r6
,
lsl
#
16
@
must
be
64
kiB
aligned
#endif
THUMB
(
it
ne
@
cross
section
branch
)
bne
__error
str
r6
,
[
r7
,
#
4
]
@
save
to
__pv_offset
...
...
@@ -510,20 +505,8 @@ ENDPROC(__fixup_pv_table)
.
text
__fixup_a_pv_table
:
#ifdef CONFIG_THUMB2_KERNEL
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
lsls
r0
,
r6
,
#
24
lsr
r6
,
#
8
beq
1
f
clz
r7
,
r0
lsr
r0
,
#
24
lsl
r0
,
r7
bic
r0
,
0x0080
lsrs
r7
,
#
1
orrcs
r0
,
#
0x0080
orr
r0
,
r0
,
r7
,
lsl
#
12
#endif
1
:
lsls
r6
,
#
24
beq
4
f
lsls
r6
,
#
24
beq
2
f
clz
r7
,
r6
lsr
r6
,
#
24
lsl
r6
,
r7
...
...
@@ -532,43 +515,25 @@ __fixup_a_pv_table:
orrcs
r6
,
#
0x0080
orr
r6
,
r6
,
r7
,
lsl
#
12
orr
r6
,
#
0x4000
b
4
f
2
:
@
at
this
point
the
C
flag
is
always
clear
add
r7
,
r3
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
ldrh
ip
,
[
r7
]
tst
ip
,
0x0400
@
the
i
bit
tells
us
LS
or
MS
byte
beq
3
f
cmp
r0
,
#
0
@
set
C
flag
,
and
...
biceq
ip
,
0x0400
@
immediate
zero
value
has
a
special
encoding
streqh
ip
,
[
r7
]
@
that
requires
the
i
bit
cleared
#endif
3
:
ldrh
ip
,
[
r7
,
#
2
]
b
2
f
1
:
add
r7
,
r3
ldrh
ip
,
[
r7
,
#
2
]
and
ip
,
0x8f00
orrcc
ip
,
r6
@
mask
in
offset
bits
31
-
24
orrcs
ip
,
r0
@
mask
in
offset
bits
23
-
16
orr
ip
,
r6
@
mask
in
offset
bits
31
-
24
strh
ip
,
[
r7
,
#
2
]
4
:
cmp
r4
,
r5
2
:
cmp
r4
,
r5
ldrcc
r7
,
[
r4
],
#
4
@
use
branch
for
delay
slot
bcc
2
b
bcc
1
b
bx
lr
#else
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
and
r0
,
r6
,
#
255
@
offset
bits
23
-
16
mov
r6
,
r6
,
lsr
#
8
@
offset
bits
31
-
24
#else
mov
r0
,
#
0
@
just
in
case
...
#endif
b
3
f
2
:
ldr
ip
,
[
r7
,
r3
]
b
2
f
1
:
ldr
ip
,
[
r7
,
r3
]
bic
ip
,
ip
,
#
0x000000ff
tst
ip
,
#
0x400
@
rotate
shift
tells
us
LS
or
MS
byte
orrne
ip
,
ip
,
r6
@
mask
in
offset
bits
31
-
24
orreq
ip
,
ip
,
r0
@
mask
in
offset
bits
23
-
16
orr
ip
,
ip
,
r6
@
mask
in
offset
bits
31
-
24
str
ip
,
[
r7
,
r3
]
3
:
cmp
r4
,
r5
2
:
cmp
r4
,
r5
ldrcc
r7
,
[
r4
],
#
4
@
use
branch
for
delay
slot
bcc
2
b
bcc
1
b
mov
pc
,
lr
#endif
ENDPROC
(
__fixup_a_pv_table
)
...
...
arch/arm/mach-msm/board-msm7x30.c
浏览文件 @
96f90c79
...
...
@@ -24,6 +24,7 @@
#include <linux/smsc911x.h>
#include <linux/usb/msm_hsusb.h>
#include <linux/clkdev.h>
#include <linux/memblock.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
...
...
@@ -42,6 +43,21 @@
extern
struct
sys_timer
msm_timer
;
static
void
__init
msm7x30_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
if
(
tag
->
hdr
.
tag
==
ATAG_MEM
&&
tag
->
u
.
mem
.
start
==
0x200000
)
{
tag
->
u
.
mem
.
start
=
0
;
tag
->
u
.
mem
.
size
+=
SZ_2M
;
}
}
static
void
__init
msm7x30_reserve
(
void
)
{
memblock_remove
(
0x0
,
SZ_2M
);
}
static
int
hsusb_phy_init_seq
[]
=
{
0x30
,
0x32
,
/* Enable and set Pre-Emphasis Depth to 20% */
0x02
,
0x36
,
/* Disable CDR Auto Reset feature */
...
...
@@ -107,6 +123,8 @@ static void __init msm7x30_map_io(void)
MACHINE_START
(
MSM7X30_SURF
,
"QCT MSM7X30 SURF"
)
.
atag_offset
=
0x100
,
.
fixup
=
msm7x30_fixup
,
.
reserve
=
msm7x30_reserve
,
.
map_io
=
msm7x30_map_io
,
.
init_irq
=
msm7x30_init_irq
,
.
init_machine
=
msm7x30_init
,
...
...
@@ -115,6 +133,8 @@ MACHINE_END
MACHINE_START
(
MSM7X30_FFA
,
"QCT MSM7X30 FFA"
)
.
atag_offset
=
0x100
,
.
fixup
=
msm7x30_fixup
,
.
reserve
=
msm7x30_reserve
,
.
map_io
=
msm7x30_map_io
,
.
init_irq
=
msm7x30_init_irq
,
.
init_machine
=
msm7x30_init
,
...
...
@@ -123,6 +143,8 @@ MACHINE_END
MACHINE_START
(
MSM7X30_FLUID
,
"QCT MSM7X30 FLUID"
)
.
atag_offset
=
0x100
,
.
fixup
=
msm7x30_fixup
,
.
reserve
=
msm7x30_reserve
,
.
map_io
=
msm7x30_map_io
,
.
init_irq
=
msm7x30_init_irq
,
.
init_machine
=
msm7x30_init
,
...
...
arch/arm/mach-msm/board-msm8960.c
浏览文件 @
96f90c79
...
...
@@ -20,16 +20,34 @@
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/clkdev.h>
#include <linux/memblock.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/hardware/gic.h>
#include <asm/setup.h>
#include <mach/board.h>
#include <mach/msm_iomap.h>
#include "devices.h"
static
void
__init
msm8960_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
if
(
tag
->
hdr
.
tag
==
ATAG_MEM
&&
tag
->
u
.
mem
.
start
==
0x40200000
)
{
tag
->
u
.
mem
.
start
=
0x40000000
;
tag
->
u
.
mem
.
size
+=
SZ_2M
;
}
}
static
void
__init
msm8960_reserve
(
void
)
{
memblock_remove
(
0x40000000
,
SZ_2M
);
}
static
void
__init
msm8960_map_io
(
void
)
{
msm_map_msm8960_io
();
...
...
@@ -76,6 +94,8 @@ static void __init msm8960_rumi3_init(void)
}
MACHINE_START
(
MSM8960_SIM
,
"QCT MSM8960 SIMULATOR"
)
.
fixup
=
msm8960_fixup
,
.
reserve
=
msm8960_reserve
,
.
map_io
=
msm8960_map_io
,
.
init_irq
=
msm8960_init_irq
,
.
timer
=
&
msm_timer
,
...
...
@@ -83,6 +103,8 @@ MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR")
MACHINE_END
MACHINE_START
(
MSM8960_RUMI3
,
"QCT MSM8960 RUMI3"
)
.
fixup
=
msm8960_fixup
,
.
reserve
=
msm8960_reserve
,
.
map_io
=
msm8960_map_io
,
.
init_irq
=
msm8960_init_irq
,
.
timer
=
&
msm_timer
,
...
...
arch/arm/mach-msm/board-msm8x60.c
浏览文件 @
96f90c79
...
...
@@ -20,14 +20,31 @@
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/memblock.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/hardware/gic.h>
#include <asm/setup.h>
#include <mach/board.h>
#include <mach/msm_iomap.h>
static
void
__init
msm8x60_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
if
(
tag
->
hdr
.
tag
==
ATAG_MEM
&&
tag
->
u
.
mem
.
start
==
0x40200000
)
{
tag
->
u
.
mem
.
start
=
0x40000000
;
tag
->
u
.
mem
.
size
+=
SZ_2M
;
}
}
static
void
__init
msm8x60_reserve
(
void
)
{
memblock_remove
(
0x40000000
,
SZ_2M
);
}
static
void
__init
msm8x60_map_io
(
void
)
{
...
...
@@ -65,6 +82,8 @@ static void __init msm8x60_init(void)
}
MACHINE_START
(
MSM8X60_RUMI3
,
"QCT MSM8X60 RUMI3"
)
.
fixup
=
msm8x60_fixup
,
.
reserve
=
msm8x60_reserve
,
.
map_io
=
msm8x60_map_io
,
.
init_irq
=
msm8x60_init_irq
,
.
init_machine
=
msm8x60_init
,
...
...
@@ -72,6 +91,8 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3")
MACHINE_END
MACHINE_START
(
MSM8X60_SURF
,
"QCT MSM8X60 SURF"
)
.
fixup
=
msm8x60_fixup
,
.
reserve
=
msm8x60_reserve
,
.
map_io
=
msm8x60_map_io
,
.
init_irq
=
msm8x60_init_irq
,
.
init_machine
=
msm8x60_init
,
...
...
@@ -79,6 +100,8 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF")
MACHINE_END
MACHINE_START
(
MSM8X60_SIM
,
"QCT MSM8X60 SIMULATOR"
)
.
fixup
=
msm8x60_fixup
,
.
reserve
=
msm8x60_reserve
,
.
map_io
=
msm8x60_map_io
,
.
init_irq
=
msm8x60_init_irq
,
.
init_machine
=
msm8x60_init
,
...
...
@@ -86,6 +109,8 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR")
MACHINE_END
MACHINE_START
(
MSM8X60_FFA
,
"QCT MSM8X60 FFA"
)
.
fixup
=
msm8x60_fixup
,
.
reserve
=
msm8x60_reserve
,
.
map_io
=
msm8x60_map_io
,
.
init_irq
=
msm8x60_init_irq
,
.
init_machine
=
msm8x60_init
,
...
...
arch/arm/mach-msm/include/mach/memory.h
浏览文件 @
96f90c79
...
...
@@ -22,11 +22,11 @@
#elif defined(CONFIG_ARCH_QSD8X50)
#define PLAT_PHYS_OFFSET UL(0x20000000)
#elif defined(CONFIG_ARCH_MSM7X30)
#define PLAT_PHYS_OFFSET UL(0x00
2
00000)
#define PLAT_PHYS_OFFSET UL(0x00
0
00000)
#elif defined(CONFIG_ARCH_MSM8X60)
#define PLAT_PHYS_OFFSET UL(0x40
2
00000)
#define PLAT_PHYS_OFFSET UL(0x40
0
00000)
#elif defined(CONFIG_ARCH_MSM8960)
#define PLAT_PHYS_OFFSET UL(0x40
2
00000)
#define PLAT_PHYS_OFFSET UL(0x40
0
00000)
#else
#define PLAT_PHYS_OFFSET UL(0x10000000)
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录