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