Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
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-2.6.23
Commits
b70c0fa1
Commit
b70c0fa1
authored
Jan 31, 2006
by
David S. Miller
Committed by
David S. Miller
Mar 20, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Preload TSB entries from update_mmu_cache().
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
bd40791e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
0 deletions
+29
-0
arch/sparc64/kernel/tsb.S
arch/sparc64/kernel/tsb.S
+17
-0
arch/sparc64/mm/init.c
arch/sparc64/mm/init.c
+10
-0
include/asm-sparc64/mmu.h
include/asm-sparc64/mmu.h
+2
-0
No files found.
arch/sparc64/kernel/tsb.S
View file @
b70c0fa1
...
...
@@ -126,6 +126,23 @@ winfix_trampoline:
wrpr
%
g3
,
%
tnpc
!
Write
it
into
TNPC
done
!
Trap
return
/
*
Insert
an
entry
into
the
TSB
.
*
*
%
o0
:
TSB
entry
pointer
*
%
o1
:
tag
*
%
o2
:
pte
*/
.
align
32
.
globl
tsb_insert
tsb_insert
:
rdpr
%
pstate
,
%
o5
wrpr
%
o5
,
PSTATE_IE
,
%
pstate
TSB_LOCK_TAG
(%
o0
,
%
g2
,
%
g3
)
TSB_WRITE
(%
o0
,
%
o2
,
%
o1
)
wrpr
%
o5
,
%
pstate
retl
nop
/
*
Reload
MMU
related
context
switch
state
at
*
schedule
()
time
.
*
...
...
arch/sparc64/mm/init.c
View file @
b70c0fa1
...
...
@@ -277,6 +277,16 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t p
mm_rss
=
get_mm_rss
(
mm
);
if
(
mm_rss
>=
mm
->
context
.
tsb_rss_limit
)
tsb_grow
(
mm
,
mm_rss
,
GFP_ATOMIC
);
if
((
pte_val
(
pte
)
&
_PAGE_ALL_SZ_BITS
)
==
_PAGE_SZBITS
)
{
struct
tsb
*
tsb
;
unsigned
long
tag
;
tsb
=
&
mm
->
context
.
tsb
[(
address
>>
PAGE_SHIFT
)
&
(
mm
->
context
.
tsb_nentries
-
1UL
)];
tag
=
(
address
>>
22UL
)
|
CTX_HWBITS
(
mm
->
context
)
<<
48UL
;
tsb_insert
(
tsb
,
tag
,
pte_val
(
pte
));
}
}
void
flush_dcache_page
(
struct
page
*
page
)
...
...
include/asm-sparc64/mmu.h
View file @
b70c0fa1
...
...
@@ -97,6 +97,8 @@ struct tsb {
unsigned
long
pte
;
}
__attribute__
((
aligned
(
TSB_ENTRY_ALIGNMENT
)));
extern
void
tsb_insert
(
struct
tsb
*
ent
,
unsigned
long
tag
,
unsigned
long
pte
);
typedef
struct
{
unsigned
long
sparc64_ctx_val
;
struct
tsb
*
tsb
;
...
...
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