File Index
Files and directories
Sign in
FILE

process.c

File preview with syntax highlighting.

linux-6.19.14/arch/um/kernel/skas/process.c C
 1// SPDX-License-Identifier: GPL-2.0
 2/*
 3 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
 4 */
 5
 6#include <linux/init.h>
 7#include <linux/sched/mm.h>
 8#include <linux/sched/task_stack.h>
 9#include <linux/sched/task.h>
10#include <linux/smp-internal.h>
11
12#include <asm/tlbflush.h>
13
14#include <as-layout.h>
15#include <kern.h>
16#include <os.h>
17#include <skas.h>
18#include <kern_util.h>
19
20extern void start_kernel(void);
21
22static int __init start_kernel_proc(void *unused)
23{
24	block_signals_trace();
25
26	start_kernel();
27	return 0;
28}
29
30char cpu_irqstacks[NR_CPUS][THREAD_SIZE] __aligned(THREAD_SIZE);
31
32int __init start_uml(void)
33{
34	stack_protections((unsigned long) &cpu_irqstacks[0]);
35	set_sigstack(cpu_irqstacks[0], THREAD_SIZE);
36
37	init_new_thread_signals();
38
39	init_task.thread.request.thread.proc = start_kernel_proc;
40	init_task.thread.request.thread.arg = NULL;
41	return start_idle_thread(task_stack_page(&init_task),
42				 &init_task.thread.switch_buf);
43}
44
45unsigned long current_stub_stack(void)
46{
47	if (current->mm == NULL)
48		return 0;
49
50	return current->mm->context.id.stack;
51}
52
53struct mm_id *current_mm_id(void)
54{
55	if (current->mm == NULL)
56		return NULL;
57
58	return &current->mm->context.id;
59}
60
61void current_mm_sync(void)
62{
63	if (current->mm == NULL)
64		return;
65
66	um_tlb_sync(current->mm);
67}
68
69static DEFINE_SPINLOCK(initial_jmpbuf_spinlock);
70
71void initial_jmpbuf_lock(void)
72{
73	spin_lock_irq(&initial_jmpbuf_spinlock);
74}
75
76void initial_jmpbuf_unlock(void)
77{
78	spin_unlock_irq(&initial_jmpbuf_spinlock);
79}
~/ Read-only file preview.