/[qemu]/qemu/linux-user/main.c
ViewVC logotype

Diff of /qemu/linux-user/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.68 by bellard, Sat Jul 2 20:59:33 2005 UTC revision 1.69 by bellard, Sat Jul 2 22:09:27 2005 UTC
# Line 706  void cpu_loop(CPUPPCState *env) Line 706  void cpu_loop(CPUPPCState *env)
706                  fprintf(logfile, "Invalid data memory access: 0x%08x\n",                  fprintf(logfile, "Invalid data memory access: 0x%08x\n",
707                          env->spr[SPR_DAR]);                          env->spr[SPR_DAR]);
708              }              }
709              switch (env->error_code & 0xF) {              switch (env->error_code & 0xFF000000) {
710              case EXCP_DSI_TRANSLATE:              case 0x40000000:
711                  info.si_signo = TARGET_SIGSEGV;                  info.si_signo = TARGET_SIGSEGV;
712                  info.si_errno = 0;                  info.si_errno = 0;
713                  info.si_code = TARGET_SEGV_MAPERR;                  info.si_code = TARGET_SEGV_MAPERR;
714                  break;                  break;
715              case EXCP_DSI_NOTSUP:              case 0x04000000:
             case EXCP_DSI_EXTERNAL:  
716                  info.si_signo = TARGET_SIGILL;                  info.si_signo = TARGET_SIGILL;
717                  info.si_errno = 0;                  info.si_errno = 0;
718                  info.si_code = TARGET_ILL_ILLADR;                  info.si_code = TARGET_ILL_ILLADR;
719                  break;                  break;
720              case EXCP_DSI_PROT:              case 0x08000000:
721                  info.si_signo = TARGET_SIGSEGV;                  info.si_signo = TARGET_SIGSEGV;
722                  info.si_errno = 0;                  info.si_errno = 0;
723                  info.si_code = TARGET_SEGV_ACCERR;                  info.si_code = TARGET_SEGV_ACCERR;
724                  break;                  break;
             case EXCP_DSI_DABR:  
                 info.si_signo = TARGET_SIGTRAP;  
                 info.si_errno = 0;  
                 info.si_code = TARGET_TRAP_BRKPT;  
                 break;  
725              default:              default:
726                  /* Let's send a regular segfault... */                  /* Let's send a regular segfault... */
727                  fprintf(stderr, "Invalid segfault errno (%02x)\n",                  fprintf(stderr, "Invalid segfault errno (%02x)\n",
# Line 748  void cpu_loop(CPUPPCState *env) Line 742  void cpu_loop(CPUPPCState *env)
742              fprintf(stderr, "Invalid instruction fetch\n");              fprintf(stderr, "Invalid instruction fetch\n");
743              if (loglevel)              if (loglevel)
744                  fprintf(logfile, "Invalid instruction fetch\n");                  fprintf(logfile, "Invalid instruction fetch\n");
745              switch (env->error_code) {              switch (env->error_code & 0xFF000000) {
746              case EXCP_ISI_TRANSLATE:              case 0x40000000:
747                  info.si_signo = TARGET_SIGSEGV;                  info.si_signo = TARGET_SIGSEGV;
748              info.si_errno = 0;              info.si_errno = 0;
749                  info.si_code = TARGET_SEGV_MAPERR;                  info.si_code = TARGET_SEGV_MAPERR;
750                  break;                  break;
751              case EXCP_ISI_GUARD:              case 0x10000000:
752                  info.si_signo = TARGET_SIGILL;              case 0x08000000:
                 info.si_errno = 0;  
                 info.si_code = TARGET_ILL_ILLADR;  
                 break;  
             case EXCP_ISI_NOEXEC:  
             case EXCP_ISI_PROT:  
753                  info.si_signo = TARGET_SIGSEGV;                  info.si_signo = TARGET_SIGSEGV;
754                  info.si_errno = 0;                  info.si_errno = 0;
755                  info.si_code = TARGET_SEGV_ACCERR;                  info.si_code = TARGET_SEGV_ACCERR;
# Line 930  void cpu_loop(CPUPPCState *env) Line 919  void cpu_loop(CPUPPCState *env)
919              if (loglevel)              if (loglevel)
920                  fprintf(logfile, "Decrementer exception\n");                  fprintf(logfile, "Decrementer exception\n");
921              abort();              abort();
         case EXCP_RESA: /* Implementation specific          */  
             /* Should not happen ! */  
             fprintf(stderr, "RESA exception should never happen !\n");  
             if (loglevel)  
                 fprintf(logfile, "RESA exception should never happen !\n");  
             abort();  
         case EXCP_RESB: /* Implementation specific          */  
             /* Should not happen ! */  
             fprintf(stderr, "RESB exception should never happen !\n");  
             if (loglevel)  
                 fprintf(logfile, "RESB exception should never happen !\n");  
             abort();  
922          case EXCP_TRACE:          case EXCP_TRACE:
923              /* Do nothing: we use this to trace execution */              /* Do nothing: we use this to trace execution */
924              break;              break;
# Line 963  void cpu_loop(CPUPPCState *env) Line 940  void cpu_loop(CPUPPCState *env)
940          case EXCP_BRANCH:          case EXCP_BRANCH:
941              /* We stopped because of a jump... */              /* We stopped because of a jump... */
942              break;              break;
         case EXCP_RFI:  
             /* Should not occur: we always are in user mode */  
             fprintf(stderr, "Return from interrupt ?\n");  
             if (loglevel)  
                 fprintf(logfile, "Return from interrupt ?\n");  
             abort();  
943          case EXCP_INTERRUPT:          case EXCP_INTERRUPT:
944              /* Don't know why this should ever happen... */              /* Don't know why this should ever happen... */
945              break;              break;

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.69

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26