OpenCores
URL https://opencores.org/ocsvn/xulalx25soc/xulalx25soc/trunk

Subversion Repositories xulalx25soc

[/] [xulalx25soc/] [trunk/] [sw/] [zipdbg.cpp] - Diff between revs 110 and 113

Show entire file | Details | Blame | View Log

Rev 110 Rev 113
Line 99... Line 99...
        static  const   int     MAXERR;
        static  const   int     MAXERR;
        typedef DEVBUS::BUSW    BUSW;
        typedef DEVBUS::BUSW    BUSW;
        DEVBUS  *m_fpga;
        DEVBUS  *m_fpga;
        int     m_cursor;
        int     m_cursor;
        ZIPSTATE        m_state;
        ZIPSTATE        m_state;
        bool    m_user_break, m_show_users_timers;
        bool    m_user_break, m_show_users_timers, m_show_cc;
public:
public:
        ZIPPY(DEVBUS *fpga) : m_fpga(fpga), m_cursor(0), m_user_break(false),
        ZIPPY(DEVBUS *fpga) : m_fpga(fpga), m_cursor(0), m_user_break(false),
                m_show_users_timers(false) {}
                m_show_users_timers(false), m_show_cc(false) {}
 
 
        void    read_raw_state(void) {
        void    read_raw_state(void) {
                m_state.m_valid = false;
                m_state.m_valid = false;
                for(int i=0; i<16; i++)
                for(int i=0; i<16; i++)
                        m_state.m_sR[i] = cmd_read(i);
                        m_state.m_sR[i] = cmd_read(i);
Line 207... Line 207...
 
 
        void    show_user_timers(bool v) {
        void    show_user_timers(bool v) {
                m_show_users_timers = v;
                m_show_users_timers = v;
        }
        }
 
 
 
        void    toggle_cc(void) {
 
                m_show_cc = !m_show_cc;
 
        }
 
 
        void    showval(int y, int x, const char *lbl, unsigned int v, bool c) {
        void    showval(int y, int x, const char *lbl, unsigned int v, bool c) {
                if (c)
                if (c)
                        mvprintw(y,x, ">%s> 0x%08x<", lbl, v);
                        mvprintw(y,x, ">%s> 0x%08x<", lbl, v);
                else
                else
                        mvprintw(y,x, " %s: 0x%08x ", lbl, v);
                        mvprintw(y,x, " %s: 0x%08x ", lbl, v);
Line 407... Line 411...
                dispreg(ln,60, "sR11", m_state.m_sR[11], (m_cursor==23)); ln++;
                dispreg(ln,60, "sR11", m_state.m_sR[11], (m_cursor==23)); ln++;
 
 
                dispreg(ln, 0, "sR12", m_state.m_sR[12], (m_cursor==24));
                dispreg(ln, 0, "sR12", m_state.m_sR[12], (m_cursor==24));
                dispreg(ln,20, "sSP ", m_state.m_sR[13], (m_cursor==25));
                dispreg(ln,20, "sSP ", m_state.m_sR[13], (m_cursor==25));
 
 
 
                if (m_show_cc) {
 
                        mvprintw(ln,40, " sCC :%16s", "");
 
                        dispreg(ln, 40, "sCC ", m_state.m_sR[14], (m_cursor==26));
 
                } else {
 
                        mvprintw(ln,40, " sCC :%16s", "");
                mvprintw(ln,40, "%ssCC :%s%s%s%s%s%s%s",
                mvprintw(ln,40, "%ssCC :%s%s%s%s%s%s%s",
                        (m_cursor == 26)?">":" ",
                        (m_cursor == 26)?">":" ",
                        (cc&0x1000)?"FE":"", // Floating point exception
                        (cc&0x1000)?"FE":"", // Floating point exception
                        (cc&0x0800)?"DV":"", // Division by zero
                        (cc&0x0800)?"DV":"", // Division by zero
                        (cc&0x0400)?"BE":"", // Bus Error
                        (cc&0x0400)?"BE":"", // Bus Error
Line 421... Line 430...
                mvprintw(ln,54,"%s%s%s%s",
                mvprintw(ln,54,"%s%s%s%s",
                        (cc&8)?"V":" ",
                        (cc&8)?"V":" ",
                        (cc&4)?"N":" ",
                        (cc&4)?"N":" ",
                        (cc&2)?"C":" ",
                        (cc&2)?"C":" ",
                        (cc&1)?"Z":" ");
                        (cc&1)?"Z":" ");
 
                }
                dispreg(ln,60, "sPC ", m_state.m_sR[15], (m_cursor==27));
                dispreg(ln,60, "sPC ", m_state.m_sR[15], (m_cursor==27));
                ln++;
                ln++;
 
 
                if (gie)
                if (gie)
                        attron(A_BOLD);
                        attron(A_BOLD);
Line 447... Line 457...
                dispreg(ln,60, "uR11", m_state.m_uR[11], (m_cursor==39)); ln++;
                dispreg(ln,60, "uR11", m_state.m_uR[11], (m_cursor==39)); ln++;
 
 
                dispreg(ln, 0, "uR12", m_state.m_uR[12], (m_cursor==40));
                dispreg(ln, 0, "uR12", m_state.m_uR[12], (m_cursor==40));
                dispreg(ln,20, "uSP ", m_state.m_uR[13], (m_cursor==41));
                dispreg(ln,20, "uSP ", m_state.m_uR[13], (m_cursor==41));
                cc = m_state.m_uR[14];
                cc = m_state.m_uR[14];
 
                if (m_show_cc) {
 
                        mvprintw(ln,40, " uCC :%16s", "");
 
                        dispreg(ln, 40, "uCC ", m_state.m_uR[14], (m_cursor==42));
 
                } else {
 
                        mvprintw(ln,40, " uCC :%16s", "");
                mvprintw(ln,40, "%suCC :%s%s%s%s%s%s%s",
                mvprintw(ln,40, "%suCC :%s%s%s%s%s%s%s",
                        (m_cursor == 42)?">":" ",
                        (m_cursor == 42)?">":" ",
                        (cc&0x1000)?"FE":"", // Floating point Exception
                        (cc&0x1000)?"FE":"", // Floating point Exception
                        (cc&0x0800)?"DV":"", // Division by zero
                        (cc&0x0800)?"DV":"", // Division by zero
                        (cc&0x0400)?"BE":"", // Bus Error
                        (cc&0x0400)?"BE":"", // Bus Error
Line 461... Line 476...
                mvprintw(ln,54,"%s%s%s%s",
                mvprintw(ln,54,"%s%s%s%s",
                        (cc&8)?"V":" ",
                        (cc&8)?"V":" ",
                        (cc&4)?"N":" ",
                        (cc&4)?"N":" ",
                        (cc&2)?"C":" ",
                        (cc&2)?"C":" ",
                        (cc&1)?"Z":" ");
                        (cc&1)?"Z":" ");
 
                }
                dispreg(ln,60, "uPC ", m_state.m_uR[15], (m_cursor==43));
                dispreg(ln,60, "uPC ", m_state.m_uR[15], (m_cursor==43));
 
 
                attroff(A_BOLD);
                attroff(A_BOLD);
                ln+=3;
                ln+=3;
 
 
Line 635... Line 651...
        else
        else
                stall_screen();
                stall_screen();
        while((!done)&&(!gbl_err)) {
        while((!done)&&(!gbl_err)) {
                chv = getch();
                chv = getch();
                switch(chv) {
                switch(chv) {
 
                case 'c': case 'C':
 
                        zip->toggle_cc();
 
                        break;
                case 'g': case 'G':
                case 'g': case 'G':
                        m_fpga->writeio(R_ZIPCTRL, CPU_GO);
                        m_fpga->writeio(R_ZIPCTRL, CPU_GO);
                        // We just released the CPU, so we're now done.
                        // We just released the CPU, so we're now done.
                        done = true;
                        done = true;
                        break;
                        break;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.