Subversion Repositories HelenOS

Rev

Rev 4347 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4347 Rev 4348
Line 31... Line 31...
31
 */
31
 */
32
/** @file
32
/** @file
33
 */
33
 */
34
 
34
 
35
#include <arch.h>
35
#include <arch.h>
36
#include <arch/ski/ski.h>
36
#include <arch/drivers/ski.h>
37
#include <arch/drivers/it.h>
37
#include <arch/drivers/it.h>
38
#include <arch/interrupt.h>
38
#include <arch/interrupt.h>
39
#include <arch/barrier.h>
39
#include <arch/barrier.h>
40
#include <arch/asm.h>
40
#include <arch/asm.h>
41
#include <arch/register.h>
41
#include <arch/register.h>
Line 85... Line 85...
85
    for (i = 0; i < init.cnt; i++) {
85
    for (i = 0; i < init.cnt; i++) {
86
        init.tasks[i].addr =
86
        init.tasks[i].addr =
87
            ((unsigned long) bootinfo->taskmap.tasks[i].addr) |
87
            ((unsigned long) bootinfo->taskmap.tasks[i].addr) |
88
            VRN_MASK;
88
            VRN_MASK;
89
        init.tasks[i].size = bootinfo->taskmap.tasks[i].size;
89
        init.tasks[i].size = bootinfo->taskmap.tasks[i].size;
90
        strncpy(init.tasks[i].name, bootinfo->taskmap.tasks[i].name,
90
        str_cpy(init.tasks[i].name, CONFIG_TASK_NAME_BUFLEN,
91
            CONFIG_TASK_NAME_BUFLEN);
91
            bootinfo->taskmap.tasks[i].name);
92
    }
92
    }
93
}
93
}
94
 
94
 
95
void arch_pre_mm_init(void)
95
void arch_pre_mm_init(void)
96
{
96
{
Line 146... Line 146...
146
{
146
{
147
}
147
}
148
 
148
 
149
void arch_post_smp_init(void)
149
void arch_post_smp_init(void)
150
{
150
{
151
#ifdef SKI
151
#ifdef MACHINE_ski
152
    indev_t *in;
152
    ski_instance_t *ski_instance = skiin_init();
153
    in = skiin_init();
153
    if (ski_instance) {
-
 
154
        srln_instance_t *srln_instance = srln_init();
154
    if (in)
155
        if (srln_instance) {
155
        srln_init(in);
156
            indev_t *sink = stdin_wire();
-
 
157
            indev_t *srln = srln_wire(srln_instance, sink);
-
 
158
            skiin_wire(ski_instance, srln);
-
 
159
        }
-
 
160
    }
-
 
161
   
156
    skiout_init();
162
    skiout_init();
157
#endif
163
#endif
158
   
164
   
159
#ifdef CONFIG_EGA
165
#ifdef CONFIG_EGA
160
    ega_init(EGA_BASE, EGA_VIDEORAM);
166
    ega_init(EGA_BASE, EGA_VIDEORAM);
161
#endif
167
#endif
162
   
168
   
163
#ifdef CONFIG_NS16550
169
#ifdef CONFIG_NS16550
164
    indev_t *kbrdin_ns16550
170
    ns16550_instance_t *ns16550_instance
165
        = ns16550_init((ns16550_t *) NS16550_BASE, NS16550_IRQ, NULL, NULL);
171
        = ns16550_init((ns16550_t *) NS16550_BASE, NS16550_IRQ, NULL, NULL);
-
 
172
    if (ns16550_instance) {
-
 
173
        srln_instance_t *srln_instance = srln_init();
166
    if (kbrdin_ns16550)
174
        if (srln_instance) {
167
        srln_init(kbrdin_ns16550);
175
            indev_t *sink = stdin_wire();
-
 
176
            indev_t *srln = srln_wire(srln_instance, sink);
-
 
177
            ns16550_wire(ns16550_instance, srln);
-
 
178
        }
-
 
179
    }
168
   
180
   
169
    sysinfo_set_item_val("kbd", NULL, true);
181
    sysinfo_set_item_val("kbd", NULL, true);
170
    sysinfo_set_item_val("kbd.inr", NULL, NS16550_IRQ);
182
    sysinfo_set_item_val("kbd.inr", NULL, NS16550_IRQ);
171
    sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550);
183
    sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550);
172
    sysinfo_set_item_val("kbd.address.physical", NULL,
184
    sysinfo_set_item_val("kbd.address.physical", NULL,
Line 174... Line 186...
174
    sysinfo_set_item_val("kbd.address.kernel", NULL,
186
    sysinfo_set_item_val("kbd.address.kernel", NULL,
175
        (uintptr_t) NS16550_BASE);
187
        (uintptr_t) NS16550_BASE);
176
#endif
188
#endif
177
   
189
   
178
#ifdef CONFIG_I8042
190
#ifdef CONFIG_I8042
179
    indev_t *kbrdin_i8042 = i8042_init((i8042_t *) I8042_BASE, IRQ_KBD);
191
    i8042_instance_t *i8042_instance = i8042_init((i8042_t *) I8042_BASE, IRQ_KBD);
-
 
192
    if (i8042_instance) {
-
 
193
        kbrd_instance_t *kbrd_instance = kbrd_init();
180
    if (kbrdin_i8042)
194
        if (kbrd_instance) {
181
        kbrd_init(kbrdin_i8042);
195
            indev_t *sink = stdin_wire();
-
 
196
            indev_t *kbrd = kbrd_wire(kbrd_instance, sink);
-
 
197
            i8042_wire(i8042_instance, kbrd);
-
 
198
        }
-
 
199
    }
182
   
200
   
183
    sysinfo_set_item_val("kbd", NULL, true);
201
    sysinfo_set_item_val("kbd", NULL, true);
184
    sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD);
202
    sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD);
185
    sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY);
203
    sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY);
186
    sysinfo_set_item_val("kbd.address.physical", NULL,
204
    sysinfo_set_item_val("kbd.address.physical", NULL,
Line 236... Line 254...
236
/** Acquire console back for kernel
254
/** Acquire console back for kernel
237
 *
255
 *
238
 */
256
 */
239
void arch_grab_console(void)
257
void arch_grab_console(void)
240
{
258
{
241
#ifdef SKI
259
#ifdef MACHINE_ski
242
    ski_kbd_grab();
260
    ski_kbd_grab();
243
#endif
261
#endif
244
}
262
}
245
 
263
 
246
/** Return console to userspace
264
/** Return console to userspace
247
 *
265
 *
248
 */
266
 */
249
void arch_release_console(void)
267
void arch_release_console(void)
250
{
268
{
251
#ifdef SKI
269
#ifdef MACHINE_ski
252
    ski_kbd_release();
270
    ski_kbd_release();
253
#endif
271
#endif
254
}
272
}
255
 
273
 
256
void arch_reboot(void)
274
void arch_reboot(void)