Changeset 3da11f37 in mainline for kernel/arch/sparc64/src


Ignore:
Timestamp:
2009-11-28T20:19:29Z (16 years ago)
Author:
Pavel Rimsky <pavel@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3f35634c
Parents:
18baf9c0
Message:

Merged changes essential for the code to reach 'uinit'.

Location:
kernel/arch/sparc64/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/mm/sun4v/tlb.c

    r18baf9c0 r3da11f37  
    11/*
    22 * Copyright (c) 2005 Jakub Jermar
     3 * Copyright (c) 2008 Pavel Rimsky
    34 * All rights reserved.
    45 *
     
    5253#include <panic.h>
    5354#include <arch/asm.h>
     55#include <arch/cpu.h>
     56#include <arch/mm/pagesize.h>
    5457
    5558#ifdef CONFIG_TSB
     
    518521void tlb_invalidate_asid(asid_t asid)
    519522{
    520         tlb_context_reg_t pc_save, ctx;
    521        
    522523        /* switch to nucleus because we are mapped by the primary context */
    523524        nucleus_enter();
    524        
    525         ctx.v = pc_save.v = mmu_primary_context_read();
    526         ctx.context = asid;
    527         mmu_primary_context_write(ctx.v);
    528        
    529         itlb_demap(TLB_DEMAP_CONTEXT, TLB_DEMAP_PRIMARY, 0);
    530         dtlb_demap(TLB_DEMAP_CONTEXT, TLB_DEMAP_PRIMARY, 0);
    531        
    532         mmu_primary_context_write(pc_save.v);
    533        
     525        __hypercall_fast4(MMU_DEMAP_CTX, 0, 0, asid,
     526                MMU_FLAG_ITLB | MMU_FLAG_DTLB);
     527
    534528        nucleus_leave();
    535529}
     
    545539{
    546540        unsigned int i;
    547         tlb_context_reg_t pc_save, ctx;
    548541       
    549542        /* switch to nucleus because we are mapped by the primary context */
    550543        nucleus_enter();
    551        
    552         ctx.v = pc_save.v = mmu_primary_context_read();
    553         ctx.context = asid;
    554         mmu_primary_context_write(ctx.v);
    555        
    556         for (i = 0; i < cnt * MMU_PAGES_PER_PAGE; i++) {
    557                 itlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_PRIMARY,
    558                     page + i * MMU_PAGE_SIZE);
    559                 dtlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_PRIMARY,
    560                     page + i * MMU_PAGE_SIZE);
    561         }
    562        
    563         mmu_primary_context_write(pc_save.v);
    564        
     544
     545        for (i = 0; i < cnt; i++) {
     546                __hypercall_fast5(MMU_DEMAP_PAGE, 0, 0, page, asid,
     547                        MMU_FLAG_DTLB | MMU_FLAG_ITLB);
     548        }
     549
    565550        nucleus_leave();
    566551}
  • kernel/arch/sparc64/src/sun4v/asm.S

    r18baf9c0 r3da11f37  
    7575         */
    7676        wrpr %g0, WSTATE_OTHER(0) | WSTATE_NORMAL(1), %wstate
    77 
    7877        done                            ! jump to userspace
  • kernel/arch/sparc64/src/trap/sun4v/trap_table.S

    r18baf9c0 r3da11f37  
    281281.global fast_instruction_access_mmu_miss_handler_tl0
    282282fast_instruction_access_mmu_miss_handler_tl0:
    283         /*FAST_INSTRUCTION_ACCESS_MMU_MISS_HANDLER*/
     283        FAST_INSTRUCTION_ACCESS_MMU_MISS_HANDLER
    284284
    285285/* TT = 0x68, TL = 0, fast_data_access_MMU_miss */
     
    390390.global data_access_exception_tl1
    391391data_access_exception_tl1:
    392         /*wrpr %g0, 1, %tl
     392        wrpr %g0, 1, %tl
    393393        wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate
    394         PREEMPTIBLE_HANDLER data_access_exception*/
     394        PREEMPTIBLE_HANDLER data_access_exception
    395395
    396396/* TT = 0x32, TL > 0, data_access_error */
Note: See TracChangeset for help on using the changeset viewer.