From 87e8f25ad70e6aae7f62e654d513085fce0e001e Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 19 Dec 2000 16:46:29 +0000 Subject: 2000-12-19 Joel Sherrill * cpu_asm.S (_ISR_Handler): Return to the address in the EPC register. Previous code resulting in the interrupted immediately returning to the caller of the routine it was inside. --- c/src/exec/score/cpu/mips/ChangeLog | 6 ++++++ c/src/exec/score/cpu/mips/cpu_asm.S | 4 +++- cpukit/score/cpu/mips/ChangeLog | 6 ++++++ cpukit/score/cpu/mips/cpu_asm.S | 4 +++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/c/src/exec/score/cpu/mips/ChangeLog b/c/src/exec/score/cpu/mips/ChangeLog index 8def49d0ce..86dfd0e121 100644 --- a/c/src/exec/score/cpu/mips/ChangeLog +++ b/c/src/exec/score/cpu/mips/ChangeLog @@ -1,3 +1,9 @@ +2000-12-19 Joel Sherrill + + * cpu_asm.S (_ISR_Handler): Return to the address in the EPC register. + Previous code resulting in the interrupted immediately returning + to the caller of the routine it was inside. + 2000-12-19 Joel Sherrill * cpu.c (_CPU_Initialize): Do not initialize _ISR_Vector_table() here diff --git a/c/src/exec/score/cpu/mips/cpu_asm.S b/c/src/exec/score/cpu/mips/cpu_asm.S index 9509368dbd..45d152de95 100644 --- a/c/src/exec/score/cpu/mips/cpu_asm.S +++ b/c/src/exec/score/cpu/mips/cpu_asm.S @@ -909,9 +909,11 @@ _ISR_Handler_exit: .set at addiu sp,sp,EXCP_STACK_SIZE + + mfc0 k0, C0_EPC rfe /* Might not need to do RFE here... */ - j ra + j k0 nop .set reorder diff --git a/cpukit/score/cpu/mips/ChangeLog b/cpukit/score/cpu/mips/ChangeLog index 8def49d0ce..86dfd0e121 100644 --- a/cpukit/score/cpu/mips/ChangeLog +++ b/cpukit/score/cpu/mips/ChangeLog @@ -1,3 +1,9 @@ +2000-12-19 Joel Sherrill + + * cpu_asm.S (_ISR_Handler): Return to the address in the EPC register. + Previous code resulting in the interrupted immediately returning + to the caller of the routine it was inside. + 2000-12-19 Joel Sherrill * cpu.c (_CPU_Initialize): Do not initialize _ISR_Vector_table() here diff --git a/cpukit/score/cpu/mips/cpu_asm.S b/cpukit/score/cpu/mips/cpu_asm.S index 9509368dbd..45d152de95 100644 --- a/cpukit/score/cpu/mips/cpu_asm.S +++ b/cpukit/score/cpu/mips/cpu_asm.S @@ -909,9 +909,11 @@ _ISR_Handler_exit: .set at addiu sp,sp,EXCP_STACK_SIZE + + mfc0 k0, C0_EPC rfe /* Might not need to do RFE here... */ - j ra + j k0 nop .set reorder -- cgit v1.2.3