Rev 4344 | Rev 4346 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4344 | Rev 4345 | ||
---|---|---|---|
Line 60... | Line 60... | ||
60 | #include <smp/ipi.h> |
60 | #include <smp/ipi.h> |
61 | #include <arch/atomic.h> |
61 | #include <arch/atomic.h> |
62 | #include <panic.h> |
62 | #include <panic.h> |
63 | #include <print.h> |
63 | #include <print.h> |
64 | #include <sysinfo/sysinfo.h> |
64 | #include <sysinfo/sysinfo.h> |
- | 65 | #include <string.h> |
|
65 | 66 | ||
66 | /* NS16550 as a COM 1 */ |
67 | /* NS16550 as a COM 1 */ |
67 | #define NS16550_IRQ (4 + LEGACY_INTERRUPT_BASE) |
68 | #define NS16550_IRQ (4 + LEGACY_INTERRUPT_BASE) |
68 | 69 | ||
69 | bootinfo_t *bootinfo; |
70 | bootinfo_t *bootinfo; |
70 | 71 | ||
71 | static uint64_t iosapic_base = 0xfec00000; |
72 | static uint64_t iosapic_base = 0xfec00000; |
72 | 73 | ||
- | 74 | /** Performs ia64-specific initialization before main_bsp() is called. */ |
|
73 | void arch_pre_main(void) |
75 | void arch_pre_main(void) |
74 | { |
76 | { |
75 | /* Setup usermode init tasks. */ |
77 | /* Setup usermode init tasks. */ |
76 | 78 | ||
77 | unsigned int i; |
79 | unsigned int i; |
Line 81... | Line 83... | ||
81 | for (i = 0; i < init.cnt; i++) { |
83 | for (i = 0; i < init.cnt; i++) { |
82 | init.tasks[i].addr = |
84 | init.tasks[i].addr = |
83 | ((unsigned long) bootinfo->taskmap.tasks[i].addr) | |
85 | ((unsigned long) bootinfo->taskmap.tasks[i].addr) | |
84 | VRN_MASK; |
86 | VRN_MASK; |
85 | init.tasks[i].size = bootinfo->taskmap.tasks[i].size; |
87 | init.tasks[i].size = bootinfo->taskmap.tasks[i].size; |
- | 88 | strncpy(init.tasks[i].name, bootinfo->taskmap.tasks[i].name, |
|
- | 89 | CONFIG_TASK_NAME_BUFLEN); |
|
86 | } |
90 | } |
87 | } |
91 | } |
88 | 92 | ||
89 | void arch_pre_mm_init(void) |
93 | void arch_pre_mm_init(void) |
90 | { |
94 | { |
Line 165... | Line 169... | ||
165 | 169 | ||
166 | #ifdef CONFIG_NS16550 |
170 | #ifdef CONFIG_NS16550 |
167 | inr = NS16550_IRQ; |
171 | inr = NS16550_IRQ; |
168 | (void) ns16550_init((ns16550_t *)NS16550_BASE, devno, inr, NULL, NULL); |
172 | (void) ns16550_init((ns16550_t *)NS16550_BASE, devno, inr, NULL, NULL); |
169 | sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550); |
173 | sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550); |
170 | sysinfo_set_item_val("kbd.port", NULL, (uintptr_t)NS16550_BASE); |
174 | sysinfo_set_item_val("kbd.address.physical", NULL, |
- | 175 | (uintptr_t) NS16550_BASE); |
|
- | 176 | sysinfo_set_item_val("kbd.address.kernel", NULL, |
|
- | 177 | (uintptr_t) NS16550_BASE); |
|
171 | #else |
178 | #else |
172 | inr = IRQ_KBD; |
179 | inr = IRQ_KBD; |
173 | (void) i8042_init((i8042_t *)I8042_BASE, devno, inr); |
180 | (void) i8042_init((i8042_t *)I8042_BASE, devno, inr); |
174 | sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY); |
181 | sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY); |
- | 182 | sysinfo_set_item_val("kbd.address.physical", NULL, |
|
- | 183 | (uintptr_t) I8042_BASE); |
|
- | 184 | sysinfo_set_item_val("kbd.address.kernel", NULL, |
|
- | 185 | (uintptr_t) I8042_BASE); |
|
175 | #endif |
186 | #endif |
176 | sysinfo_set_item_val("kbd", NULL, true); |
187 | sysinfo_set_item_val("kbd", NULL, true); |
177 | sysinfo_set_item_val("kbd.devno", NULL, devno); |
188 | sysinfo_set_item_val("kbd.devno", NULL, devno); |
178 | sysinfo_set_item_val("kbd.inr", NULL, inr); |
189 | sysinfo_set_item_val("kbd.inr", NULL, inr); |
179 | #endif |
190 | #endif |