1/* 2 * Copyright (C) 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 3 * Licensed under the GPL 4 */ 5 6#ifndef __START_H__ 7#define __START_H__ 8 9#include "kern_constants.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 24#ifdef __ASSEMBLY__ 25#define _UML_AC(X, Y) (Y) 26#else 27#define __UML_AC(X, Y) (X(Y)) 28#define _UML_AC(X, Y) __UML_AC(X, Y) 29#endif 30 31#define STUB_START _UML_AC(, 0x100000) 32#define STUB_CODE _UML_AC((unsigned long), STUB_START) 33#define STUB_DATA _UML_AC((unsigned long), STUB_CODE + UM_KERN_PAGE_SIZE) 34#define STUB_END _UML_AC((unsigned long), STUB_DATA + UM_KERN_PAGE_SIZE) 35 36#ifndef __ASSEMBLY__ 37 38#include "sysdep/ptrace.h" 39 40struct cpu_task { 41 int pid; 42 void *task; 43}; 44 45extern struct cpu_task cpu_tasks[]; 46 47extern unsigned long low_physmem; 48extern unsigned long high_physmem; 49extern unsigned long uml_physmem; 50extern unsigned long uml_reserved; 51extern unsigned long end_vm; 52extern unsigned long start_vm; 53extern unsigned long long highmem; 54 55extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; 56extern unsigned long _unprotected_end; 57extern unsigned long brk_start; 58 59extern unsigned long host_task_size; 60 61extern int linux_main(int argc, char **argv); 62 63extern void (*sig_info[])(int, struct uml_pt_regs *); 64 65#endif 66 67#endif 68