|
@@ -26,6 +26,7 @@
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
|
.macro get_fault_ip t1 t2
|
|
|
+ loadgp
|
|
|
addil LT%__per_cpu_offset,%r27
|
|
|
LDREG RT%__per_cpu_offset(%r1),\t1
|
|
|
/* t2 = smp_processor_id() */
|
|
@@ -40,14 +41,19 @@
|
|
|
LDREG RT%exception_data(%r1),\t1
|
|
|
/* t1 = this_cpu_ptr(&exception_data) */
|
|
|
add,l \t1,\t2,\t1
|
|
|
+ /* %r27 = t1->fault_gp - restore gp */
|
|
|
+ LDREG EXCDATA_GP(\t1), %r27
|
|
|
/* t1 = t1->fault_ip */
|
|
|
LDREG EXCDATA_IP(\t1), \t1
|
|
|
.endm
|
|
|
#else
|
|
|
.macro get_fault_ip t1 t2
|
|
|
+ loadgp
|
|
|
/* t1 = this_cpu_ptr(&exception_data) */
|
|
|
addil LT%exception_data,%r27
|
|
|
LDREG RT%exception_data(%r1),\t2
|
|
|
+ /* %r27 = t2->fault_gp - restore gp */
|
|
|
+ LDREG EXCDATA_GP(\t2), %r27
|
|
|
/* t1 = t2->fault_ip */
|
|
|
LDREG EXCDATA_IP(\t2), \t1
|
|
|
.endm
|