Changeset 5f70118 in mainline for kernel/arch/amd64/src
- Timestamp:
- 2010-01-10T12:16:59Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c77a64f
- Parents:
- 309ede1 (diff), 1ac3a52 (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/arch/amd64/src
- Files:
-
- 2 added
- 7 edited
-
amd64.c (modified) (3 diffs)
-
asm_utils.S (modified) (5 diffs)
-
boot/boot.S (modified) (2 diffs)
-
cpu/cpu.c (modified) (2 diffs)
-
debug/stacktrace.c (added)
-
debug/stacktrace_asm.S (added)
-
interrupt.c (modified) (4 diffs)
-
mm/page.c (modified) (1 diff)
-
smp/ap.S (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/amd64.c
r309ede1 r5f70118 67 67 #include <ddi/irq.h> 68 68 #include <sysinfo/sysinfo.h> 69 #include <memstr.h> 69 70 70 71 /** Disable I/O on non-privileged levels … … 211 212 i8042_wire(i8042_instance, kbrd); 212 213 trap_virtual_enable_irqs(1 << IRQ_KBD); 214 trap_virtual_enable_irqs(1 << IRQ_MOUSE); 213 215 } 214 216 } … … 218 220 * self-sufficient. 219 221 */ 220 sysinfo_set_item_val("kbd", NULL, true); 221 sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD); 222 sysinfo_set_item_val("kbd.address.physical", NULL, 222 sysinfo_set_item_val("i8042", NULL, true); 223 sysinfo_set_item_val("i8042.inr_a", NULL, IRQ_KBD); 224 sysinfo_set_item_val("i8042.inr_b", NULL, IRQ_MOUSE); 225 sysinfo_set_item_val("i8042.address.physical", NULL, 223 226 (uintptr_t) I8042_BASE); 224 sysinfo_set_item_val(" kbd.address.kernel", NULL,227 sysinfo_set_item_val("i8042.address.kernel", NULL, 225 228 (uintptr_t) I8042_BASE); 226 229 #endif -
kernel/arch/amd64/src/asm_utils.S
r309ede1 r5f70118 27 27 # 28 28 29 #define IREGISTER_SPACE 7229 #define IREGISTER_SPACE 80 30 30 31 31 #define IOFFSET_RAX 0x0 … … 38 38 #define IOFFSET_R10 0x38 39 39 #define IOFFSET_R11 0x40 40 #define IOFFSET_RBP 0x48 40 41 41 42 # Mask for interrupts 0 - 31 (bits 0 - 31) where 0 means that int has no error word … … 179 180 movq %r10, IOFFSET_R10(%rsp) 180 181 movq %r11, IOFFSET_R11(%rsp) 182 movq %rbp, IOFFSET_RBP(%rsp) 181 183 .endm 182 184 … … 191 193 movq IOFFSET_R10(%rsp), %r10 192 194 movq IOFFSET_R11(%rsp), %r11 195 movq IOFFSET_RBP(%rsp), %rbp 193 196 .endm 194 197 … … 235 238 cld 236 239 240 # Stop stack traces here 241 xorq %rbp, %rbp 242 237 243 movq $(\i), %rdi # %rdi - first parameter 238 244 movq %rsp, %rsi # %rsi - pointer to istate -
kernel/arch/amd64/src/boot/boot.S
r309ede1 r5f70118 174 174 call arch_pre_main 175 175 176 # create the first stack frame 177 pushq $0 178 movq %rsp, %rbp 179 176 180 call main_bsp 177 181 … … 329 333 330 334 extended_cpuid_msg: 331 .asciz "E xtended CPUID not supported. System halted."335 .asciz "Error: Extended CPUID not supported -- CPU is not 64-bit. System halted." 332 336 long_mode_msg: 333 .asciz " 64bit long mode not supported. System halted."337 .asciz "Error: 64-bit long mode not supported. System halted." 334 338 noexecute_msg: 335 .asciz " No-execute pages not supported. System halted."339 .asciz "Error: No-execute pages not supported. System halted." 336 340 fx_msg: 337 .asciz " FXSAVE/FXRESTORE instructions not supported. System halted."341 .asciz "Error: FXSAVE/FXRESTORE instructions not supported. System halted." 338 342 sse2_msg: 339 .asciz " SSE2 instructions not supported. System halted."343 .asciz "Error: SSE2 instructions not supported. System halted." -
kernel/arch/amd64/src/cpu/cpu.c
r309ede1 r5f70118 130 130 CPU->arch.vendor = VendorUnknown; 131 131 if (has_cpuid()) { 132 cpuid( 0, &info);132 cpuid(INTEL_CPUID_LEVEL, &info); 133 133 134 134 /* … … 150 150 } 151 151 152 cpuid( 1, &info);152 cpuid(INTEL_CPUID_STANDARD, &info); 153 153 CPU->arch.family = (info.cpuid_eax >> 8) & 0xf; 154 154 CPU->arch.model = (info.cpuid_eax >> 4) & 0xf; -
kernel/arch/amd64/src/interrupt.c
r309ede1 r5f70118 53 53 #include <ddi/irq.h> 54 54 #include <symtab.h> 55 #include <stacktrace.h> 55 56 56 57 /* … … 80 81 istate->r10, istate->r11); 81 82 printf("%%rsp=%#llx\n", &istate->stack[0]); 83 84 stack_trace_istate(istate); 82 85 } 83 86 … … 96 99 decode_istate(n, istate); 97 100 panic("Unserviced interrupt."); 101 } 102 103 static void de_fault(int n, istate_t *istate) 104 { 105 fault_if_from_uspace(istate, "Divide error."); 106 decode_istate(n, istate); 107 panic("Divide error."); 98 108 } 99 109 … … 200 210 } 201 211 212 exc_register(0, "de_fault", (iroutine) de_fault); 202 213 exc_register(7, "nm_fault", (iroutine) nm_fault); 203 214 exc_register(12, "ss_fault", (iroutine) ss_fault); -
kernel/arch/amd64/src/mm/page.c
r309ede1 r5f70118 203 203 { 204 204 if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH)) 205 panic("Unable to map physical memory %p (%d bytes).", physaddr, size) 205 panic("Unable to map physical memory %p (%d bytes).", physaddr, 206 size); 206 207 207 208 uintptr_t virtaddr = PA2KA(last_frame); -
kernel/arch/amd64/src/smp/ap.S
r309ede1 r5f70118 99 99 start64: 100 100 movq (ctx), %rsp 101 pushq $0 102 movq %rsp, %rbp 101 103 call main_ap - AP_BOOT_OFFSET + BOOT_OFFSET # never returns 102 104
Note:
See TracChangeset
for help on using the changeset viewer.
