Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
2ef27778
Commit
2ef27778
authored
Aug 30, 2005
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Preserve nucleus ctx page size during TLB flushes.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
3c2cafaf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
14 deletions
+25
-14
arch/sparc64/mm/ultra.S
arch/sparc64/mm/ultra.S
+25
-14
No files found.
arch/sparc64/mm/ultra.S
View file @
2ef27778
...
...
@@ -10,6 +10,7 @@
#include <asm/page.h>
#include <asm/spitfire.h>
#include <asm/mmu_context.h>
#include <asm/mmu.h>
#include <asm/pil.h>
#include <asm/head.h>
#include <asm/thread_info.h>
...
...
@@ -45,6 +46,8 @@ __flush_tlb_mm: /* %o0=(ctx & TAG_CONTEXT_BITS), %o1=SECONDARY_CONTEXT */
nop
nop
nop
nop
nop
.
align
32
.
globl
__flush_tlb_pending
...
...
@@ -73,6 +76,9 @@ __flush_tlb_pending:
retl
wrpr
%
g7
,
0x0
,
%
pstate
nop
nop
nop
nop
.
align
32
.
globl
__flush_tlb_kernel_range
...
...
@@ -224,16 +230,8 @@ __update_mmu_cache: /* %o0=hw_context, %o1=address, %o2=pte, %o3=fault_code */
or
%
o5
,
%
o0
,
%
o5
ba
,
a
,
pt
%
xcc
,
__prefill_itlb
/
*
Cheetah
specific
versions
,
patched
at
boot
time
.
*
*
This
writes
of
the
PRIMARY_CONTEXT
register
in
this
file
are
*
safe
even
on
Cheetah
+
and
later
wrt
.
the
page
size
fields
.
*
The
nucleus
page
size
fields
do
not
matter
because
we
make
*
no
data
references
,
and
these
instructions
execute
out
of
a
*
locked
I
-
TLB
entry
sitting
in
the
fully
assosciative
I
-
TLB
.
*
This
sequence
should
also
never
trap
.
*/
__cheetah_flush_tlb_mm
:
/
*
15
insns
*/
/
*
Cheetah
specific
versions
,
patched
at
boot
time
.
*/
__cheetah_flush_tlb_mm
:
/
*
18
insns
*/
rdpr
%
pstate
,
%
g7
andn
%
g7
,
PSTATE_IE
,
%
g2
wrpr
%
g2
,
0x0
,
%
pstate
...
...
@@ -241,6 +239,9 @@ __cheetah_flush_tlb_mm: /* 15 insns */
mov
PRIMARY_CONTEXT
,
%
o2
mov
0x40
,
%
g3
ldxa
[%
o2
]
ASI_DMMU
,
%
g2
srlx
%
g2
,
CTX_PGSZ1_NUC_SHIFT
,
%
o1
sllx
%
o1
,
CTX_PGSZ1_NUC_SHIFT
,
%
o1
or
%
o0
,
%
o1
,
%
o0
/*
Preserve
nucleus
page
size
fields
*/
stxa
%
o0
,
[%
o2
]
ASI_DMMU
stxa
%
g0
,
[%
g3
]
ASI_DMMU_DEMAP
stxa
%
g0
,
[%
g3
]
ASI_IMMU_DEMAP
...
...
@@ -250,7 +251,7 @@ __cheetah_flush_tlb_mm: /* 15 insns */
retl
wrpr
%
g7
,
0x0
,
%
pstate
__cheetah_flush_tlb_pending
:
/
*
2
3
insns
*/
__cheetah_flush_tlb_pending
:
/
*
2
6
insns
*/
/
*
%
o0
=
context
,
%
o1
=
nr
,
%
o2
=
vaddrs
[]
*/
rdpr
%
pstate
,
%
g7
sllx
%
o1
,
3
,
%
o1
...
...
@@ -259,6 +260,9 @@ __cheetah_flush_tlb_pending: /* 23 insns */
wrpr
%
g0
,
1
,
%
tl
mov
PRIMARY_CONTEXT
,
%
o4
ldxa
[%
o4
]
ASI_DMMU
,
%
g2
srlx
%
g2
,
CTX_PGSZ1_NUC_SHIFT
,
%
o3
sllx
%
o3
,
CTX_PGSZ1_NUC_SHIFT
,
%
o3
or
%
o0
,
%
o3
,
%
o0
/*
Preserve
nucleus
page
size
fields
*/
stxa
%
o0
,
[%
o4
]
ASI_DMMU
1
:
sub
%
o1
,
(
1
<<
3
),
%
o1
ldx
[%
o2
+
%
o1
],
%
o3
...
...
@@ -311,14 +315,14 @@ cheetah_patch_cachetlbops:
sethi
%
hi
(
__cheetah_flush_tlb_mm
),
%
o1
or
%
o1
,
%
lo
(
__cheetah_flush_tlb_mm
),
%
o1
call
cheetah_patch_one
mov
1
5
,
%
o2
mov
1
8
,
%
o2
sethi
%
hi
(
__flush_tlb_pending
),
%
o0
or
%
o0
,
%
lo
(
__flush_tlb_pending
),
%
o0
sethi
%
hi
(
__cheetah_flush_tlb_pending
),
%
o1
or
%
o1
,
%
lo
(
__cheetah_flush_tlb_pending
),
%
o1
call
cheetah_patch_one
mov
2
3
,
%
o2
mov
2
6
,
%
o2
#ifdef DCACHE_ALIASING_POSSIBLE
sethi
%
hi
(
__flush_dcache_page
),
%
o0
...
...
@@ -352,9 +356,12 @@ cheetah_patch_cachetlbops:
.
globl
xcall_flush_tlb_mm
xcall_flush_tlb_mm
:
mov
PRIMARY_CONTEXT
,
%
g2
mov
0x40
,
%
g4
ldxa
[%
g2
]
ASI_DMMU
,
%
g3
srlx
%
g3
,
CTX_PGSZ1_NUC_SHIFT
,
%
g4
sllx
%
g4
,
CTX_PGSZ1_NUC_SHIFT
,
%
g4
or
%
g5
,
%
g4
,
%
g5
/*
Preserve
nucleus
page
size
fields
*/
stxa
%
g5
,
[%
g2
]
ASI_DMMU
mov
0x40
,
%
g4
stxa
%
g0
,
[%
g4
]
ASI_DMMU_DEMAP
stxa
%
g0
,
[%
g4
]
ASI_IMMU_DEMAP
stxa
%
g3
,
[%
g2
]
ASI_DMMU
...
...
@@ -366,6 +373,10 @@ xcall_flush_tlb_pending:
sllx
%
g1
,
3
,
%
g1
mov
PRIMARY_CONTEXT
,
%
g4
ldxa
[%
g4
]
ASI_DMMU
,
%
g2
srlx
%
g2
,
CTX_PGSZ1_NUC_SHIFT
,
%
g4
sllx
%
g4
,
CTX_PGSZ1_NUC_SHIFT
,
%
g4
or
%
g5
,
%
g4
,
%
g5
mov
PRIMARY_CONTEXT
,
%
g4
stxa
%
g5
,
[%
g4
]
ASI_DMMU
1
:
sub
%
g1
,
(
1
<<
3
),
%
g1
ldx
[%
g7
+
%
g1
],
%
g5
...
...
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