|  | /* | 
|  | * Copyright (C) 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) | 
|  | * Licensed under the GPL | 
|  | */ | 
|  |  | 
|  | #ifndef __START_H__ | 
|  | #define __START_H__ | 
|  |  | 
|  | #include "kern_constants.h" | 
|  |  | 
|  | /* | 
|  | * Stolen from linux/const.h, which can't be directly included since | 
|  | * this is used in userspace code, which has no access to the kernel | 
|  | * headers.  Changed to be suitable for adding casts to the start, | 
|  | * rather than "UL" to the end. | 
|  | */ | 
|  |  | 
|  | /* Some constant macros are used in both assembler and | 
|  | * C code.  Therefore we cannot annotate them always with | 
|  | * 'UL' and other type specifiers unilaterally.  We | 
|  | * use the following macros to deal with this. | 
|  | */ | 
|  |  | 
|  | #ifdef __ASSEMBLY__ | 
|  | #define _UML_AC(X, Y)	(Y) | 
|  | #else | 
|  | #define __UML_AC(X, Y)	(X(Y)) | 
|  | #define _UML_AC(X, Y)	__UML_AC(X, Y) | 
|  | #endif | 
|  |  | 
|  | #define STUB_START _UML_AC(, 0x100000) | 
|  | #define STUB_CODE _UML_AC((unsigned long), STUB_START) | 
|  | #define STUB_DATA _UML_AC((unsigned long), STUB_CODE + UM_KERN_PAGE_SIZE) | 
|  | #define STUB_END _UML_AC((unsigned long), STUB_DATA + UM_KERN_PAGE_SIZE) | 
|  |  | 
|  | #ifndef __ASSEMBLY__ | 
|  |  | 
|  | #include "sysdep/ptrace.h" | 
|  |  | 
|  | struct cpu_task { | 
|  | int pid; | 
|  | void *task; | 
|  | }; | 
|  |  | 
|  | extern struct cpu_task cpu_tasks[]; | 
|  |  | 
|  | extern unsigned long low_physmem; | 
|  | extern unsigned long high_physmem; | 
|  | extern unsigned long uml_physmem; | 
|  | extern unsigned long uml_reserved; | 
|  | extern unsigned long end_vm; | 
|  | extern unsigned long start_vm; | 
|  | extern unsigned long long highmem; | 
|  |  | 
|  | extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; | 
|  | extern unsigned long _unprotected_end; | 
|  | extern unsigned long brk_start; | 
|  |  | 
|  | extern unsigned long host_task_size; | 
|  |  | 
|  | extern int linux_main(int argc, char **argv); | 
|  |  | 
|  | extern void (*sig_info[])(int, struct uml_pt_regs *); | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #endif |