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 <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 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 high_physmem; 48extern unsigned long uml_physmem; 49extern unsigned long uml_reserved; 50extern unsigned long end_vm; 51extern unsigned long start_vm; 52extern unsigned long long highmem; 53 54extern unsigned long brk_start; 55 56extern unsigned long host_task_size; 57 58extern int linux_main(int argc, char **argv); 59extern void uml_finishsetup(void); 60 61struct siginfo; 62extern void (*sig_info[])(int, struct siginfo *si, struct uml_pt_regs *); 63 64#endif 65 66#endif 67