summaryrefslogtreecommitdiff
path: root/linux-user/qemu.h
diff options
context:
space:
mode:
Diffstat (limited to 'linux-user/qemu.h')
-rw-r--r--linux-user/qemu.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
new file mode 100644
index 0000000000..fa40d4d845
--- /dev/null
+++ b/linux-user/qemu.h
@@ -0,0 +1,57 @@
+#ifndef GEMU_H
+#define GEMU_H
+
+#include "thunk.h"
+
+struct pt_regs {
+ long ebx;
+ long ecx;
+ long edx;
+ long esi;
+ long edi;
+ long ebp;
+ long eax;
+ int xds;
+ int xes;
+ long orig_eax;
+ long eip;
+ int xcs;
+ long eflags;
+ long esp;
+ int xss;
+};
+
+/* This struct is used to hold certain information about the image.
+ * Basically, it replicates in user space what would be certain
+ * task_struct fields in the kernel
+ */
+struct image_info {
+ unsigned long start_code;
+ unsigned long end_code;
+ unsigned long end_data;
+ unsigned long start_brk;
+ unsigned long brk;
+ unsigned long start_mmap;
+ unsigned long mmap;
+ unsigned long rss;
+ unsigned long start_stack;
+ unsigned long arg_start;
+ unsigned long arg_end;
+ unsigned long env_start;
+ unsigned long env_end;
+ unsigned long entry;
+ int personality;
+};
+
+int elf_exec(const char * filename, char ** argv, char ** envp,
+ struct pt_regs * regs, struct image_info *infop);
+
+void target_set_brk(char *new_brk);
+void syscall_init(void);
+long do_syscall(int num, long arg1, long arg2, long arg3,
+ long arg4, long arg5, long arg6);
+void gemu_log(const char *fmt, ...) __attribute__((format(printf,1,2)));
+
+
+
+#endif