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

📄 main.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
            info.si_errno = 0;            info.si_code = 0;            queue_signal(info.si_signo, &info);            break;        case EXCP_INTERRUPT:            /* just indicate that signals should be handled asap */            break;        case EXCP_DEBUG:            {                int sig;                sig = gdb_handlesig (env, TARGET_SIGTRAP);                if (sig)                  {                    info.si_signo = sig;                    info.si_errno = 0;                    info.si_code = TARGET_TRAP_BRKPT;                    queue_signal(info.si_signo, &info);                  }            }            break;        default:            //        error:            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",                    trapnr);            cpu_dump_state(env, stderr, fprintf, 0);            abort();        }        process_pending_signals(env);    }}#endif#ifdef TARGET_SH4void cpu_loop (CPUState *env){    int trapnr, ret;    target_siginfo_t info;    while (1) {        trapnr = cpu_sh4_exec (env);        switch (trapnr) {        case 0x160:            ret = do_syscall(env,                             env->gregs[3],                             env->gregs[4],                             env->gregs[5],                             env->gregs[6],                             env->gregs[7],                             env->gregs[0],                             env->gregs[1]);            env->gregs[0] = ret;            env->pc += 2;            break;        case EXCP_INTERRUPT:            /* just indicate that signals should be handled asap */            break;        case EXCP_DEBUG:            {                int sig;                sig = gdb_handlesig (env, TARGET_SIGTRAP);                if (sig)                  {                    info.si_signo = sig;                    info.si_errno = 0;                    info.si_code = TARGET_TRAP_BRKPT;                    queue_signal(info.si_signo, &info);                  }            }            break;	case 0xa0:	case 0xc0:            info.si_signo = SIGSEGV;            info.si_errno = 0;            info.si_code = TARGET_SEGV_MAPERR;            info._sifields._sigfault._addr = env->tea;            queue_signal(info.si_signo, &info);	    break;        default:            printf ("Unhandled trap: 0x%x\n", trapnr);            cpu_dump_state(env, stderr, fprintf, 0);            exit (1);        }        process_pending_signals (env);    }}#endif#ifdef TARGET_CRISvoid cpu_loop (CPUState *env){    int trapnr, ret;    target_siginfo_t info;        while (1) {        trapnr = cpu_cris_exec (env);        switch (trapnr) {        case 0xaa:            {                info.si_signo = SIGSEGV;                info.si_errno = 0;                /* XXX: check env->error_code */                info.si_code = TARGET_SEGV_MAPERR;                info._sifields._sigfault._addr = env->debug1;                queue_signal(info.si_signo, &info);            }            break;        case EXCP_BREAK:            ret = do_syscall(env,                              env->regs[9],                              env->regs[10],                              env->regs[11],                              env->regs[12],                              env->regs[13],                              env->pregs[7],                              env->pregs[11]);            env->regs[10] = ret;            env->pc += 2;            break;        case EXCP_DEBUG:            {                int sig;                sig = gdb_handlesig (env, TARGET_SIGTRAP);                if (sig)                  {                    info.si_signo = sig;                    info.si_errno = 0;                    info.si_code = TARGET_TRAP_BRKPT;                    queue_signal(info.si_signo, &info);                  }            }            break;        default:            printf ("Unhandled trap: 0x%x\n", trapnr);            cpu_dump_state(env, stderr, fprintf, 0);            exit (1);        }        process_pending_signals (env);    }}#endif#ifdef TARGET_M68Kvoid cpu_loop(CPUM68KState *env){    int trapnr;    unsigned int n;    target_siginfo_t info;    TaskState *ts = env->opaque;    for(;;) {        trapnr = cpu_m68k_exec(env);        switch(trapnr) {        case EXCP_ILLEGAL:            {                if (ts->sim_syscalls) {                    uint16_t nr;                    nr = lduw(env->pc + 2);                    env->pc += 4;                    do_m68k_simcall(env, nr);                } else {                    goto do_sigill;                }            }            break;        case EXCP_HALT_INSN:            /* Semihosing syscall.  */            env->pc += 4;            do_m68k_semihosting(env, env->dregs[0]);            break;        case EXCP_LINEA:        case EXCP_LINEF:        case EXCP_UNSUPPORTED:        do_sigill:            info.si_signo = SIGILL;            info.si_errno = 0;            info.si_code = TARGET_ILL_ILLOPN;            info._sifields._sigfault._addr = env->pc;            queue_signal(info.si_signo, &info);            break;        case EXCP_TRAP0:            {                ts->sim_syscalls = 0;                n = env->dregs[0];                env->pc += 2;                env->dregs[0] = do_syscall(env,                                          n,                                          env->dregs[1],                                          env->dregs[2],                                          env->dregs[3],                                          env->dregs[4],                                          env->dregs[5],                                          env->dregs[6]);            }            break;        case EXCP_INTERRUPT:            /* just indicate that signals should be handled asap */            break;        case EXCP_ACCESS:            {                info.si_signo = SIGSEGV;                info.si_errno = 0;                /* XXX: check env->error_code */                info.si_code = TARGET_SEGV_MAPERR;                info._sifields._sigfault._addr = env->mmu.ar;                queue_signal(info.si_signo, &info);            }            break;        case EXCP_DEBUG:            {                int sig;                sig = gdb_handlesig (env, TARGET_SIGTRAP);                if (sig)                  {                    info.si_signo = sig;                    info.si_errno = 0;                    info.si_code = TARGET_TRAP_BRKPT;                    queue_signal(info.si_signo, &info);                  }            }            break;        default:            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",                    trapnr);            cpu_dump_state(env, stderr, fprintf, 0);            abort();        }        process_pending_signals(env);    }}#endif /* TARGET_M68K */#ifdef TARGET_ALPHAvoid cpu_loop (CPUState *env){    int trapnr;    target_siginfo_t info;    while (1) {        trapnr = cpu_alpha_exec (env);        switch (trapnr) {        case EXCP_RESET:            fprintf(stderr, "Reset requested. Exit\n");            exit(1);            break;        case EXCP_MCHK:            fprintf(stderr, "Machine check exception. Exit\n");            exit(1);            break;        case EXCP_ARITH:            fprintf(stderr, "Arithmetic trap.\n");            exit(1);            break;        case EXCP_HW_INTERRUPT:            fprintf(stderr, "External interrupt. Exit\n");            exit(1);            break;        case EXCP_DFAULT:            fprintf(stderr, "MMU data fault\n");            exit(1);            break;        case EXCP_DTB_MISS_PAL:            fprintf(stderr, "MMU data TLB miss in PALcode\n");            exit(1);            break;        case EXCP_ITB_MISS:            fprintf(stderr, "MMU instruction TLB miss\n");            exit(1);            break;        case EXCP_ITB_ACV:            fprintf(stderr, "MMU instruction access violation\n");            exit(1);            break;        case EXCP_DTB_MISS_NATIVE:            fprintf(stderr, "MMU data TLB miss\n");            exit(1);            break;        case EXCP_UNALIGN:            fprintf(stderr, "Unaligned access\n");            exit(1);            break;        case EXCP_OPCDEC:            fprintf(stderr, "Invalid instruction\n");            exit(1);            break;        case EXCP_FEN:            fprintf(stderr, "Floating-point not allowed\n");            exit(1);            break;        case EXCP_CALL_PAL ... (EXCP_CALL_PALP - 1):            fprintf(stderr, "Call to PALcode\n");            call_pal(env, (trapnr >> 6) | 0x80);            break;        case EXCP_CALL_PALP ... (EXCP_CALL_PALE - 1):            fprintf(stderr, "Privileged call to PALcode\n");            exit(1);            break;        case EXCP_DEBUG:            {                int sig;                sig = gdb_handlesig (env, TARGET_SIGTRAP);                if (sig)                  {                    info.si_signo = sig;                    info.si_errno = 0;                    info.si_code = TARGET_TRAP_BRKPT;                    queue_signal(info.si_signo, &info);                  }            }            break;        default:            printf ("Unhandled trap: 0x%x\n", trapnr);            cpu_dump_state(env, stderr, fprintf, 0);            exit (1);        }        process_pending_signals (env);    }}#endif /* TARGET_ALPHA */void usage(void){    printf("qemu-" TARGET_ARCH " version " QEMU_VERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n"           "usage: qemu-" TARGET_ARCH " [options] program [arguments...]\n"           "Linux CPU emulator (compiled for %s emulation)\n"           "\n"           "Standard options:\n"           "-h                print this help\n"           "-g port           wait gdb connection to port\n"           "-L path           set the elf interpreter prefix (default=%s)\n"           "-s size           set the stack size in bytes (default=%ld)\n"           "-cpu model        select CPU (-cpu ? for list)\n"           "-drop-ld-preload  drop LD_PRELOAD for target process\n"           "\n"           "Debug options:\n"           "-d options   activate log (logfile=%s)\n"           "-p pagesize  set the host page size to 'pagesize'\n"           "-strace      log system calls\n"           "\n"           "Environment variables:\n"           "QEMU_STRACE       Print system calls and arguments similar to the\n"           "                  'strace' program.  Enable by setting to any value.\n"           ,           TARGET_ARCH,           interp_prefix,           x86_stack_size,           DEBUG_LOGFILE);    _exit(1);}/* XXX: currently only used for async signals (see signal.c) */CPUState *global_env;/* used to free thread contexts */TaskState *first_task_state;int main(int argc, char **argv){    const char *filename;    const char *cpu_model;    struct target_pt_regs regs1, *regs = &regs1;    struct image_info info1, *info = &info1;    TaskState ts1, *ts = &ts1;    CPUState *env;    int optind;    const char *r;    int gdbstub_port = 0;    int drop_ld_preload = 0, environ_count = 0;    char **target_environ, **wrk, **dst;    if (argc <= 1)        usage();    /* init debug */    cpu_set_log_filename(DEBUG_LOGFILE);    cpu_model = NULL;    optind = 1;    for(;;) {        if (optind >= argc) 

⌨️ 快捷键说明

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