⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qemu.h.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
字号:
#ifndef GEMU_H#define GEMU_H#include <signal.h>#include <string.h>#include "cpu.h"#include "thunk.h"#include "gdbstub.h"typedef siginfo_t target_siginfo_t;#define target_sigaction	sigaction#ifdef TARGET_I386struct target_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;};struct	target_sigcontext {    int			sc_onstack;    int			sc_mask;    int	sc_eax;    int	sc_ebx;    int	sc_ecx;    int	sc_edx;    int	sc_edi;    int	sc_esi;    int	sc_ebp;    int	sc_esp;    int	sc_ss;    int	sc_eflags;    int	sc_eip;    int	sc_cs;    int	sc_ds;    int	sc_es;    int	sc_fs;    int	sc_gs;};#define __USER_CS	(0x17)#define __USER_DS	(0x1F)#elif defined(TARGET_PPC)struct target_pt_regs {	unsigned long gpr[32];	unsigned long nip;	unsigned long msr;	unsigned long orig_gpr3;	/* Used for restarting system calls */	unsigned long ctr;	unsigned long link;	unsigned long xer;	unsigned long ccr;	unsigned long mq;		/* 601 only (not used at present) */					/* Used on APUS to hold IPL value. */	unsigned long trap;		/* Reason for being here */	unsigned long dar;		/* Fault registers */	unsigned long dsisr;	unsigned long result; 		/* Result of a system call */};struct target_sigcontext {    int		sc_onstack;     /* sigstack state to restore */    int		sc_mask;        /* signal mask to restore */    int		sc_ir;			/* pc */    int		sc_psw;         /* processor status word */    int		sc_sp;      	/* stack pointer if sc_regs == NULL */    void	*sc_regs;		/* (kernel private) saved state */};#endiftypedef struct TaskState {    struct TaskState *next;    int used; /* non zero if used */    uint8_t stack[0];} __attribute__((aligned(16))) TaskState;void syscall_init(void);long do_mach_syscall(void *cpu_env, int num, uint32_t arg1, uint32_t arg2, uint32_t arg3,                uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8);long do_thread_syscall(void *cpu_env, int num, uint32_t arg1, uint32_t arg2, uint32_t arg3,                uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8);long do_unix_syscall(void *cpu_env, int num);int do_sigaction(int sig, const struct sigaction *act,                 struct sigaction *oact);int do_sigaltstack(const struct sigaltstack *ss, struct sigaltstack *oss);void gemu_log(const char *fmt, ...) __attribute__((format(printf,1,2)));void qerror(const char *fmt, ...);void write_dt(void *ptr, unsigned long addr, unsigned long limit, int flags);extern CPUState *global_env;void cpu_loop(CPUState *env);void init_paths(const char *prefix);const char *path(const char *pathname);extern int loglevel;extern FILE *logfile;/* commpage.c */void commpage_init();void do_commpage(void *cpu_env, int num, uint32_t arg1, uint32_t arg2, uint32_t arg3,                uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8);/* signal.c */void process_pending_signals(void *cpu_env);void signal_init(void);int queue_signal(int sig, target_siginfo_t *info);void host_to_target_siginfo(target_siginfo_t *tinfo, const siginfo_t *info);void target_to_host_siginfo(siginfo_t *info, const target_siginfo_t *tinfo);long do_sigreturn(CPUState *env, int num);/* machload.c */int mach_exec(const char * filename, char ** argv, char ** envp,			  struct target_pt_regs * regs);/* mmap.c */int target_mprotect(unsigned long start, unsigned long len, int prot);long target_mmap(unsigned long start, unsigned long len, int prot,                 int flags, int fd, unsigned long offset);int target_munmap(unsigned long start, unsigned long len);long target_mremap(unsigned long old_addr, unsigned long old_size,                   unsigned long new_size, unsigned long flags,                   unsigned long new_addr);int target_msync(unsigned long start, unsigned long len, int flags);/* user access *//* XXX: todo protect every memory access */#define lock_user(x,y,z)    (void*)(x)#define unlock_user(x,y,z)/* Mac OS X ABI arguments processing */#ifdef TARGET_I386static inline uint32_t get_int_arg(int *i, CPUX86State *cpu_env){    uint32_t *args = (uint32_t*)(cpu_env->regs[R_ESP] + 4 + *i);    *i+=4;    return tswap32(*args);}static inline uint64_t get_int64_arg(int *i, CPUX86State *cpu_env){    uint64_t *args = (uint64_t*)(cpu_env->regs[R_ESP] + 4 + *i);    *i+=8;    return tswap64(*args);}#elif defined(TARGET_PPC)static inline uint32_t get_int_arg(int *i, CPUPPCState *cpu_env){    /* XXX: won't work when args goes on stack after gpr10 */    uint32_t args = (uint32_t)(cpu_env->gpr[3+(*i & 0xff)/4]);    *i+=4;    return tswap32(args);}static inline uint64_t get_int64_arg(int *i, CPUPPCState *cpu_env){    /* XXX: won't work when args goes on stack after gpr10 */    uint64_t args = (uint64_t)(cpu_env->fpr[1+(*i >> 8)/8]);    *i+=(8 << 8) + 8;    return tswap64(args);}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -