Path: blob/master/arch/um/include/asm/processor-generic.h
26481 views
/* SPDX-License-Identifier: GPL-2.0 */1/*2* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)3*/45#ifndef __UM_PROCESSOR_GENERIC_H6#define __UM_PROCESSOR_GENERIC_H78struct pt_regs;910struct task_struct;1112#include <asm/ptrace.h>13#include <sysdep/archsetjmp.h>1415#include <linux/prefetch.h>1617#include <asm/cpufeatures.h>1819struct mm_struct;2021struct thread_struct {22struct pt_regs *segv_regs;23struct task_struct *prev_sched;24struct arch_thread arch;25jmp_buf switch_buf;26struct {27struct {28int (*proc)(void *);29void *arg;30} thread;31} request;3233void *segv_continue;3435/* Contains variable sized FP registers */36struct pt_regs regs;37};3839#define INIT_THREAD \40{ \41.regs = EMPTY_REGS, \42.prev_sched = NULL, \43.arch = INIT_ARCH_THREAD, \44.request = { } \45}4647/*48* User space process size: 3GB (default).49*/50extern unsigned long task_size;5152#define TASK_SIZE (task_size)5354#undef STACK_TOP55#undef STACK_TOP_MAX5657extern unsigned long stacksizelim;5859#define STACK_ROOM (stacksizelim)60#define STACK_TOP (TASK_SIZE - 2 * PAGE_SIZE)61#define STACK_TOP_MAX STACK_TOP6263/* This decides where the kernel will search for a free chunk of vm64* space during mmap's.65*/66#define TASK_UNMAPPED_BASE (0x40000000)6768extern void start_thread(struct pt_regs *regs, unsigned long entry,69unsigned long stack);7071struct cpuinfo_um {72unsigned long loops_per_jiffy;73int ipi_pipe[2];74int cache_alignment;75union {76__u32 x86_capability[NCAPINTS + NBUGINTS];77unsigned long x86_capability_alignment;78};79};8081extern struct cpuinfo_um boot_cpu_data;8283#define cpu_data(cpu) boot_cpu_data84#define current_cpu_data boot_cpu_data85#define cache_line_size() (boot_cpu_data.cache_alignment)8687#define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)88extern unsigned long __get_wchan(struct task_struct *p);8990#endif919293