summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.ninka.net>2002-04-03 22:07:36 -0800
committerDavid S. Miller <davem@nuts.ninka.net>2002-04-03 22:07:36 -0800
commit925aba562ccab6fbdbac1017988bb5470bc6d78e (patch)
tree45640f9ae613d60575c739ca24e9431a9d3e13b6
parent3e82bc8454aafd87f0ad2ab0e1185dbb41cd9fe5 (diff)
On sparc64, flush_thread needs to setup the PGD cache
for 64-bit apps too.
-rw-r--r--arch/sparc64/kernel/process.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index c04dd1e23968..92b3948a0a78 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -424,10 +424,10 @@ void flush_thread(void)
struct thread_info *t = current_thread_info();
if (t->task->mm) {
+ unsigned long pgd_cache = 0UL;
if (test_thread_flag(TIF_32BIT)) {
struct mm_struct *mm = t->task->mm;
pgd_t *pgd0 = &mm->pgd[0];
- unsigned long pgd_cache;
if (pgd_none(*pgd0)) {
pmd_t *page = pmd_alloc_one_fast(NULL, 0);
@@ -436,13 +436,13 @@ void flush_thread(void)
pgd_set(pgd0, page);
}
pgd_cache = pgd_val(*pgd0) << 11UL;
- __asm__ __volatile__("stxa %0, [%1] %2\n\t"
- "membar #Sync"
- : /* no outputs */
- : "r" (pgd_cache),
- "r" (TSB_REG),
- "i" (ASI_DMMU));
}
+ __asm__ __volatile__("stxa %0, [%1] %2\n\t"
+ "membar #Sync"
+ : /* no outputs */
+ : "r" (pgd_cache),
+ "r" (TSB_REG),
+ "i" (ASI_DMMU));
}
set_thread_wsaved(0);