Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/um/include/asm/processor-generic.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
4
*/
5
6
#ifndef __UM_PROCESSOR_GENERIC_H
7
#define __UM_PROCESSOR_GENERIC_H
8
9
struct pt_regs;
10
11
struct task_struct;
12
13
#include <asm/ptrace.h>
14
#include <sysdep/archsetjmp.h>
15
16
#include <linux/prefetch.h>
17
18
#include <asm/cpufeatures.h>
19
20
struct mm_struct;
21
22
struct thread_struct {
23
struct pt_regs *segv_regs;
24
struct task_struct *prev_sched;
25
struct arch_thread arch;
26
jmp_buf switch_buf;
27
struct {
28
struct {
29
int (*proc)(void *);
30
void *arg;
31
} thread;
32
} request;
33
34
void *segv_continue;
35
36
/* Contains variable sized FP registers */
37
struct pt_regs regs;
38
};
39
40
#define INIT_THREAD \
41
{ \
42
.regs = EMPTY_REGS, \
43
.prev_sched = NULL, \
44
.arch = INIT_ARCH_THREAD, \
45
.request = { } \
46
}
47
48
/*
49
* User space process size: 3GB (default).
50
*/
51
extern unsigned long task_size;
52
53
#define TASK_SIZE (task_size)
54
55
#undef STACK_TOP
56
#undef STACK_TOP_MAX
57
58
extern unsigned long stacksizelim;
59
60
#define STACK_ROOM (stacksizelim)
61
#define STACK_TOP (TASK_SIZE - 2 * PAGE_SIZE)
62
#define STACK_TOP_MAX STACK_TOP
63
64
/* This decides where the kernel will search for a free chunk of vm
65
* space during mmap's.
66
*/
67
#define TASK_UNMAPPED_BASE (0x40000000)
68
69
extern void start_thread(struct pt_regs *regs, unsigned long entry,
70
unsigned long stack);
71
72
struct cpuinfo_um {
73
unsigned long loops_per_jiffy;
74
int ipi_pipe[2];
75
int cache_alignment;
76
union {
77
__u32 x86_capability[NCAPINTS + NBUGINTS];
78
unsigned long x86_capability_alignment;
79
};
80
};
81
82
extern struct cpuinfo_um boot_cpu_data;
83
84
#define cpu_data(cpu) boot_cpu_data
85
#define current_cpu_data boot_cpu_data
86
#define cache_line_size() (boot_cpu_data.cache_alignment)
87
88
#define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)
89
extern unsigned long __get_wchan(struct task_struct *p);
90
91
#endif
92
93