Changeset 7bb6b06 in mainline
- Timestamp:
- 2006-09-10T21:21:39Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9a5b556
- Parents:
- 208fa65
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/_link.ld.in
r208fa65 r7bb6b06 44 44 45 45 /DISCARD/ : { 46 *(.comment); 47 *(.note*); 46 *(*); 48 47 } 49 48 -
kernel/arch/sparc64/include/asm.h
r208fa65 r7bb6b06 223 223 uintptr_t v; 224 224 225 __asm__ volatile ("and %%sp, %1, %0\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));225 __asm__ volatile ("andn %%sp, %1, %0\n" : "=r" (v) : "r" (STACK_SIZE-1)); 226 226 227 227 return v; -
kernel/arch/sparc64/include/trap/exception.h
r208fa65 r7bb6b06 51 51 #include <typedefs.h> 52 52 53 extern void dump_istate(istate_t *istate); 54 53 55 extern void instruction_access_exception(int n, istate_t *istate); 54 56 extern void instruction_access_error(int n, istate_t *istate); -
kernel/arch/sparc64/src/asm.S
r208fa65 r7bb6b06 228 228 229 229 .macro WRITE_ALTERNATE_REGISTER reg, bit 230 save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp 231 rdpr %pstate, %l0 232 wrpr %l0, \bit, %pstate 233 mov %i0, \reg 234 wrpr %l0, 0, %pstate 235 ret 236 restore 230 wrpr %g0, (\bit | PSTATE_PRIV_BIT), %pstate 231 mov %o0, \reg 232 retl 233 wrpr %g0, PSTATE_PRIV_BIT, %pstate 237 234 .endm 238 235 239 236 .macro READ_ALTERNATE_REGISTER reg, bit 240 save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp 241 rdpr %pstate, %l0 242 wrpr %l0, \bit, %pstate 243 mov \reg, %i0 244 wrpr %l0, 0, %pstate 245 ret 246 restore 237 wrpr %g0, (\bit | PSTATE_PRIV_BIT), %pstate 238 mov \reg, %o0 239 retl 240 wrpr %g0, PSTATE_PRIV_BIT, %pstate 247 241 .endm 248 242 … … 306 300 307 301 done ! jump to userspace 302 -
kernel/arch/sparc64/src/console.c
r208fa65 r7bb6b06 54 54 #include <arch/mm/tlb.h> 55 55 #include <arch/boot/boot.h> 56 #include <arch.h> 56 57 57 58 #define KEYBOARD_POLL_PAUSE 50000 /* 50ms */ … … 80 81 void kkbdpoll(void *arg) 81 82 { 83 thread_detach(THREAD); 84 82 85 if (!bootinfo.keyboard.addr) 83 86 return; -
kernel/arch/sparc64/src/mm/tlb.c
r208fa65 r7bb6b06 48 48 #include <config.h> 49 49 #include <arch/trap/trap.h> 50 #include <arch/trap/exception.h> 50 51 #include <panic.h> 51 52 #include <arch/asm.h> 52 #include <symtab.h>53 53 54 54 static void dtlb_pte_copy(pte_t *t, bool ro); … … 308 308 void do_fast_instruction_access_mmu_miss_fault(istate_t *istate, const char *str) 309 309 { 310 char *tpc_str = get_symtab_entry(istate->tpc);311 312 310 fault_if_from_uspace(istate, "%s\n", str); 313 printf("TPC=%p, (%s)\n", istate->tpc, tpc_str);311 dump_istate(istate); 314 312 panic("%s\n", str); 315 313 } … … 318 316 { 319 317 uintptr_t va; 320 char *tpc_str = get_symtab_entry(istate->tpc); 318 319 va = tag.vpn << PAGE_WIDTH; 320 321 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, va, tag.context); 322 dump_istate(istate); 323 printf("Faulting page: %p, ASID=%d\n", va, tag.context); 324 panic("%s\n", str); 325 } 326 327 void do_fast_data_access_protection_fault(istate_t *istate, tlb_tag_access_reg_t tag, const char *str) 328 { 329 uintptr_t va; 321 330 322 331 va = tag.vpn << PAGE_WIDTH; … … 324 333 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, va, tag.context); 325 334 printf("Faulting page: %p, ASID=%d\n", va, tag.context); 326 printf("TPC=%p, (%s)\n", istate->tpc, tpc_str); 327 panic("%s\n", str); 328 } 329 330 void do_fast_data_access_protection_fault(istate_t *istate, tlb_tag_access_reg_t tag, const char *str) 331 { 332 uintptr_t va; 333 char *tpc_str = get_symtab_entry(istate->tpc); 334 335 va = tag.vpn << PAGE_WIDTH; 336 337 fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, va, tag.context); 338 printf("Faulting page: %p, ASID=%d\n", va, tag.context); 339 printf("TPC=%p, (%s)\n", istate->tpc, tpc_str); 335 dump_istate(istate); 340 336 panic("%s\n", str); 341 337 } -
kernel/arch/sparc64/src/start.S
r208fa65 r7bb6b06 77 77 mov %o1, %o2 78 78 mov %o0, %o1 79 set bootinfo, %o079 sethi %hi(bootinfo), %o0 80 80 call memcpy 81 nop81 or %o0, %lo(bootinfo), %o0 82 82 83 83 /* 84 84 * Switch to kernel trap table. 85 85 */ 86 set trap_table, %g187 wrpr %g1, 0, %tba86 sethi %hi(trap_table), %g1 87 wrpr %g1, %lo(trap_table), %tba 88 88 89 89 /* … … 121 121 sllx %r2, TTE_SIZE_SHIFT, %r2; \ 122 122 or %r1, %r2, %r1; \ 123 set1, %r2; \123 mov 1, %r2; \ 124 124 sllx %r2, TTE_V_SHIFT, %r2; \ 125 125 or %r1, %r2, %r1; … … 173 173 ! write ITLB tag of context 1 174 174 SET_TLB_TAG(g1, MEM_CONTEXT_TEMP) 175 setVA_DMMU_TAG_ACCESS, %g2175 mov VA_DMMU_TAG_ACCESS, %g2 176 176 stxa %g1, [%g2] ASI_IMMU 177 177 flush %g5 … … 183 183 184 184 ! switch to context 1 185 setMEM_CONTEXT_TEMP, %g1185 mov MEM_CONTEXT_TEMP, %g1 186 186 stxa %g1, [VA_PRIMARY_CONTEXT_REG] %asi ! ASI_DMMU is correct here !!! 187 187 flush %g5 … … 194 194 ! write ITLB tag of context 0 195 195 SET_TLB_TAG(g1, MEM_CONTEXT_KERNEL) 196 setVA_DMMU_TAG_ACCESS, %g2196 mov VA_DMMU_TAG_ACCESS, %g2 197 197 stxa %g1, [%g2] ASI_IMMU 198 198 flush %g5 … … 211 211 212 212 ! set context 1 in the primary context register 213 setMEM_CONTEXT_TEMP, %g1213 mov MEM_CONTEXT_TEMP, %g1 214 214 stxa %g1, [VA_PRIMARY_CONTEXT_REG] %asi ! ASI_DMMU is correct here !!! 215 215 flush %g5 -
kernel/arch/sparc64/src/trap/exception.c
r208fa65 r7bb6b06 40 40 #include <debug.h> 41 41 #include <typedefs.h> 42 #include <symtab.h> 43 #include <print.h> 44 45 void dump_istate(istate_t *istate) 46 { 47 printf("TSTATE=%#llx\n", istate->tstate); 48 printf("TPC=%#llx (%s)\n", istate->tpc, get_symtab_entry(istate->tpc)); 49 printf("TNPC=%#llx (%s)\n", istate->tnpc, get_symtab_entry(istate->tnpc)); 50 } 42 51 43 52 /** Handle instruction_access_exception. (0x8) */ … … 45 54 { 46 55 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 47 panic("%s at %p.\n", __FUNCTION__, istate->tpc); 56 dump_istate(istate); 57 panic("%s\n", __FUNCTION__); 48 58 } 49 59 … … 52 62 { 53 63 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 54 panic("%s at %p.\n", __FUNCTION__, istate->tpc); 64 dump_istate(istate); 65 panic("%s\n", __FUNCTION__); 55 66 } 56 67 … … 59 70 { 60 71 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 61 panic("%s at %p.\n", __FUNCTION__, istate->tpc); 72 dump_istate(istate); 73 panic("%s\n", __FUNCTION__); 62 74 } 63 75 … … 66 78 { 67 79 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 68 panic("%s at %p.\n", __FUNCTION__, istate->tpc); 80 dump_istate(istate); 81 panic("%s\n", __FUNCTION__); 69 82 } 70 83 … … 73 86 { 74 87 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 75 panic("%s at %p.\n", __FUNCTION__, istate->tpc); 88 dump_istate(istate); 89 panic("%s\n", __FUNCTION__); 76 90 } 77 91 … … 80 94 { 81 95 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 82 panic("%s from %p.\n", __FUNCTION__, istate->tpc); 96 dump_istate(istate); 97 panic("%s\n", __FUNCTION__); 83 98 } 84 99 … … 87 102 { 88 103 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 89 panic("%s from %p.\n", __FUNCTION__, istate->tpc); 104 dump_istate(istate); 105 panic("%s\n", __FUNCTION__); 90 106 } 91 107 … … 94 110 { 95 111 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 96 panic("%s from %p.\n", __FUNCTION__, istate->tpc); 112 dump_istate(istate); 113 panic("%s\n", __FUNCTION__); 97 114 } 98 115 … … 101 118 { 102 119 fault_if_from_uspace(istate, "%s\n", __FUNCTION__); 103 panic("%s at %p.\n", __FUNCTION__, istate->tpc); 120 dump_istate(istate); 121 panic("%s\n", __FUNCTION__); 104 122 } 105 123 -
kernel/arch/sparc64/src/trap/trap_table.S
r208fa65 r7bb6b06 651 651 ba 1f 652 652 nop 653 654 653 0: 655 654 save %sp, -PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp … … 782 781 /* 783 782 * OTHERWIN != 0 or fall-through from the OTHERWIN == 0 case. 784 * The CWP has already been restored to the value it had prior tothe SAVE783 * The CWP has already been restored to the value it had after the SAVE 785 784 * at the beginning of this function. 786 785 */ -
kernel/genarch/src/kbd/ns16550.c
r208fa65 r7bb6b06 48 48 #include <console/console.h> 49 49 #include <interrupt.h> 50 #include <sysinfo/sysinfo.h> 50 51 51 52 #define LSR_DATA_READY 0x01 … … 87 88 chardev_initialize("ns16550_kbd", &kbrd, &ops); 88 89 stdin = &kbrd; 90 91 sysinfo_set_item_val("kbd", NULL, true); 92 sysinfo_set_item_val("kbd.irq", NULL, 0); 93 sysinfo_set_item_val("kbd.address.virtual", NULL, (uintptr_t) kbd_virt_address); 89 94 } 90 95 -
kernel/generic/src/printf/printf_core.c
r208fa65 r7bb6b06 393 393 * FLAGS:@n 394 394 * - "#" Force to print prefix. 395 * For conversion \%o the prefix is 0, for %x and \%X prefixes are 0x and 0X395 * For conversion \%o the prefix is 0, for \%x and \%X prefixes are 0x and 0X 396 396 * and for conversion \%b the prefix is 0b. 397 397 * -
kernel/generic/src/proc/task.c
r208fa65 r7bb6b06 68 68 * @li the tasks_lock is held, 69 69 * @li the task's lock is held when task's lock is acquired before releasing tasks_lock or 70 * @li the task's refcount is gr ater than 070 * @li the task's refcount is greater than 0 71 71 * 72 72 */ … … 436 436 * and no new threads can be created. 437 437 */ 438 438 439 439 ipc_cleanup(); 440 440 futex_cleanup(); -
kernel/generic/src/sysinfo/sysinfo.c
r208fa65 r7bb6b06 79 79 80 80 if (subtree == NULL) { 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 81 sysinfo_item_t *item = malloc(sizeof(sysinfo_item_t), 0); 82 int i = 0, j; 83 84 ASSERT(item); 85 *psubtree = item; 86 item->next = NULL; 87 item->val_type = SYSINFO_VAL_UNDEFINED; 88 item->subinfo.table = NULL; 89 90 while (name[i] && (name[i] != '.')) 91 i++; 92 93 item->name = malloc(i, 0); 94 ASSERT(item->name); 95 96 for (j = 0; j < i; j++) 97 item->name[j] = name[j]; 98 item->name[j] = 0; 99 100 if (name[i]) { /* =='.' */ 101 item->subinfo_type = SYSINFO_SUBINFO_TABLE; 102 return sysinfo_create_path(name + i + 1, &(item->subinfo.table)); 103 } 104 item->subinfo_type = SYSINFO_SUBINFO_NONE; 105 return item; 106 106 } 107 107 -
uspace/ns/ns.c
r208fa65 r7bb6b06 84 84 static void *klogaddr = NULL; 85 85 86 static void get_as (ipc_callid_t callid, ipc_call_t *call, char *name, void **addr)86 static void get_as_area(ipc_callid_t callid, ipc_call_t *call, char *name, void **addr) 87 87 { 88 88 void *ph_addr; … … 117 117 switch (IPC_GET_ARG3(call)) { 118 118 case SERVICE_MEM_REALTIME: 119 get_as (callid, &call, "clock.faddr", &clockaddr);119 get_as_area(callid, &call, "clock.faddr", &clockaddr); 120 120 break; 121 121 case SERVICE_MEM_KLOG: 122 get_as (callid, &call, "klog.faddr", &klogaddr);122 get_as_area(callid, &call, "klog.faddr", &klogaddr); 123 123 break; 124 124 default:
Note:
See TracChangeset
for help on using the changeset viewer.