Changeset 29b2bbf in mainline for kernel/arch/sparc64/include/trap/mmu.h
- Timestamp:
- 2006-09-18T22:10:20Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 19dba2b
- Parents:
- 57da95c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/trap/mmu.h
r57da95c r29b2bbf 45 45 #include <arch/trap/regwin.h> 46 46 47 #ifdef CONFIG_TSB 48 #include <arch/mm/tsb.h> 49 #endif 50 47 51 #define TT_FAST_INSTRUCTION_ACCESS_MMU_MISS 0x64 48 52 #define TT_FAST_DATA_ACCESS_MMU_MISS 0x68 … … 57 61 * First, try to refill TLB from TSB. 58 62 */ 59 ! TODO60 63 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 75 0: 61 76 wrpr %g0, PSTATE_PRIV_BIT | PSTATE_AG_BIT, %pstate 62 77 PREEMPTIBLE_HANDLER fast_instruction_access_mmu_miss … … 67 82 * First, try to refill TLB from TSB. 68 83 */ 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 70 97 71 98 /* … … 77 104 * Note that branch-delay slots are used in order to save space. 78 105 */ 79 106 0: 80 107 mov VA_DMMU_TAG_ACCESS, %g1 81 108 ldxa [%g1] ASI_DMMU, %g1 ! read the faulting Context and VPN … … 111 138 .macro FAST_DATA_ACCESS_PROTECTION_HANDLER tl 112 139 /* 113 * First, try to refill TLB from TSB.114 */115 ! TODO116 117 /*118 140 * The same special case as in FAST_DATA_ACCESS_MMU_MISS_HANDLER. 119 141 */ 142 120 143 .if (\tl > 0) 121 144 wrpr %g0, 1, %tl
Note:
See TracChangeset
for help on using the changeset viewer.