809 |
msr |= 0x00010000; |
msr |= 0x00010000; |
810 |
goto store_current; |
goto store_current; |
811 |
case EXCP_NO_FP: |
case EXCP_NO_FP: |
812 |
|
msr &= ~0xFFFF0000; |
813 |
goto store_current; |
goto store_current; |
814 |
case EXCP_DECR: |
case EXCP_DECR: |
815 |
if (msr_ee == 0) { |
if (msr_ee == 0) { |
855 |
return; |
return; |
856 |
case EXCP_RFI: |
case EXCP_RFI: |
857 |
/* Restore user-mode state */ |
/* Restore user-mode state */ |
|
tb_flush(env); |
|
858 |
#if defined (DEBUG_EXCEPTIONS) |
#if defined (DEBUG_EXCEPTIONS) |
859 |
if (msr_pr == 1) |
if (msr_pr == 1) |
860 |
printf("Return from exception => 0x%08x\n", (uint32_t)env->nip); |
printf("Return from exception => 0x%08x\n", (uint32_t)env->nip); |
887 |
env->nip = excp << 8; |
env->nip = excp << 8; |
888 |
env->exception_index = EXCP_NONE; |
env->exception_index = EXCP_NONE; |
889 |
/* Invalidate all TLB as we may have changed translation mode */ |
/* Invalidate all TLB as we may have changed translation mode */ |
|
tlb_flush(env, 1); |
|
890 |
/* ensure that no TB jump will be modified as |
/* ensure that no TB jump will be modified as |
891 |
the program flow was changed */ |
the program flow was changed */ |
892 |
#ifdef __sparc__ |
#ifdef __sparc__ |