Subversion Repositories HelenOS

Rev

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