Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
4d855021
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
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看板
提交
4d855021
编写于
4月 17, 2013
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-rmk/740t' of
git://git.kernel.org/pub/scm/linux/kernel/git/will/linux
into fixes
上级
b6c7aabd
d455bac2
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
23 addition
and
173 deletion
+23
-173
arch/arm/include/asm/glue-cache.h
arch/arm/include/asm/glue-cache.h
+0
-8
arch/arm/include/asm/tlbflush.h
arch/arm/include/asm/tlbflush.h
+2
-9
arch/arm/mm/Kconfig
arch/arm/mm/Kconfig
+1
-4
arch/arm/mm/Makefile
arch/arm/mm/Makefile
+0
-1
arch/arm/mm/cache-v3.S
arch/arm/mm/cache-v3.S
+0
-137
arch/arm/mm/cache-v4.S
arch/arm/mm/cache-v4.S
+1
-1
arch/arm/mm/proc-arm740.S
arch/arm/mm/proc-arm740.S
+17
-13
arch/arm/mm/proc-syms.c
arch/arm/mm/proc-syms.c
+2
-0
未找到文件。
arch/arm/include/asm/glue-cache.h
浏览文件 @
4d855021
...
...
@@ -19,14 +19,6 @@
#undef _CACHE
#undef MULTI_CACHE
#if defined(CONFIG_CPU_CACHE_V3)
# ifdef _CACHE
# define MULTI_CACHE 1
# else
# define _CACHE v3
# endif
#endif
#if defined(CONFIG_CPU_CACHE_V4)
# ifdef _CACHE
# define MULTI_CACHE 1
...
...
arch/arm/include/asm/tlbflush.h
浏览文件 @
4d855021
...
...
@@ -14,7 +14,6 @@
#include <asm/glue.h>
#define TLB_V3_PAGE (1 << 0)
#define TLB_V4_U_PAGE (1 << 1)
#define TLB_V4_D_PAGE (1 << 2)
#define TLB_V4_I_PAGE (1 << 3)
...
...
@@ -22,7 +21,6 @@
#define TLB_V6_D_PAGE (1 << 5)
#define TLB_V6_I_PAGE (1 << 6)
#define TLB_V3_FULL (1 << 8)
#define TLB_V4_U_FULL (1 << 9)
#define TLB_V4_D_FULL (1 << 10)
#define TLB_V4_I_FULL (1 << 11)
...
...
@@ -52,7 +50,6 @@
* =============
*
* We have the following to choose from:
* v3 - ARMv3
* v4 - ARMv4 without write buffer
* v4wb - ARMv4 with write buffer without I TLB flush entry instruction
* v4wbi - ARMv4 with write buffer with I TLB flush entry instruction
...
...
@@ -330,7 +327,6 @@ static inline void local_flush_tlb_all(void)
if
(
tlb_flag
(
TLB_WB
))
dsb
();
tlb_op
(
TLB_V3_FULL
,
"c6, c0, 0"
,
zero
);
tlb_op
(
TLB_V4_U_FULL
|
TLB_V6_U_FULL
,
"c8, c7, 0"
,
zero
);
tlb_op
(
TLB_V4_D_FULL
|
TLB_V6_D_FULL
,
"c8, c6, 0"
,
zero
);
tlb_op
(
TLB_V4_I_FULL
|
TLB_V6_I_FULL
,
"c8, c5, 0"
,
zero
);
...
...
@@ -351,9 +347,8 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
if
(
tlb_flag
(
TLB_WB
))
dsb
();
if
(
possible_tlb_flags
&
(
TLB_V
3_FULL
|
TLB_V
4_U_FULL
|
TLB_V4_D_FULL
|
TLB_V4_I_FULL
))
{
if
(
possible_tlb_flags
&
(
TLB_V4_U_FULL
|
TLB_V4_D_FULL
|
TLB_V4_I_FULL
))
{
if
(
cpumask_test_cpu
(
get_cpu
(),
mm_cpumask
(
mm
)))
{
tlb_op
(
TLB_V3_FULL
,
"c6, c0, 0"
,
zero
);
tlb_op
(
TLB_V4_U_FULL
,
"c8, c7, 0"
,
zero
);
tlb_op
(
TLB_V4_D_FULL
,
"c8, c6, 0"
,
zero
);
tlb_op
(
TLB_V4_I_FULL
,
"c8, c5, 0"
,
zero
);
...
...
@@ -385,9 +380,8 @@ local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
if
(
tlb_flag
(
TLB_WB
))
dsb
();
if
(
possible_tlb_flags
&
(
TLB_V
3_PAGE
|
TLB_V
4_U_PAGE
|
TLB_V4_D_PAGE
|
TLB_V4_I_PAGE
|
TLB_V4_I_FULL
)
&&
if
(
possible_tlb_flags
&
(
TLB_V4_U_PAGE
|
TLB_V4_D_PAGE
|
TLB_V4_I_PAGE
|
TLB_V4_I_FULL
)
&&
cpumask_test_cpu
(
smp_processor_id
(),
mm_cpumask
(
vma
->
vm_mm
)))
{
tlb_op
(
TLB_V3_PAGE
,
"c6, c0, 0"
,
uaddr
);
tlb_op
(
TLB_V4_U_PAGE
,
"c8, c7, 1"
,
uaddr
);
tlb_op
(
TLB_V4_D_PAGE
,
"c8, c6, 1"
,
uaddr
);
tlb_op
(
TLB_V4_I_PAGE
,
"c8, c5, 1"
,
uaddr
);
...
...
@@ -418,7 +412,6 @@ static inline void local_flush_tlb_kernel_page(unsigned long kaddr)
if
(
tlb_flag
(
TLB_WB
))
dsb
();
tlb_op
(
TLB_V3_PAGE
,
"c6, c0, 0"
,
kaddr
);
tlb_op
(
TLB_V4_U_PAGE
,
"c8, c7, 1"
,
kaddr
);
tlb_op
(
TLB_V4_D_PAGE
,
"c8, c6, 1"
,
kaddr
);
tlb_op
(
TLB_V4_I_PAGE
,
"c8, c5, 1"
,
kaddr
);
...
...
arch/arm/mm/Kconfig
浏览文件 @
4d855021
...
...
@@ -43,7 +43,7 @@ config CPU_ARM740T
depends on !MMU
select CPU_32v4T
select CPU_ABRT_LV4T
select CPU_CACHE_V
3 # although the core is v4t
select CPU_CACHE_V
4
select CPU_CP15_MPU
select CPU_PABRT_LEGACY
help
...
...
@@ -469,9 +469,6 @@ config CPU_PABRT_V7
bool
# The cache model
config CPU_CACHE_V3
bool
config CPU_CACHE_V4
bool
...
...
arch/arm/mm/Makefile
浏览文件 @
4d855021
...
...
@@ -33,7 +33,6 @@ obj-$(CONFIG_CPU_PABRT_LEGACY) += pabort-legacy.o
obj-$(CONFIG_CPU_PABRT_V6)
+=
pabort-v6.o
obj-$(CONFIG_CPU_PABRT_V7)
+=
pabort-v7.o
obj-$(CONFIG_CPU_CACHE_V3)
+=
cache-v3.o
obj-$(CONFIG_CPU_CACHE_V4)
+=
cache-v4.o
obj-$(CONFIG_CPU_CACHE_V4WT)
+=
cache-v4wt.o
obj-$(CONFIG_CPU_CACHE_V4WB)
+=
cache-v4wb.o
...
...
arch/arm/mm/cache-v3.S
已删除
100644 → 0
浏览文件 @
b6c7aabd
/*
*
linux
/
arch
/
arm
/
mm
/
cache
-
v3
.
S
*
*
Copyright
(
C
)
1997
-
2002
Russell
king
*
*
This
program
is
free
software
; you can redistribute it and/or modify
*
it
under
the
terms
of
the
GNU
General
Public
License
version
2
as
*
published
by
the
Free
Software
Foundation
.
*/
#include <linux/linkage.h>
#include <linux/init.h>
#include <asm/page.h>
#include "proc-macros.S"
/*
*
flush_icache_all
()
*
*
Unconditionally
clean
and
invalidate
the
entire
icache
.
*/
ENTRY
(
v3_flush_icache_all
)
mov
pc
,
lr
ENDPROC
(
v3_flush_icache_all
)
/*
*
flush_user_cache_all
()
*
*
Invalidate
all
cache
entries
in
a
particular
address
*
space
.
*
*
-
mm
-
mm_struct
describing
address
space
*/
ENTRY
(
v3_flush_user_cache_all
)
/
*
FALLTHROUGH
*/
/*
*
flush_kern_cache_all
()
*
*
Clean
and
invalidate
the
entire
cache
.
*/
ENTRY
(
v3_flush_kern_cache_all
)
/
*
FALLTHROUGH
*/
/*
*
flush_user_cache_range
(
start
,
end
,
flags
)
*
*
Invalidate
a
range
of
cache
entries
in
the
specified
*
address
space
.
*
*
-
start
-
start
address
(
may
not
be
aligned
)
*
-
end
-
end
address
(
exclusive
,
may
not
be
aligned
)
*
-
flags
-
vma_area_struct
flags
describing
address
space
*/
ENTRY
(
v3_flush_user_cache_range
)
mov
ip
,
#
0
mcreq
p15
,
0
,
ip
,
c7
,
c0
,
0
@
flush
ID
cache
mov
pc
,
lr
/*
*
coherent_kern_range
(
start
,
end
)
*
*
Ensure
coherency
between
the
Icache
and
the
Dcache
in
the
*
region
described
by
start
.
If
you
have
non
-
snooping
*
Harvard
caches
,
you
need
to
implement
this
function
.
*
*
-
start
-
virtual
start
address
*
-
end
-
virtual
end
address
*/
ENTRY
(
v3_coherent_kern_range
)
/
*
FALLTHROUGH
*/
/*
*
coherent_user_range
(
start
,
end
)
*
*
Ensure
coherency
between
the
Icache
and
the
Dcache
in
the
*
region
described
by
start
.
If
you
have
non
-
snooping
*
Harvard
caches
,
you
need
to
implement
this
function
.
*
*
-
start
-
virtual
start
address
*
-
end
-
virtual
end
address
*/
ENTRY
(
v3_coherent_user_range
)
mov
r0
,
#
0
mov
pc
,
lr
/*
*
flush_kern_dcache_area
(
void
*
page
,
size_t
size
)
*
*
Ensure
no
D
cache
aliasing
occurs
,
either
with
itself
or
*
the
I
cache
*
*
-
addr
-
kernel
address
*
-
size
-
region
size
*/
ENTRY
(
v3_flush_kern_dcache_area
)
/
*
FALLTHROUGH
*/
/*
*
dma_flush_range
(
start
,
end
)
*
*
Clean
and
invalidate
the
specified
virtual
address
range
.
*
*
-
start
-
virtual
start
address
*
-
end
-
virtual
end
address
*/
ENTRY
(
v3_dma_flush_range
)
mov
r0
,
#
0
mcr
p15
,
0
,
r0
,
c7
,
c0
,
0
@
flush
ID
cache
mov
pc
,
lr
/*
*
dma_unmap_area
(
start
,
size
,
dir
)
*
-
start
-
kernel
virtual
start
address
*
-
size
-
size
of
region
*
-
dir
-
DMA
direction
*/
ENTRY
(
v3_dma_unmap_area
)
teq
r2
,
#
DMA_TO_DEVICE
bne
v3_dma_flush_range
/
*
FALLTHROUGH
*/
/*
*
dma_map_area
(
start
,
size
,
dir
)
*
-
start
-
kernel
virtual
start
address
*
-
size
-
size
of
region
*
-
dir
-
DMA
direction
*/
ENTRY
(
v3_dma_map_area
)
mov
pc
,
lr
ENDPROC
(
v3_dma_unmap_area
)
ENDPROC
(
v3_dma_map_area
)
.
globl
v3_flush_kern_cache_louis
.
equ
v3_flush_kern_cache_louis
,
v3_flush_kern_cache_all
__INITDATA
@
define
struct
cpu_cache_fns
(
see
<
asm
/
cacheflush
.
h
>
and
proc
-
macros
.
S
)
define_cache_functions
v3
arch/arm/mm/cache-v4.S
浏览文件 @
4d855021
...
...
@@ -58,7 +58,7 @@ ENTRY(v4_flush_kern_cache_all)
ENTRY
(
v4_flush_user_cache_range
)
#ifdef CONFIG_CPU_CP15
mov
ip
,
#
0
mcr
eq
p15
,
0
,
ip
,
c7
,
c7
,
0
@
flush
ID
cache
mcr
p15
,
0
,
ip
,
c7
,
c7
,
0
@
flush
ID
cache
mov
pc
,
lr
#else
/
*
FALLTHROUGH
*/
...
...
arch/arm/mm/proc-arm740.S
浏览文件 @
4d855021
...
...
@@ -77,24 +77,27 @@ __arm740_setup:
mcr
p15
,
0
,
r0
,
c6
,
c0
@
set
area
0
,
default
ldr
r0
,
=(
CONFIG_DRAM_BASE
&
0xFFFFF000
)
@
base
[
31
:
12
]
of
RAM
ldr
r
1
,
=(
CONFIG_DRAM_SIZE
>>
12
)
@
size
of
RAM
(
must
be
>=
4
KB
)
mov
r
2
,
#
10
@
11
is
the
minimum
(
4
KB
)
1
:
add
r
2
,
r2
,
#
1
@
area
size
*=
2
mov
r1
,
r1
,
lsr
#
1
ldr
r
3
,
=(
CONFIG_DRAM_SIZE
>>
12
)
@
size
of
RAM
(
must
be
>=
4
KB
)
mov
r
4
,
#
10
@
11
is
the
minimum
(
4
KB
)
1
:
add
r
4
,
r4
,
#
1
@
area
size
*=
2
mov
s
r3
,
r3
,
lsr
#
1
bne
1
b
@
count
not
zero
r
-
shift
orr
r0
,
r0
,
r
2
,
lsl
#
1
@
the
area
register
value
orr
r0
,
r0
,
r
4
,
lsl
#
1
@
the
area
register
value
orr
r0
,
r0
,
#
1
@
set
enable
bit
mcr
p15
,
0
,
r0
,
c6
,
c1
@
set
area
1
,
RAM
ldr
r0
,
=(
CONFIG_FLASH_MEM_BASE
&
0xFFFFF000
)
@
base
[
31
:
12
]
of
FLASH
ldr
r1
,
=(
CONFIG_FLASH_SIZE
>>
12
)
@
size
of
FLASH
(
must
be
>=
4
KB
)
mov
r2
,
#
10
@
11
is
the
minimum
(
4
KB
)
1
:
add
r2
,
r2
,
#
1
@
area
size
*=
2
mov
r1
,
r1
,
lsr
#
1
ldr
r3
,
=(
CONFIG_FLASH_SIZE
>>
12
)
@
size
of
FLASH
(
must
be
>=
4
KB
)
cmp
r3
,
#
0
moveq
r0
,
#
0
beq
2
f
mov
r4
,
#
10
@
11
is
the
minimum
(
4
KB
)
1
:
add
r4
,
r4
,
#
1
@
area
size
*=
2
movs
r3
,
r3
,
lsr
#
1
bne
1
b
@
count
not
zero
r
-
shift
orr
r0
,
r0
,
r
2
,
lsl
#
1
@
the
area
register
value
orr
r0
,
r0
,
r
4
,
lsl
#
1
@
the
area
register
value
orr
r0
,
r0
,
#
1
@
set
enable
bit
mcr
p15
,
0
,
r0
,
c6
,
c2
@
set
area
2
,
ROM
/
FLASH
2
:
mcr
p15
,
0
,
r0
,
c6
,
c2
@
set
area
2
,
ROM
/
FLASH
mov
r0
,
#
0x06
mcr
p15
,
0
,
r0
,
c2
,
c0
@
Region
1
&2
cacheable
...
...
@@ -137,13 +140,14 @@ __arm740_proc_info:
.
long
0x41807400
.
long
0xfffffff0
.
long
0
.
long
0
b
__arm740_setup
.
long
cpu_arch_name
.
long
cpu_elf_name
.
long
HWCAP_SWP
| HWCAP_HALF |
HWCAP_26BIT
.
long
HWCAP_SWP
| HWCAP_HALF |
HWCAP_
THUMB
|
HWCAP_
26BIT
.
long
cpu_arm740_name
.
long
arm740_processor_functions
.
long
0
.
long
0
.
long
v
3
_cache_fns
@
cache
model
.
long
v
4
_cache_fns
@
cache
model
.
size
__arm740_proc_info
,
.
-
__arm740_proc_info
arch/arm/mm/proc-syms.c
浏览文件 @
4d855021
...
...
@@ -17,7 +17,9 @@
#ifndef MULTI_CPU
EXPORT_SYMBOL
(
cpu_dcache_clean_area
);
#ifdef CONFIG_MMU
EXPORT_SYMBOL
(
cpu_set_pte_ext
);
#endif
#else
EXPORT_SYMBOL
(
processor
);
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录