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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [cpu/] [or1k/] [except.c] - Diff between revs 152 and 167

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 152 Rev 167
Line 165... Line 165...
        mtspr(SPR_SR, mfspr(SPR_SR) & ~(SPR_SR_DME));
        mtspr(SPR_SR, mfspr(SPR_SR) & ~(SPR_SR_DME));
        mtspr(SPR_SR, mfspr(SPR_SR) & ~(SPR_SR_IME));
        mtspr(SPR_SR, mfspr(SPR_SR) & ~(SPR_SR_IME));
 
 
        mtspr(SPR_SR, mfspr(SPR_SR) | SPR_SR_SUPV);     /* SUPV mode */
        mtspr(SPR_SR, mfspr(SPR_SR) | SPR_SR_SUPV);     /* SUPV mode */
        mtspr(SPR_SR, mfspr(SPR_SR) & ~SPR_SR_EXR);     /* Disable except. */
        mtspr(SPR_SR, mfspr(SPR_SR) & ~SPR_SR_EXR);     /* Disable except. */
 
 
        pc = (unsigned long)except;
        pc = (unsigned long)except;
 
 
        /* This has been removed. All exceptions (not just SYSCALL) suffer
        /* This has been removed. All exceptions (not just SYSCALL) suffer
           from the same problem. The solution is to continue just like
           from the same problem. The solution is to continue just like
           the pipeline would, and issue the exception on the next
           the pipeline would, and issue the exception on the next
Line 178... Line 179...
           advantage that a debugger can prevent an exception from
           advantage that a debugger can prevent an exception from
           taking place by resetting the pc. */
           taking place by resetting the pc. */
#if 0
#if 0
        /* MM: We do pc update after the execute (in the simulator), so we
        /* MM: We do pc update after the execute (in the simulator), so we
           decrease it by 4 so that next instruction points to first exception
           decrease it by 4 so that next instruction points to first exception
           instruction. */
           instruction.  Do NOT comment this out. */
        if (except == EXCEPT_SYSCALL)
        if (except == EXCEPT_SYSCALL)
          pc -= 4;
          pc -= 4;
#endif
#endif
 
 
        pcnext = pc+4;
        pcnext = pc+4;
 
 
        /* Added by CZ 27/05/01 */
        /* Added by CZ 27/05/01 */
        pc_phy = pc;      /* An exception always turns off the MMU, so
        pc_phy = pc;      /* An exception always turns off the MMU, so
                             pc is always pc_phy */
                             pc is always pc_phy */

powered by: WebSVN 2.1.0

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