1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 4 */ 5 6 #ifndef __START_H__ 7 #define __START_H__ 8 9 #include <generated/asm-offsets.h> 10 11 /* 12 * Stolen from linux/const.h, which can't be directly included since 13 * this is used in userspace code, which has no access to the kernel 14 * headers. Changed to be suitable for adding casts to the start, 15 * rather than "UL" to the end. 16 */ 17 18 /* Some constant macros are used in both assembler and 19 * C code. Therefore we cannot annotate them always with 20 * 'UL' and other type specifiers unilaterally. We 21 * use the following macros to deal with this. 22 */ 23 #define STUB_START stub_start 24 #define STUB_CODE STUB_START 25 #define STUB_DATA (STUB_CODE + UM_KERN_PAGE_SIZE) 26 #define STUB_DATA_PAGES 2 27 #define STUB_SIZE ((1 + STUB_DATA_PAGES) * UM_KERN_PAGE_SIZE) 28 #define STUB_END (STUB_START + STUB_SIZE) 29 30 #ifndef __ASSEMBLER__ 31 32 #include <sysdep/ptrace.h> 33 34 struct task_struct; 35 extern struct task_struct *cpu_tasks[]; 36 37 extern unsigned long long physmem_size; 38 39 extern unsigned long high_physmem; 40 extern unsigned long uml_physmem; 41 extern unsigned long uml_reserved; 42 extern unsigned long end_vm; 43 extern unsigned long start_vm; 44 45 extern unsigned long brk_start; 46 47 extern unsigned long host_task_size; 48 extern unsigned long stub_start; 49 50 extern int linux_main(int argc, char **argv, char **envp); 51 extern void uml_finishsetup(void); 52 53 struct siginfo; 54 extern void (*sig_info[])(int, struct siginfo *si, struct uml_pt_regs *, void *); 55 56 #endif 57 58 #endif 59