X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=arch%2Fsparc64%2Fkernel%2Fbinfmt_aout32.c;fp=arch%2Fsparc64%2Fkernel%2Fbinfmt_aout32.c;h=0a6331c3d73b1a61404982187dac075e94c85305;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=c0422213d9d78648602c7c5459b73ec6f5249458;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c index c0422213d..0a6331c3d 100644 --- a/arch/sparc64/kernel/binfmt_aout32.c +++ b/arch/sparc64/kernel/binfmt_aout32.c @@ -32,7 +32,6 @@ #include #include #include -#include static int load_aout32_binary(struct linux_binprm *, struct pt_regs * regs); static int load_aout32_library(struct file*); @@ -240,8 +239,6 @@ static int load_aout32_binary(struct linux_binprm * bprm, struct pt_regs * regs) (current->mm->start_data = N_DATADDR(ex)); current->mm->brk = ex.a_bss + (current->mm->start_brk = N_BSSADDR(ex)); - current->mm->free_area_cache = current->mm->mmap_base; - current->mm->cached_hole_size = 0; current->mm->mmap = NULL; compute_creds(bprm); @@ -333,8 +330,15 @@ beyond_if: current->mm->start_stack = (unsigned long) create_aout32_tables((char __user *)bprm->p, bprm); - tsb_context_switch(current->mm); - + if (!(orig_thr_flags & _TIF_32BIT)) { + unsigned long pgd_cache = get_pgd_cache(current->mm->pgd); + + __asm__ __volatile__("stxa\t%0, [%1] %2\n\t" + "membar #Sync" + : /* no outputs */ + : "r" (pgd_cache), + "r" (TSB_REG), "i" (ASI_DMMU)); + } start_thread32(regs, ex.a_entry, current->mm->start_stack); if (current->ptrace & PT_PTRACED) send_sig(SIGTRAP, current, 0);