diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-01-20 23:32:21 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-01-20 23:32:21 +0000 |
commit | 9e5afbff93158970863cc087ea543fc33b53c933 (patch) | |
tree | f6b38d348b1ce50e6466a034e0e5702094458747 /arch/mips64/kernel/r4k_genex.S | |
parent | e7191459eeaf1d37db56de29bc4dadd09f9f7f35 (diff) |
Fix corruption of $1 in exception handler for R4000 / R4400 SC and MC
versions.
Diffstat (limited to 'arch/mips64/kernel/r4k_genex.S')
-rw-r--r-- | arch/mips64/kernel/r4k_genex.S | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/mips64/kernel/r4k_genex.S b/arch/mips64/kernel/r4k_genex.S index eabd6b861..834ea6c3c 100644 --- a/arch/mips64/kernel/r4k_genex.S +++ b/arch/mips64/kernel/r4k_genex.S @@ -52,7 +52,7 @@ start with an n and gas will believe \n is ok ... */ .macro __BUILD_verbose nexception ld a1, PT_EPC(sp) - PRINT("Got \nexception at %016lx") + PRINT("Got \nexception at %016lx\012") .endm .macro __BUILD_count exception @@ -81,7 +81,7 @@ BUILD_HANDLER adel ade ade silent /* #4 */ BUILD_HANDLER ades ade ade silent /* #5 */ - BUILD_HANDLER ibe ibe cli verbose /* #6 */ + BUILD_HANDLER ibe ibe cli silent /* #6 */ BUILD_HANDLER dbe dbe cli silent /* #7 */ BUILD_HANDLER bp bp sti silent /* #9 */ BUILD_HANDLER ri ri sti silent /* #10 */ @@ -94,8 +94,11 @@ __INIT - /* General exception handler for CPUs with virtual coherency - exception. version. */ +/* General exception handler for CPUs with virtual coherency exception. + * + * Be careful when changing this, it has to be at most 128 bytes to fit + * into space reserved for the exception handler. + */ NESTED(except_vec3_r4000, 0, sp) .set noat mfc0 k1, CP0_CAUSE @@ -105,10 +108,8 @@ li k0, 14<<2 beq k1, k0, handle_vcei dsll k1, k1, 1 - daddu k0, k0, k1 - ld k0, exception_handlers(k0) + ld k0, exception_handlers(k1) jr k0 - nop /* * Big shit, we now may have two dirty primary cache lines for the same |