|
@@ -83,7 +83,7 @@ extern asmlinkage void handle_dbe(void);
|
|
extern asmlinkage void handle_sys(void);
|
|
extern asmlinkage void handle_sys(void);
|
|
extern asmlinkage void handle_bp(void);
|
|
extern asmlinkage void handle_bp(void);
|
|
extern asmlinkage void handle_ri(void);
|
|
extern asmlinkage void handle_ri(void);
|
|
-extern asmlinkage void handle_ri_rdhwr_vivt(void);
|
|
|
|
|
|
+extern asmlinkage void handle_ri_rdhwr_tlbp(void);
|
|
extern asmlinkage void handle_ri_rdhwr(void);
|
|
extern asmlinkage void handle_ri_rdhwr(void);
|
|
extern asmlinkage void handle_cpu(void);
|
|
extern asmlinkage void handle_cpu(void);
|
|
extern asmlinkage void handle_ov(void);
|
|
extern asmlinkage void handle_ov(void);
|
|
@@ -2408,9 +2408,18 @@ void __init trap_init(void)
|
|
|
|
|
|
set_except_vector(EXCCODE_SYS, handle_sys);
|
|
set_except_vector(EXCCODE_SYS, handle_sys);
|
|
set_except_vector(EXCCODE_BP, handle_bp);
|
|
set_except_vector(EXCCODE_BP, handle_bp);
|
|
- set_except_vector(EXCCODE_RI, rdhwr_noopt ? handle_ri :
|
|
|
|
- (cpu_has_vtag_icache ?
|
|
|
|
- handle_ri_rdhwr_vivt : handle_ri_rdhwr));
|
|
|
|
|
|
+
|
|
|
|
+ if (rdhwr_noopt)
|
|
|
|
+ set_except_vector(EXCCODE_RI, handle_ri);
|
|
|
|
+ else {
|
|
|
|
+ if (cpu_has_vtag_icache)
|
|
|
|
+ set_except_vector(EXCCODE_RI, handle_ri_rdhwr_tlbp);
|
|
|
|
+ else if (current_cpu_type() == CPU_LOONGSON3)
|
|
|
|
+ set_except_vector(EXCCODE_RI, handle_ri_rdhwr_tlbp);
|
|
|
|
+ else
|
|
|
|
+ set_except_vector(EXCCODE_RI, handle_ri_rdhwr);
|
|
|
|
+ }
|
|
|
|
+
|
|
set_except_vector(EXCCODE_CPU, handle_cpu);
|
|
set_except_vector(EXCCODE_CPU, handle_cpu);
|
|
set_except_vector(EXCCODE_OV, handle_ov);
|
|
set_except_vector(EXCCODE_OV, handle_ov);
|
|
set_except_vector(EXCCODE_TR, handle_tr);
|
|
set_except_vector(EXCCODE_TR, handle_tr);
|