Changeset ed166f7 in mainline for kernel/arch/sparc64/include/trap/mmu.h
- Timestamp:
- 2006-08-31T18:53:14Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6767c1d
- Parents:
- e0b241f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/trap/mmu.h
re0b241f red166f7 43 43 #include <arch/mm/mmu.h> 44 44 #include <arch/mm/tte.h> 45 #include <arch/trap/regwin.h> 45 46 46 47 #define TT_FAST_INSTRUCTION_ACCESS_MMU_MISS 0x64 … … 51 52 52 53 #ifdef __ASM__ 54 53 55 .macro FAST_INSTRUCTION_ACCESS_MMU_MISS_HANDLER 54 /*55 *First, try to refill TLB from TSB.56 */56 ! 57 ! First, try to refill TLB from TSB. 58 ! 57 59 ! TODO 58 60 … … 75 77 * Note that branch-delay slots are used in order to save space. 76 78 */ 77 0: 79 78 80 mov VA_DMMU_TAG_ACCESS, %g1 79 81 ldxa [%g1] ASI_DMMU, %g1 ! read the faulting Context and VPN … … 85 87 86 88 or %g3, (TTE_CP|TTE_P|TTE_W), %g2 ! 8K pages are the default (encoded as 0) 87 set1, %g388 89 89 mov 1, %g3 90 sllx %g3, TTE_V_SHIFT, %g3 91 or %g2, %g3, %g2 90 92 stxa %g2, [%g0] ASI_DTLB_DATA_IN_REG ! identity map the kernel page 91 93 retry … … 93 95 /* 94 96 * Third, catch and handle special cases when the trap is caused by 95 * some register window trap handler. 97 * the userspace register window spill or fill handler. In case 98 * one of these two traps caused this trap, we just lower the trap 99 * level and service the DTLB miss. In the end, we restart 100 * the offending SAVE or RESTORE. 96 101 */ 97 102 0: 98 ! TODO103 HANDLE_MMU_TRAPS_FROM_SPILL_OR_FILL 99 104 100 0:101 105 wrpr %g0, PSTATE_PRIV_BIT | PSTATE_AG_BIT, %pstate 102 106 PREEMPTIBLE_HANDLER fast_data_access_mmu_miss … … 104 108 105 109 .macro FAST_DATA_ACCESS_PROTECTION_HANDLER 110 /* 111 * First, try to refill TLB from TSB. 112 */ 113 ! TODO 114 115 /* 116 * The same special case as in FAST_DATA_ACCESS_MMU_MISS_HANDLER. 117 */ 118 HANDLE_MMU_TRAPS_FROM_SPILL_OR_FILL 119 106 120 wrpr %g0, PSTATE_PRIV_BIT | PSTATE_AG_BIT, %pstate 107 121 PREEMPTIBLE_HANDLER fast_data_access_protection 108 122 .endm 123 124 /* 125 * Macro used to lower TL when a MMU trap is caused by 126 * the userspace register window spill or fill handler. 127 */ 128 .macro HANDLE_MMU_TRAPS_FROM_SPILL_OR_FILL 129 rdpr %tl, %g1 130 dec %g1 131 brz %g1, 0f ! if TL was 1, skip 132 nop 133 wrpr %g1, 0, %tl ! TL-- 134 rdpr %tt, %g2 135 cmp %g2, TT_SPILL_1_NORMAL 136 be 0f ! trap from spill_1_normal 137 cmp %g2, TT_FILL_1_NORMAL 138 be 0f ! trap from fill_1_normal 139 inc %g1 140 wrpr %g1, 0, %tl ! another trap, TL++ 141 0: 142 .endm 143 109 144 #endif /* __ASM__ */ 110 145
Note:
See TracChangeset
for help on using the changeset viewer.