xref: /openbmc/qemu/linux-user/qemu.h (revision 9de5e440b9f6a6c6305c0b81d1df4ddcc5a4b966)
1 #ifndef GEMU_H
2 #define GEMU_H
3 
4 #include "thunk.h"
5 
6 #include <signal.h>
7 #include "syscall_defs.h"
8 
9 #ifdef TARGET_I386
10 #include "cpu-i386.h"
11 #include "syscall-i386.h"
12 #endif
13 
14 /* This struct is used to hold certain information about the image.
15  * Basically, it replicates in user space what would be certain
16  * task_struct fields in the kernel
17  */
18 struct image_info {
19 	unsigned long	start_code;
20 	unsigned long	end_code;
21 	unsigned long	end_data;
22 	unsigned long	start_brk;
23 	unsigned long	brk;
24 	unsigned long	start_mmap;
25 	unsigned long	mmap;
26 	unsigned long	rss;
27 	unsigned long	start_stack;
28 	unsigned long	arg_start;
29 	unsigned long	arg_end;
30 	unsigned long	env_start;
31 	unsigned long	env_end;
32 	unsigned long	entry;
33 	int		personality;
34 };
35 
36 int elf_exec(const char * filename, char ** argv, char ** envp,
37              struct target_pt_regs * regs, struct image_info *infop);
38 
39 void target_set_brk(char *new_brk);
40 void syscall_init(void);
41 long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
42                 long arg4, long arg5, long arg6);
43 void gemu_log(const char *fmt, ...) __attribute__((format(printf,1,2)));
44 extern CPUX86State *global_env;
45 void cpu_loop(CPUX86State *env);
46 void process_pending_signals(void *cpu_env);
47 void signal_init(void);
48 int queue_signal(int sig, target_siginfo_t *info);
49 
50 #endif
51