Revision 0b09be2b

b/target-sparc/op_helper.c
1681 1681
}
1682 1682

  
1683 1683
#ifdef TARGET_SPARC64
1684
#ifdef DEBUG_PCALL
1685
static const char * const excp_names[0x50] = {
1686
    [TT_TFAULT] = "Instruction Access Fault",
1687
    [TT_TMISS] = "Instruction Access MMU Miss",
1688
    [TT_CODE_ACCESS] = "Instruction Access Error",
1689
    [TT_ILL_INSN] = "Illegal Instruction",
1690
    [TT_PRIV_INSN] = "Privileged Instruction",
1691
    [TT_NFPU_INSN] = "FPU Disabled",
1692
    [TT_FP_EXCP] = "FPU Exception",
1693
    [TT_TOVF] = "Tag Overflow",
1694
    [TT_CLRWIN] = "Clean Windows",
1695
    [TT_DIV_ZERO] = "Division By Zero",
1696
    [TT_DFAULT] = "Data Access Fault",
1697
    [TT_DMISS] = "Data Access MMU Miss",
1698
    [TT_DATA_ACCESS] = "Data Access Error",
1699
    [TT_DPROT] = "Data Protection Error",
1700
    [TT_UNALIGNED] = "Unaligned Memory Access",
1701
    [TT_PRIV_ACT] = "Privileged Action",
1702
    [TT_EXTINT | 0x1] = "External Interrupt 1",
1703
    [TT_EXTINT | 0x2] = "External Interrupt 2",
1704
    [TT_EXTINT | 0x3] = "External Interrupt 3",
1705
    [TT_EXTINT | 0x4] = "External Interrupt 4",
1706
    [TT_EXTINT | 0x5] = "External Interrupt 5",
1707
    [TT_EXTINT | 0x6] = "External Interrupt 6",
1708
    [TT_EXTINT | 0x7] = "External Interrupt 7",
1709
    [TT_EXTINT | 0x8] = "External Interrupt 8",
1710
    [TT_EXTINT | 0x9] = "External Interrupt 9",
1711
    [TT_EXTINT | 0xa] = "External Interrupt 10",
1712
    [TT_EXTINT | 0xb] = "External Interrupt 11",
1713
    [TT_EXTINT | 0xc] = "External Interrupt 12",
1714
    [TT_EXTINT | 0xd] = "External Interrupt 13",
1715
    [TT_EXTINT | 0xe] = "External Interrupt 14",
1716
    [TT_EXTINT | 0xf] = "External Interrupt 15",
1717
};
1718
#endif
1719

  
1684 1720
void do_interrupt(int intno)
1685 1721
{
1686 1722
#ifdef DEBUG_PCALL
1687 1723
    if (loglevel & CPU_LOG_INT) {
1688 1724
        static int count;
1689
        fprintf(logfile, "%6d: v=%04x pc=%016" PRIx64 " npc=%016" PRIx64 " SP=%016" PRIx64 "\n",
1690
                count, intno,
1725
        const char *name;
1726

  
1727
        if (intno < 0 || intno >= 0x180 || (intno > 0x4f && intno < 0x80))
1728
            name = "Unknown";
1729
        else if (intno >= 0x100)
1730
            name = "Trap Instruction";
1731
        else if (intno >= 0xc0)
1732
            name = "Window Fill";
1733
        else if (intno >= 0x80)
1734
            name = "Window Spill";
1735
        else {
1736
            name = excp_names[intno];
1737
            if (!name)
1738
                name = "Unknown";
1739
        }
1740

  
1741
        fprintf(logfile, "%6d: %s (v=%04x) pc=%016" PRIx64 " npc=%016" PRIx64
1742
                " SP=%016" PRIx64 "\n",
1743
                count, name, intno,
1691 1744
                env->pc,
1692 1745
                env->npc, env->regwptr[6]);
1693 1746
        cpu_dump_state(env, logfile, fprintf, 0);
......
1740 1793
    env->exception_index = 0;
1741 1794
}
1742 1795
#else
1796
#ifdef DEBUG_PCALL
1797
static const char * const excp_names[0x80] = {
1798
    [TT_TFAULT] = "Instruction Access Fault",
1799
    [TT_ILL_INSN] = "Illegal Instruction",
1800
    [TT_PRIV_INSN] = "Privileged Instruction",
1801
    [TT_NFPU_INSN] = "FPU Disabled",
1802
    [TT_WIN_OVF] = "Window Overflow",
1803
    [TT_WIN_UNF] = "Window Underflow",
1804
    [TT_UNALIGNED] = "Unaligned Memory Access",
1805
    [TT_FP_EXCP] = "FPU Exception",
1806
    [TT_DFAULT] = "Data Access Fault",
1807
    [TT_TOVF] = "Tag Overflow",
1808
    [TT_EXTINT | 0x1] = "External Interrupt 1",
1809
    [TT_EXTINT | 0x2] = "External Interrupt 2",
1810
    [TT_EXTINT | 0x3] = "External Interrupt 3",
1811
    [TT_EXTINT | 0x4] = "External Interrupt 4",
1812
    [TT_EXTINT | 0x5] = "External Interrupt 5",
1813
    [TT_EXTINT | 0x6] = "External Interrupt 6",
1814
    [TT_EXTINT | 0x7] = "External Interrupt 7",
1815
    [TT_EXTINT | 0x8] = "External Interrupt 8",
1816
    [TT_EXTINT | 0x9] = "External Interrupt 9",
1817
    [TT_EXTINT | 0xa] = "External Interrupt 10",
1818
    [TT_EXTINT | 0xb] = "External Interrupt 11",
1819
    [TT_EXTINT | 0xc] = "External Interrupt 12",
1820
    [TT_EXTINT | 0xd] = "External Interrupt 13",
1821
    [TT_EXTINT | 0xe] = "External Interrupt 14",
1822
    [TT_EXTINT | 0xf] = "External Interrupt 15",
1823
    [TT_TOVF] = "Tag Overflow",
1824
    [TT_CODE_ACCESS] = "Instruction Access Error",
1825
    [TT_DATA_ACCESS] = "Data Access Error",
1826
    [TT_DIV_ZERO] = "Division By Zero",
1827
    [TT_NCP_INSN] = "Coprocessor Disabled",
1828
};
1829
#endif
1830

  
1743 1831
void do_interrupt(int intno)
1744 1832
{
1745 1833
    int cwp;
......
1747 1835
#ifdef DEBUG_PCALL
1748 1836
    if (loglevel & CPU_LOG_INT) {
1749 1837
        static int count;
1750
        fprintf(logfile, "%6d: v=%02x pc=%08x npc=%08x SP=%08x\n",
1751
                count, intno,
1838
        const char *name;
1839

  
1840
        if (intno < 0 || intno >= 0x100)
1841
            name = "Unknown";
1842
        else if (intno >= 0x80)
1843
            name = "Trap Instruction";
1844
        else {
1845
            name = excp_names[intno];
1846
            if (!name)
1847
                name = "Unknown";
1848
        }
1849

  
1850
        fprintf(logfile, "%6d: %s (v=%02x) pc=%08x npc=%08x SP=%08x\n",
1851
                count, name, intno,
1752 1852
                env->pc,
1753 1853
                env->npc, env->regwptr[6]);
1754 1854
        cpu_dump_state(env, logfile, fprintf, 0);

Also available in: Unified diff