Ignore:
Timestamp:
2006-09-18T22:10:20Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
19dba2b
Parents:
57da95c
Message:

sparc64 work:

  • Experimental support for TSB (Translation Storage Buffer).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/include/trap/mmu.h

    r57da95c r29b2bbf  
    4545#include <arch/trap/regwin.h>
    4646
     47#ifdef CONFIG_TSB
     48#include <arch/mm/tsb.h>
     49#endif
     50
    4751#define TT_FAST_INSTRUCTION_ACCESS_MMU_MISS     0x64
    4852#define TT_FAST_DATA_ACCESS_MMU_MISS            0x68
     
    5761         * First, try to refill TLB from TSB.
    5862         */
    59         ! TODO
    6063
     64#ifdef CONFIG_TSB
     65        ldxa [%g0] ASI_IMMU, %g1                        ! read TSB Tag Target Register
     66        ldxa [%g0] ASI_IMMU_TSB_8KB_PTR_REG, %g2        ! read TSB 8K Pointer
     67        ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4            ! 16-byte atomic load into %g4 and %g5
     68        cmp %g1, %g4                                    ! is this the entry we are looking for?
     69        bne,pn %xcc, 0f
     70        nop
     71        stxa %g5, [%g0] ASI_ITLB_DATA_IN_REG            ! copy mapping from ITSB to ITLB
     72        retry
     73#endif
     74
     750:
    6176        wrpr %g0, PSTATE_PRIV_BIT | PSTATE_AG_BIT, %pstate
    6277        PREEMPTIBLE_HANDLER fast_instruction_access_mmu_miss
     
    6782         * First, try to refill TLB from TSB.
    6883         */
    69         ! TODO
     84
     85#ifdef CONFIG_TSB
     86        ldxa [%g0] ASI_DMMU, %g1                        ! read TSB Tag Target Register
     87        srlx %g1, TSB_TAG_TARGET_CONTEXT_SHIFT, %g2     ! is this kernel miss?
     88        brz,pn %g2, 0f
     89        ldxa [%g0] ASI_DMMU_TSB_8KB_PTR_REG, %g3        ! read TSB 8K Pointer
     90        ldda [%g3] ASI_NUCLEUS_QUAD_LDD, %g4            ! 16-byte atomic load into %g4 and %g5
     91        cmp %g1, %g4                                    ! is this the entry we are looking for?
     92        bne,pn %xcc, 0f
     93        nop
     94        stxa %g5, [%g0] ASI_DTLB_DATA_IN_REG            ! copy mapping from DTSB to DTLB
     95        retry
     96#endif
    7097
    7198        /*
     
    77104         * Note that branch-delay slots are used in order to save space.
    78105         */
    79 
     1060:
    80107        mov VA_DMMU_TAG_ACCESS, %g1
    81108        ldxa [%g1] ASI_DMMU, %g1                        ! read the faulting Context and VPN
     
    111138.macro FAST_DATA_ACCESS_PROTECTION_HANDLER tl
    112139        /*
    113          * First, try to refill TLB from TSB.
    114          */
    115         ! TODO
    116 
    117         /*
    118140         * The same special case as in FAST_DATA_ACCESS_MMU_MISS_HANDLER.
    119141         */
     142
    120143.if (\tl > 0)
    121144        wrpr %g0, 1, %tl
Note: See TracChangeset for help on using the changeset viewer.