]>
Commit | Line | Data |
---|---|---|
995473ae | 1 | /* |
ba180fd4 | 2 | * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
995473ae JD |
3 | * Licensed under the GPL |
4 | */ | |
5 | ||
37185b33 AV |
6 | #include <linux/init.h> |
7 | #include <linux/sched.h> | |
68db0cf1 | 8 | #include <linux/sched/task_stack.h> |
37185b33 AV |
9 | #include <as-layout.h> |
10 | #include <kern.h> | |
11 | #include <os.h> | |
12 | #include <skas.h> | |
995473ae | 13 | |
995473ae JD |
14 | extern void start_kernel(void); |
15 | ||
97a1fcbb | 16 | static int __init start_kernel_proc(void *unused) |
995473ae JD |
17 | { |
18 | int pid; | |
19 | ||
20 | block_signals(); | |
21 | pid = os_getpid(); | |
22 | ||
23 | cpu_tasks[0].pid = pid; | |
24 | cpu_tasks[0].task = current; | |
28fa468f | 25 | |
995473ae | 26 | start_kernel(); |
77bf4400 | 27 | return 0; |
995473ae JD |
28 | } |
29 | ||
30 | extern int userspace_pid[]; | |
31 | ||
c14b8494 JD |
32 | extern char cpu0_irqstack[]; |
33 | ||
77bf4400 | 34 | int __init start_uml(void) |
995473ae | 35 | { |
c14b8494 JD |
36 | stack_protections((unsigned long) &cpu0_irqstack); |
37 | set_sigstack(cpu0_irqstack, THREAD_SIZE); | |
995473ae JD |
38 | |
39 | init_new_thread_signals(); | |
40 | ||
41 | init_task.thread.request.u.thread.proc = start_kernel_proc; | |
42 | init_task.thread.request.u.thread.arg = NULL; | |
77bf4400 JD |
43 | return start_idle_thread(task_stack_page(&init_task), |
44 | &init_task.thread.switch_buf); | |
995473ae JD |
45 | } |
46 | ||
47 | unsigned long current_stub_stack(void) | |
48 | { | |
ba180fd4 | 49 | if (current->mm == NULL) |
77bf4400 | 50 | return 0; |
995473ae | 51 | |
6c738ffa | 52 | return current->mm->context.id.stack; |
995473ae | 53 | } |