diff options
| author | David S. Miller <davem@nuts.ninka.net> | 2002-04-03 22:07:36 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2002-04-03 22:07:36 -0800 |
| commit | 925aba562ccab6fbdbac1017988bb5470bc6d78e (patch) | |
| tree | 45640f9ae613d60575c739ca24e9431a9d3e13b6 | |
| parent | 3e82bc8454aafd87f0ad2ab0e1185dbb41cd9fe5 (diff) | |
On sparc64, flush_thread needs to setup the PGD cache
for 64-bit apps too.
| -rw-r--r-- | arch/sparc64/kernel/process.c | 14 |
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); |
