]>
Commit | Line | Data |
---|---|---|
31e31b8a FB |
1 | #ifndef GEMU_H |
2 | #define GEMU_H | |
3 | ||
4 | #include "thunk.h" | |
5 | ||
9de5e440 FB |
6 | #include <signal.h> |
7 | #include "syscall_defs.h" | |
31e31b8a | 8 | |
9de5e440 FB |
9 | #ifdef TARGET_I386 |
10 | #include "cpu-i386.h" | |
11 | #include "syscall-i386.h" | |
66fb9763 FB |
12 | #endif |
13 | ||
31e31b8a FB |
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 | ||
d691f669 FB |
36 | int elf_exec(const char *interp_prefix, |
37 | const char * filename, char ** argv, char ** envp, | |
01ffc75b | 38 | struct target_pt_regs * regs, struct image_info *infop); |
31e31b8a FB |
39 | |
40 | void target_set_brk(char *new_brk); | |
41 | void syscall_init(void); | |
6dbad63e | 42 | long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, |
31e31b8a FB |
43 | long arg4, long arg5, long arg6); |
44 | void gemu_log(const char *fmt, ...) __attribute__((format(printf,1,2))); | |
9de5e440 FB |
45 | extern CPUX86State *global_env; |
46 | void cpu_loop(CPUX86State *env); | |
66fb9763 FB |
47 | void process_pending_signals(void *cpu_env); |
48 | void signal_init(void); | |
9de5e440 | 49 | int queue_signal(int sig, target_siginfo_t *info); |
31e31b8a FB |
50 | |
51 | #endif |