Changeset 730376d in mainline for kernel/arch
- Timestamp:
- 2006-12-20T22:07:25Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0af7a09
- Parents:
- deada67
- Location:
- kernel/arch/sparc64
- Files:
-
- 4 edited
-
include/mm/tlb.h (modified) (6 diffs)
-
src/proc/scheduler.c (modified) (2 diffs)
-
src/smp/ipi.c (modified) (1 diff)
-
src/trap/interrupt.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/mm/tlb.h
rdeada67 r730376d 66 66 /* TLB Tag Access shifts */ 67 67 #define TLB_TAG_ACCESS_CONTEXT_SHIFT 0 68 #define TLB_TAG_ACCESS_CONTEXT_MASK ((1 <<13)-1)68 #define TLB_TAG_ACCESS_CONTEXT_MASK ((1 << 13) - 1) 69 69 #define TLB_TAG_ACCESS_VPN_SHIFT 13 70 70 … … 107 107 uint64_t value; 108 108 struct { 109 uint64_t vpn : 51; /**< Virtual Address bits 63:13. */110 unsigned context : 13; /**< Context identifier. */109 uint64_t vpn : 51; /**< Virtual Address bits 63:13. */ 110 unsigned context : 13; /**< Context identifier. */ 111 111 } __attribute__ ((packed)); 112 112 }; … … 383 383 * 384 384 * @param type Selects between context and page demap. 385 * @param context_encoding Specifies which Context register has Context ID for demap. 385 * @param context_encoding Specifies which Context register has Context ID for 386 * demap. 386 387 * @param page Address which is on the page to be demapped. 387 388 */ … … 398 399 da.vpn = pg.vpn; 399 400 400 asi_u64_write(ASI_IMMU_DEMAP, da.value, 0); /* da.value is the address within the ASI */ 401 asi_u64_write(ASI_IMMU_DEMAP, da.value, 0); /* da.value is the 402 * address within the 403 * ASI */ 401 404 flush(); 402 405 } … … 405 408 * 406 409 * @param type Selects between context and page demap. 407 * @param context_encoding Specifies which Context register has Context ID for demap. 410 * @param context_encoding Specifies which Context register has Context ID for 411 * demap. 408 412 * @param page Address which is on the page to be demapped. 409 413 */ … … 420 424 da.vpn = pg.vpn; 421 425 422 asi_u64_write(ASI_DMMU_DEMAP, da.value, 0); /* da.value is the address within the ASI */ 426 asi_u64_write(ASI_DMMU_DEMAP, da.value, 0); /* da.value is the 427 * address within the 428 * ASI */ 423 429 membar(); 424 430 } -
kernel/arch/sparc64/src/proc/scheduler.c
rdeada67 r730376d 95 95 96 96 /* 97 * Write kernel stack address to %g6 and a pointer to the last 98 * item in the userspace window buffer to %g7 in the alternate 99 * and interrupt sets. 97 * Write kernel stack address to %g6 of the alternate and 98 * interrupt global sets. 99 * 100 * Write pointer to the last item in the userspace window buffer 101 * to %g7 in the alternate set. Write to the interrupt %g7 is 102 * not necessary because: 103 * - spill traps operate only in the alternate global set, 104 * - preemptible trap handler switches to alternate globals 105 * before it explicitly uses %g7. 100 106 */ 101 107 uint64_t sp = (uintptr_t) THREAD->kstack + STACK_SIZE … … 110 116 /** Perform sparc64 specific steps before a thread stops running. 111 117 * 112 * Demap any locked DTLB entries i sntalled by the thread (i.e. kernel stack118 * Demap any locked DTLB entries installed by the thread (i.e. kernel stack 113 119 * and userspace window buffer). 114 120 */ -
kernel/arch/sparc64/src/smp/ipi.c
rdeada67 r730376d 74 74 75 75 do { 76 asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_0, (uintptr_t) func); 76 asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_0, (uintptr_t) 77 func); 77 78 asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_1, 0); 78 79 asi_u64_write(ASI_UDB_INTR_W, ASI_UDB_INTR_W_DATA_2, 0); 79 asi_u64_write(ASI_UDB_INTR_W, (mid << INTR_VEC_DISPATCH_MID_SHIFT) | ASI_UDB_INTR_W_DISPATCH, 0); 80 asi_u64_write(ASI_UDB_INTR_W, (mid << 81 INTR_VEC_DISPATCH_MID_SHIFT) | ASI_UDB_INTR_W_DISPATCH, 82 0); 80 83 81 84 membar(); -
kernel/arch/sparc64/src/trap/interrupt.c
rdeada67 r730376d 98 98 */ 99 99 #ifdef CONFIG_DEBUG 100 printf("cpu%d: spurious interrupt (intrcv=%#llx, data0=%#llx)\n", CPU->id, intrcv, data0); 100 printf("cpu%d: spurious interrupt (intrcv=%#llx, " 101 "data0=%#llx)\n", CPU->id, intrcv, data0); 101 102 #endif 102 103 }
Note:
See TracChangeset
for help on using the changeset viewer.
