0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include <asm/asm.h>
0011 #include <asm/regdef.h>
0012 #include <asm/mipsregs.h>
0013 #include <asm/stackframe.h>
0014
0015
0016
0017
0018
0019 LEAF(except_vec2_octeon)
0020
0021 .set push
0022 .set mips64r2
0023 .set noreorder
0024 .set noat
0025
0026
0027
0028
0029
0030 rdhwr k0, $0
0031 PTR_LA k1, cache_err_dcache
0032 sll k0, k0, 3
0033 PTR_ADDU k1, k0, k1
0034
0035 dmfc0 k0, CP0_CACHEERR, 1
0036 sd k0, (k1)
0037 dmtc0 $0, CP0_CACHEERR, 1
0038
0039
0040 mfc0 k1, CP0_STATUS
0041 andi k1, k1, ST0_EXL
0042 beqz k1, 1f
0043 nop
0044 j cache_parity_error_octeon_non_recoverable
0045 nop
0046
0047
0048 1: j handle_cache_err
0049 nop
0050
0051 .set pop
0052 END(except_vec2_octeon)
0053
0054
0055
0056
0057 LEAF(handle_cache_err)
0058 .set push
0059 .set noreorder
0060 .set noat
0061
0062 SAVE_ALL
0063 KMODE
0064 jal cache_parity_error_octeon_recoverable
0065 nop
0066 j ret_from_exception
0067 nop
0068
0069 .set pop
0070 END(handle_cache_err)