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
nexedi
linux
Commits
4d855021
Commit
4d855021
authored
Apr 17, 2013
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-rmk/740t' of
git://git.kernel.org/pub/scm/linux/kernel/git/will/linux
into fixes
parents
b6c7aabd
d455bac2
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
23 additions
and
173 deletions
+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
No files found.
arch/arm/include/asm/glue-cache.h
View file @
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
View file @
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
View file @
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
View file @
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
deleted
100644 → 0
View file @
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
View file @
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
View file @
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
View file @
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
...
...
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