47,10 → 47,11 |
#include <genarch/ofw/ofw_tree.h> |
#include <userspace.h> |
#include <ddi/irq.h> |
#include <string.h> |
|
bootinfo_t bootinfo; |
|
/** Perform sparc64 specific initialization before main_bsp() is called. */ |
/** Perform sparc64-specific initialization before main_bsp() is called. */ |
void arch_pre_main(void) |
{ |
/* Copy init task info. */ |
61,6 → 62,8 |
for (i = 0; i < bootinfo.taskmap.count; i++) { |
init.tasks[i].addr = (uintptr_t) bootinfo.taskmap.tasks[i].addr; |
init.tasks[i].size = bootinfo.taskmap.tasks[i].size; |
strncpy(init.tasks[i].name, bootinfo.taskmap.tasks[i].name, |
CONFIG_TASK_NAME_BUFLEN); |
} |
|
/* Copy boot allocations info. */ |
86,8 → 89,6 |
* But we only create 128 buckets. |
*/ |
irq_init(1 << 11, 128); |
|
standalone_sparc64_console_init(); |
} |
} |
|
101,16 → 102,16 |
|
void arch_post_smp_init(void) |
{ |
static thread_t *t = NULL; |
if (config.cpu_active == 1) { |
standalone_sparc64_console_init(); |
|
|
if (!t) { |
/* |
* Create thread that polls keyboard. |
*/ |
t = thread_create(kkbdpoll, NULL, TASK, 0, "kkbdpoll", true); |
/* Create thread that polls keyboard. |
* XXX: this is only used by sgcn now |
*/ |
thread_t *t = thread_create(kkbdpoll, NULL, TASK, 0, "kkbdpoll", |
true); |
if (!t) |
panic("cannot create kkbdpoll\n"); |
panic("Cannot create kkbdpoll."); |
thread_ready(t); |
} |
} |
161,5 → 162,19 |
while (1); |
} |
|
/** Construct function pointer |
* |
* @param fptr function pointer structure |
* @param addr function address |
* @param caller calling function address |
* |
* @return address of the function pointer |
* |
*/ |
void *arch_construct_function(fncptr_t *fptr, void *addr, void *caller) |
{ |
return addr; |
} |
|
/** @} |
*/ |