diff options
author | David S. Miller <davem@davemloft.net> | 2006-03-22 03:49:59 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-22 04:15:14 -0500 |
commit | dcc1e8dd88d4bc55e32a26dad7633d20ffe606d2 (patch) | |
tree | a47592213d94f918867d3dd81bb91dac3e727dea /include/asm-sparc64/mmu_context.h | |
parent | 14778d9072e53d2171f66ffd9657daff41acfaed (diff) |
[SPARC64]: Add a secondary TSB for hugepage mappings.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64/mmu_context.h')
-rw-r--r-- | include/asm-sparc64/mmu_context.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/include/asm-sparc64/mmu_context.h b/include/asm-sparc64/mmu_context.h index e7974321d052..2337eb487719 100644 --- a/include/asm-sparc64/mmu_context.h +++ b/include/asm-sparc64/mmu_context.h | |||
@@ -29,20 +29,25 @@ extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm); | |||
29 | extern void destroy_context(struct mm_struct *mm); | 29 | extern void destroy_context(struct mm_struct *mm); |
30 | 30 | ||
31 | extern void __tsb_context_switch(unsigned long pgd_pa, | 31 | extern void __tsb_context_switch(unsigned long pgd_pa, |
32 | unsigned long tsb_reg, | 32 | struct tsb_config *tsb_base, |
33 | unsigned long tsb_vaddr, | 33 | struct tsb_config *tsb_huge, |
34 | unsigned long tsb_pte, | ||
35 | unsigned long tsb_descr_pa); | 34 | unsigned long tsb_descr_pa); |
36 | 35 | ||
37 | static inline void tsb_context_switch(struct mm_struct *mm) | 36 | static inline void tsb_context_switch(struct mm_struct *mm) |
38 | { | 37 | { |
39 | __tsb_context_switch(__pa(mm->pgd), mm->context.tsb_reg_val, | 38 | __tsb_context_switch(__pa(mm->pgd), |
40 | mm->context.tsb_map_vaddr, | 39 | &mm->context.tsb_block[0], |
41 | mm->context.tsb_map_pte, | 40 | #ifdef CONFIG_HUGETLB_PAGE |
42 | __pa(&mm->context.tsb_descr)); | 41 | (mm->context.tsb_block[1].tsb ? |
42 | &mm->context.tsb_block[1] : | ||
43 | NULL) | ||
44 | #else | ||
45 | NULL | ||
46 | #endif | ||
47 | , __pa(&mm->context.tsb_descr[0])); | ||
43 | } | 48 | } |
44 | 49 | ||
45 | extern void tsb_grow(struct mm_struct *mm, unsigned long mm_rss); | 50 | extern void tsb_grow(struct mm_struct *mm, unsigned long tsb_index, unsigned long mm_rss); |
46 | #ifdef CONFIG_SMP | 51 | #ifdef CONFIG_SMP |
47 | extern void smp_tsb_sync(struct mm_struct *mm); | 52 | extern void smp_tsb_sync(struct mm_struct *mm); |
48 | #else | 53 | #else |