Changeset 7008097 in mainline
- Timestamp:
- 2010-06-28T21:42:28Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 22a28a69
- Parents:
- 5b8016d
- Location:
- kernel/arch/sparc64
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/interrupt.h
r5b8016d r7008097 76 76 } 77 77 78 extern void decode_istate(istate_t *); 79 78 80 #endif 79 81 -
kernel/arch/sparc64/src/mm/sun4u/tlb.c
r5b8016d r7008097 27 27 */ 28 28 29 /** @addtogroup sparc64mm 29 /** @addtogroup sparc64mm 30 30 * @{ 31 31 */ … … 58 58 static void dtlb_pte_copy(pte_t *, size_t, bool); 59 59 static void itlb_pte_copy(pte_t *, size_t); 60 static void do_fast_instruction_access_mmu_miss_fault(istate_t *, const char *); 60 static void do_fast_instruction_access_mmu_miss_fault(istate_t *, uintptr_t, 61 const char *); 61 62 static void do_fast_data_access_mmu_miss_fault(istate_t *, tlb_tag_access_reg_t, 62 63 const char *); … … 222 223 * Forward the page fault to the address space page fault 223 224 * handler. 224 */ 225 */ 225 226 page_table_unlock(AS, true); 226 227 if (as_page_fault(page_16k, PF_ACCESS_EXEC, istate) == 227 228 AS_PF_FAULT) { 228 229 do_fast_instruction_access_mmu_miss_fault(istate, 229 __func__);230 istate->tpc, __func__); 230 231 } 231 232 } … … 258 259 /* NULL access in kernel */ 259 260 do_fast_data_access_mmu_miss_fault(istate, tag, 260 __func__);261 "Dereferencing NULL pointer"); 261 262 } else if (page_8k >= end_of_identity) { 262 263 /* … … 438 439 439 440 void do_fast_instruction_access_mmu_miss_fault(istate_t *istate, 440 const char *str) 441 { 442 fault_if_from_uspace(istate, "%s.", str); 443 dump_istate(istate); 444 panic("%s.", str); 441 uintptr_t va, const char *str) 442 { 443 fault_if_from_uspace(istate, "%s, Address=%p.", str, va); 444 panic_memtrap(istate, PF_ACCESS_EXEC, va, "%s.", str); 445 445 } 446 446 … … 451 451 452 452 va = tag.vpn << MMU_PAGE_WIDTH; 453 if (tag.context) { 454 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d).", str, va, 455 tag.context); 456 } 457 dump_istate(istate); 458 printf("Faulting page: %p, ASID=%d.\n", va, tag.context); 459 panic("%s.", str); 453 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d).", str, va, 454 tag.context); 455 panic_memtrap(istate, PF_ACCESS_READ, va, "%s.", str); 460 456 } 461 457 … … 466 462 467 463 va = tag.vpn << MMU_PAGE_WIDTH; 468 469 if (tag.context) { 470 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d).", str, va, 471 tag.context); 472 } 473 printf("Faulting page: %p, ASID=%d\n", va, tag.context); 474 dump_istate(istate); 475 panic("%s.", str); 464 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d).", str, va, 465 tag.context); 466 panic_memtrap(istate, PF_ACCESS_WRITE, va, "%s.", str); 476 467 } 477 468 -
kernel/arch/sparc64/src/mm/sun4v/tlb.c
r5b8016d r7008097 28 28 */ 29 29 30 /** @addtogroup sparc64mm 30 /** @addtogroup sparc64mm 31 31 * @{ 32 32 */ … … 62 62 static void itlb_pte_copy(pte_t *); 63 63 static void dtlb_pte_copy(pte_t *, bool); 64 static void do_fast_instruction_access_mmu_miss_fault(istate_t *, const char *); 64 static void do_fast_instruction_access_mmu_miss_fault(istate_t *, uintptr_t, 65 const char *); 65 66 static void do_fast_data_access_mmu_miss_fault(istate_t *, uint64_t, 66 67 const char *); … … 235 236 * Forward the page fault to the address space page fault 236 237 * handler. 237 */ 238 */ 238 239 page_table_unlock(AS, true); 239 240 if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) { 240 241 do_fast_instruction_access_mmu_miss_fault(istate, 241 __func__);242 istate->tpc, __func__); 242 243 } 243 244 } … … 354 355 } 355 356 356 void do_fast_instruction_access_mmu_miss_fault(istate_t *istate, 357 void do_fast_instruction_access_mmu_miss_fault(istate_t *istate, uintptr_t va, 357 358 const char *str) 358 359 { 359 fault_if_from_uspace(istate, "%s.", str); 360 dump_istate(istate); 361 panic("%s.", str); 360 fault_if_from_uspace(istate, "%s, Address=%p.", str, va); 361 panic_memtrap(istate, PF_ACCESS_EXEC, va, "%s.", str); 362 362 } 363 363 … … 365 365 uint64_t page_and_ctx, const char *str) 366 366 { 367 if (DMISS_CONTEXT(page_and_ctx)) { 368 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, DMISS_ADDRESS(page_and_ctx), 369 DMISS_CONTEXT(page_and_ctx)); 370 } 371 dump_istate(istate); 372 printf("Faulting page: %p, ASID=%d\n", DMISS_ADDRESS(page_and_ctx), DMISS_CONTEXT(page_and_ctx)); 373 panic("%s\n", str); 367 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d).", str, 368 DMISS_ADDRESS(page_and_ctx), DMISS_CONTEXT(page_and_ctx)); 369 panic_memtrap(istate, PF_ACCESS_READ, DMISS_ADDRESS(page_and_ctx), 370 "%s."); 374 371 } 375 372 … … 377 374 uint64_t page_and_ctx, const char *str) 378 375 { 379 if (DMISS_CONTEXT(page_and_ctx)) { 380 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, DMISS_ADDRESS(page_and_ctx), 381 DMISS_CONTEXT(page_and_ctx)); 382 } 383 printf("Faulting page: %p, ASID=%d\n", DMISS_ADDRESS(page_and_ctx), DMISS_CONTEXT(page_and_ctx)); 384 dump_istate(istate); 385 panic("%s\n", str); 376 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d).", str, 377 DMISS_ADDRESS(page_and_ctx), DMISS_CONTEXT(page_and_ctx)); 378 panic_memtrap(istate, PF_ACCESS_WRITE, DMISS_ADDRESS(page_and_ctx), 379 "%s."); 386 380 } 387 381 -
kernel/arch/sparc64/src/trap/exception.c
r5b8016d r7008097 44 44 #include <symtab.h> 45 45 46 void d ump_istate(istate_t *istate)46 void decode_istate(istate_t *istate) 47 47 { 48 48 const char *tpcs = symtab_fmt_name_lookup(istate->tpc); … … 58 58 { 59 59 fault_if_from_uspace(istate, "%s.", __func__); 60 dump_istate(istate); 61 panic("%s.", __func__); 60 panic_badtrap(istate, n, "%s.", __func__); 62 61 } 63 62 … … 66 65 { 67 66 fault_if_from_uspace(istate, "%s.", __func__); 68 dump_istate(istate); 69 panic("%s.", __func__); 67 panic_badtrap(istate, n, "%s.", __func__); 70 68 } 71 69 … … 74 72 { 75 73 fault_if_from_uspace(istate, "%s.", __func__); 76 dump_istate(istate); 77 panic("%s.", __func__); 74 panic_badtrap(istate, n, "%s.", __func__); 78 75 } 79 76 … … 82 79 { 83 80 fault_if_from_uspace(istate, "%s.", __func__); 84 dump_istate(istate); 85 panic("%s.", __func__); 81 panic_badtrap(istate, n, "%s.", __func__); 86 82 } 87 83 … … 90 86 { 91 87 fault_if_from_uspace(istate, "%s.", __func__); 92 dump_istate(istate); 93 panic("%s.", __func__); 88 panic_badtrap(istate, n, "%s.", __func__); 94 89 } 95 90 … … 98 93 { 99 94 fault_if_from_uspace(istate, "%s.", __func__); 100 dump_istate(istate); 101 panic("%s.", __func__); 95 panic_badtrap(istate, n, "%s.", __func__); 102 96 } 103 97 … … 118 112 #else 119 113 fault_if_from_uspace(istate, "%s.", __func__); 120 dump_istate(istate); 121 panic("%s.", __func__); 114 panic_badtrap(istate, n, "%s.", __func__); 122 115 #endif 123 116 } … … 127 120 { 128 121 fault_if_from_uspace(istate, "%s.", __func__); 129 dump_istate(istate); 130 panic("%s.", __func__); 122 panic_badtrap(istate, n, "%s.", __func__); 131 123 } 132 124 … … 135 127 { 136 128 fault_if_from_uspace(istate, "%s.", __func__); 137 dump_istate(istate); 138 panic("%s.", __func__); 129 panic_badtrap(istate, n, "%s.", __func__); 139 130 } 140 131 … … 143 134 { 144 135 fault_if_from_uspace(istate, "%s.", __func__); 145 dump_istate(istate); 146 panic("%s.", __func__); 136 panic_badtrap(istate, n, "%s.", __func__); 147 137 } 148 138 … … 151 141 { 152 142 fault_if_from_uspace(istate, "%s.", __func__); 153 dump_istate(istate); 154 panic("%s.", __func__); 143 panic_badtrap(istate, n, "%s.", __func__); 155 144 } 156 145 … … 159 148 { 160 149 fault_if_from_uspace(istate, "%s.", __func__); 161 dump_istate(istate); 162 describe_dmmu_fault(); 163 panic("%s.", __func__); 150 panic_badtrap(istate, n, "%s.", __func__); 164 151 } 165 152 … … 168 155 { 169 156 fault_if_from_uspace(istate, "%s.", __func__); 170 dump_istate(istate); 171 panic("%s.", __func__); 157 panic_badtrap(istate, n, "%s.", __func__); 172 158 } 173 159 … … 176 162 { 177 163 fault_if_from_uspace(istate, "%s.", __func__); 178 dump_istate(istate); 179 panic("%s.", __func__); 164 panic_badtrap(istate, n, "%s.", __func__); 180 165 } 181 166 … … 184 169 { 185 170 fault_if_from_uspace(istate, "%s.", __func__); 186 dump_istate(istate); 187 panic("%s.", __func__); 171 panic_badtrap(istate, n, "%s.", __func__); 188 172 } 189 173 … … 192 176 { 193 177 fault_if_from_uspace(istate, "%s.", __func__); 194 dump_istate(istate); 195 panic("%s.", __func__); 178 panic_badtrap(istate, n, "%s.", __func__); 196 179 } 197 180 … … 200 183 { 201 184 fault_if_from_uspace(istate, "%s.", __func__); 202 dump_istate(istate); 203 panic("%s.", __func__); 185 panic_badtrap(istate, n, "%s.", __func__); 204 186 } 205 187 … … 208 190 { 209 191 fault_if_from_uspace(istate, "%s.", __func__); 210 dump_istate(istate); 211 panic("%s.", __func__); 192 panic_badtrap(istate, n, "%s.", __func__); 212 193 } 213 194 … … 216 197 { 217 198 fault_if_from_uspace(istate, "%s.", __func__); 218 dump_istate(istate); 219 panic("%s.", __func__); 199 panic_badtrap(istate, n, "%s.", __func__); 220 200 } 221 201
Note:
See TracChangeset
for help on using the changeset viewer.