- Timestamp:
- 2010-01-20T20:33:55Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/fix-logger-deadlock, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 975e7e9
- Parents:
- 6c01702 (diff), 3c081d0e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- kernel
- Files:
-
- 14 edited
-
arch/arm32/Makefile.inc (modified) (1 diff)
-
arch/arm32/include/context.h (modified) (2 diffs)
-
arch/arm32/include/exception.h (modified) (2 diffs)
-
arch/arm32/src/debug/stacktrace.c (modified) (1 diff)
-
arch/arm32/src/debug/stacktrace_asm.S (modified) (1 diff)
-
arch/arm32/src/exc_handler.S (modified) (1 diff)
-
arch/arm32/src/exception.c (modified) (2 diffs)
-
arch/arm32/src/mm/page_fault.c (modified) (2 diffs)
-
arch/arm32/src/start.S (modified) (1 diff)
-
arch/ia64/include/mm/asid.h (modified) (1 diff)
-
arch/ia64/src/ia64.c (modified) (1 diff)
-
arch/ia64/src/mm/page.c (modified) (1 diff)
-
arch/ia64/src/start.S (modified) (1 diff)
-
generic/src/console/kconsole.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/Makefile.inc
r6c01702 r383ddd6 38 38 ATSIGN = % 39 39 40 GCC_CFLAGS += -fno-zero-initialized-in-bss 40 GCC_CFLAGS += -fno-zero-initialized-in-bss -mapcs-frame 41 41 42 42 BITS = 32 -
kernel/arch/arm32/include/context.h
r6c01702 r383ddd6 43 43 #define SP_DELTA (0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT)) 44 44 45 #define context_set(c, _pc, stack, size) \ 46 do { \ 47 (c)->pc = (uintptr_t) (_pc); \ 48 (c)->sp = ((uintptr_t) (stack)) + (size) - SP_DELTA; \ 49 (c)->fp = 0; \ 50 } while (0) 51 45 52 #ifndef __ASM__ 46 53 … … 62 69 uint32_t r9; 63 70 uint32_t r10; 64 uint32_t r11;71 uint32_t fp; /* r11 */ 65 72 66 73 ipl_t ipl; -
kernel/arch/arm32/include/exception.h
r6c01702 r383ddd6 102 102 uint32_t r9; 103 103 uint32_t r10; 104 uint32_t r11;104 uint32_t fp; 105 105 uint32_t r12; 106 106 … … 135 135 static inline unative_t istate_get_fp(istate_t *istate) 136 136 { 137 return istate-> r11;137 return istate->fp; 138 138 } 139 139 -
kernel/arch/arm32/src/debug/stacktrace.c
r6c01702 r383ddd6 38 38 #include <typedefs.h> 39 39 40 #define FRAME_OFFSET_FP_PREV -3 41 #define FRAME_OFFSET_RA -1 42 40 43 bool kernel_frame_pointer_validate(uintptr_t fp) 41 44 { 42 return f alse;45 return fp != 0; 43 46 } 44 47 45 48 bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 46 49 { 47 return false; 50 uint32_t *stack = (void *) fp; 51 52 *prev = stack[FRAME_OFFSET_FP_PREV]; 53 return true; 48 54 } 49 55 50 56 bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra) 51 57 { 52 return false; 58 uint32_t *stack = (void *) fp; 59 60 *ra = stack[FRAME_OFFSET_RA]; 61 return true; 53 62 } 54 63 55 64 bool uspace_frame_pointer_validate(uintptr_t fp) 56 65 { 57 return f alse;66 return fp != 0; 58 67 } 59 68 60 69 bool uspace_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 61 70 { 62 return false; 71 return !copy_from_uspace((void *) prev, 72 (uint32_t *) fp + FRAME_OFFSET_FP_PREV, sizeof(*prev)); 63 73 } 64 74 65 75 bool uspace_return_address_get(uintptr_t fp, uintptr_t *ra) 66 76 { 67 return false; 77 return !copy_from_uspace((void *) ra, (uint32_t *) fp + FRAME_OFFSET_RA, 78 sizeof(*ra)); 68 79 } 69 80 -
kernel/arch/arm32/src/debug/stacktrace_asm.S
r6c01702 r383ddd6 33 33 34 34 frame_pointer_get: 35 mov r0, fp 35 36 mov pc, lr 36 37 37 38 program_counter_get: 39 mov r0, lr 38 40 mov pc, lr -
kernel/arch/arm32/src/exc_handler.S
r6c01702 r383ddd6 123 123 stmfd r13!, {r2} 124 124 2: 125 # Stop stack traces here 126 mov fp, #0 125 127 .endm 126 128 -
kernel/arch/arm32/src/exception.c
r6c01702 r383ddd6 42 42 #include <print.h> 43 43 #include <syscall/syscall.h> 44 #include <stacktrace.h> 44 45 45 46 #ifdef MACHINE_testarm … … 183 184 printf(" r4: %x r5: %x r6: %x r7: %x\n", 184 185 istate->r4, istate->r5, istate->r6, istate->r7); 185 printf(" r8: %x r8: %x r10: %x r11: %x\n",186 istate->r8, istate->r9, istate->r10, istate-> r11);186 printf(" r8: %x r8: %x r10: %x fp: %x\n", 187 istate->r8, istate->r9, istate->r10, istate->fp); 187 188 printf(" r12: %x sp: %x lr: %x spsr: %x\n", 188 189 istate->r12, istate->sp, istate->lr, istate->spsr); 189 190 190 191 printf(" pc: %x\n", istate->pc); 192 193 stack_trace_istate(istate); 191 194 } 192 195 -
kernel/arch/arm32/src/mm/page_fault.c
r6c01702 r383ddd6 181 181 182 182 if (ret == AS_PF_FAULT) { 183 fault_if_from_uspace(istate, "Page fault: %#x.", badvaddr); 183 184 print_istate(istate); 184 185 printf("page fault - pc: %x, va: %x, status: %x(%x), " … … 186 187 access); 187 188 188 fault_if_from_uspace(istate, "Page fault: %#x.", badvaddr);189 189 panic("Page fault."); 190 190 } -
kernel/arch/arm32/src/start.S
r6c01702 r383ddd6 69 69 bl arch_pre_main 70 70 71 # 72 # Create the first stack frame. 73 # 74 mov fp, #0 75 mov ip, sp 76 push {fp, ip, lr, pc} 77 sub fp, ip, #4 78 71 79 bl main_bsp 72 80 -
kernel/arch/ia64/include/mm/asid.h
r6c01702 r383ddd6 50 50 * but those extra bits are not used by the kernel. 51 51 */ 52 #define RIDS_PER_ASID 752 #define RIDS_PER_ASID 8 53 53 54 54 #define RID_MAX 262143 /* 2^18 - 1 */ 55 #define RID_KERNEL 0 56 #define RID_INVALID 1 55 #define RID_KERNEL7 7 57 56 58 #define ASID2RID(asid, vrn) (((asid)>RIDS_PER_ASID)?(((asid)*RIDS_PER_ASID)+(vrn)):(asid))59 #define RID2ASID(rid) ((rid)/RIDS_PER_ASID)57 #define ASID2RID(asid, vrn) \ 58 ((asid) * RIDS_PER_ASID + (vrn)) 60 59 61 #define ASID_MAX_ARCH (RID_MAX/RIDS_PER_ASID) 60 #define RID2ASID(rid) \ 61 ((rid) / RIDS_PER_ASID) 62 63 #define ASID_MAX_ARCH (RID_MAX / RIDS_PER_ASID) 62 64 63 65 #endif -
kernel/arch/ia64/src/ia64.c
r6c01702 r383ddd6 203 203 } 204 204 205 sysinfo_set_item_val(" kbd", NULL, true);206 sysinfo_set_item_val(" kbd.inr", NULL, IRQ_KBD);207 sysinfo_set_item_val(" kbd.type", NULL, KBD_LEGACY);208 sysinfo_set_item_val(" kbd.address.physical", NULL,205 sysinfo_set_item_val("i8042", NULL, true); 206 sysinfo_set_item_val("i8042.inr_a", NULL, IRQ_KBD); 207 sysinfo_set_item_val("i8042.inr_b", NULL, IRQ_MOUSE); 208 sysinfo_set_item_val("i8042.address.physical", NULL, 209 209 (uintptr_t) I8042_BASE); 210 sysinfo_set_item_val(" kbd.address.kernel", NULL,210 sysinfo_set_item_val("i8042.address.kernel", NULL, 211 211 (uintptr_t) I8042_BASE); 212 212 #endif -
kernel/arch/ia64/src/mm/page.c
r6c01702 r383ddd6 71 71 72 72 /* 73 * First set up kernel region register. 74 * This is redundant (see start.S) but we keep it here just for sure. 75 */ 76 rr.word = rr_read(VRN_KERNEL); 77 rr.map.ve = 0; /* disable VHPT walker */ 78 rr.map.ps = PAGE_WIDTH; 79 rr.map.rid = ASID2RID(ASID_KERNEL, VRN_KERNEL); 80 rr_write(VRN_KERNEL, rr.word); 81 srlz_i(); 82 srlz_d(); 83 84 /* 85 * And setup the rest of region register. 73 * Set up kernel region registers. 74 * VRN_KERNEL has already been set in start.S. 75 * For paranoia reasons, we set it again. 86 76 */ 87 77 for(i = 0; i < REGION_REGISTERS; i++) { 88 /* skip kernel rr */89 if (i == VRN_KERNEL)90 continue;91 92 78 rr.word = rr_read(i); 93 79 rr.map.ve = 0; /* disable VHPT walker */ 94 rr.map.rid = RID_KERNEL;80 rr.map.rid = ASID2RID(ASID_KERNEL, i); 95 81 rr.map.ps = PAGE_WIDTH; 96 82 rr_write(i, rr.word); -
kernel/arch/ia64/src/start.S
r6c01702 r383ddd6 74 74 movl r10 = (RR_MASK) 75 75 and r9 = r10, r9 76 movl r10 = (( RID_KERNEL<< RID_SHIFT) | (KERNEL_PAGE_WIDTH << PS_SHIFT))76 movl r10 = (((RID_KERNEL7) << RID_SHIFT) | (KERNEL_PAGE_WIDTH << PS_SHIFT)) 77 77 or r9 = r10, r9 78 78 -
kernel/generic/src/console/kconsole.c
r6c01702 r383ddd6 543 543 if (str_lcmp(hlp->name, cmdline + start, 544 544 max(str_length(hlp->name), 545 str_nlength(cmdline + start, (size_t) (end - start) - 1))) == 0) {545 str_nlength(cmdline + start, (size_t) (end - start)))) == 0) { 546 546 cmd = hlp; 547 547 break;
Note:
See TracChangeset
for help on using the changeset viewer.
