Revision 7a3148a9 linux-user/main.c

b/linux-user/main.c
1534 1534
}
1535 1535
#endif /* TARGET_M68K */
1536 1536

  
1537
#ifdef TARGET_ALPHA
1538
void cpu_loop (CPUState *env)
1539
{
1540
    int trapnr, ret;
1541
    target_siginfo_t info;
1542
    
1543
    while (1) {
1544
        trapnr = cpu_alpha_exec (env);
1545
        
1546
        switch (trapnr) {
1547
        case EXCP_RESET:
1548
            fprintf(stderr, "Reset requested. Exit\n");
1549
            exit(1);
1550
            break;
1551
        case EXCP_MCHK:
1552
            fprintf(stderr, "Machine check exception. Exit\n");
1553
            exit(1);
1554
            break;
1555
        case EXCP_ARITH:
1556
            fprintf(stderr, "Arithmetic trap.\n");
1557
            exit(1);
1558
            break;
1559
        case EXCP_HW_INTERRUPT:
1560
            fprintf(stderr, "External interrupt. Exit\n"); 
1561
            exit(1);
1562
            break;
1563
        case EXCP_DFAULT:
1564
            fprintf(stderr, "MMU data fault\n");
1565
            exit(1);
1566
            break;
1567
        case EXCP_DTB_MISS_PAL:
1568
            fprintf(stderr, "MMU data TLB miss in PALcode\n");
1569
            exit(1);
1570
            break;
1571
        case EXCP_ITB_MISS:
1572
            fprintf(stderr, "MMU instruction TLB miss\n");
1573
            exit(1);
1574
            break;
1575
        case EXCP_ITB_ACV:
1576
            fprintf(stderr, "MMU instruction access violation\n");
1577
            exit(1);
1578
            break;
1579
        case EXCP_DTB_MISS_NATIVE:
1580
            fprintf(stderr, "MMU data TLB miss\n");
1581
            exit(1);
1582
            break;
1583
        case EXCP_UNALIGN:
1584
            fprintf(stderr, "Unaligned access\n");
1585
            exit(1);
1586
            break;
1587
        case EXCP_OPCDEC:
1588
            fprintf(stderr, "Invalid instruction\n");
1589
            exit(1);
1590
            break;
1591
        case EXCP_FEN:
1592
            fprintf(stderr, "Floating-point not allowed\n");
1593
            exit(1);
1594
            break;
1595
        case EXCP_CALL_PAL ... (EXCP_CALL_PALP - 1):
1596
            fprintf(stderr, "Call to PALcode\n");
1597
            call_pal(env, (trapnr >> 6) | 0x80);
1598
            break;
1599
        case EXCP_CALL_PALP ... (EXCP_CALL_PALE - 1):
1600
            fprintf(stderr, "Priviledged call to PALcode\n");
1601
            exit(1);
1602
            break;
1603
        case EXCP_DEBUG:
1604
            {
1605
                int sig;
1606

  
1607
                sig = gdb_handlesig (env, TARGET_SIGTRAP);
1608
                if (sig)
1609
                  {
1610
                    info.si_signo = sig;
1611
                    info.si_errno = 0;
1612
                    info.si_code = TARGET_TRAP_BRKPT;
1613
                    queue_signal(info.si_signo, &info);
1614
                  }
1615
            }
1616
            break;
1617
        default:
1618
            printf ("Unhandled trap: 0x%x\n", trapnr);
1619
            cpu_dump_state(env, stderr, fprintf, 0);
1620
            exit (1);
1621
        }
1622
        process_pending_signals (env);
1623
    }
1624
}
1625
#endif /* TARGET_ALPHA */
1626

  
1537 1627
void usage(void)
1538 1628
{
1539 1629
    printf("qemu-" TARGET_ARCH " version " QEMU_VERSION ", Copyright (c) 2003-2007 Fabrice Bellard\n"
......
1877 1967
        }
1878 1968
        env->pc = regs->pc;
1879 1969
    }
1970
#elif defined(TARGET_ALPHA)
1971
    {
1972
        int i;
1973

  
1974
        for(i = 0; i < 28; i++) {
1975
            env->ir[i] = ((target_ulong *)regs)[i];
1976
        }
1977
        env->ipr[IPR_USP] = regs->usp;
1978
        env->ir[30] = regs->usp;
1979
        env->pc = regs->pc;
1980
        env->unique = regs->unique;
1981
    }
1880 1982
#else
1881 1983
#error unsupported target CPU
1882 1984
#endif

Also available in: Unified diff