|
@@ -232,16 +232,25 @@
|
|
|
|
|
|
#ifdef CONFIG_CPU_MIPSR6
|
|
|
.Lbyte_fixup\@:
|
|
|
+ /*
|
|
|
+ * unset_bytes = (#bytes - (#unaligned bytes)) - (-#unaligned bytes remaining + 1) + 1
|
|
|
+ * a2 = a2 - t0 + 1
|
|
|
+ */
|
|
|
PTR_SUBU a2, t0
|
|
|
jr ra
|
|
|
PTR_ADDIU a2, 1
|
|
|
#endif /* CONFIG_CPU_MIPSR6 */
|
|
|
|
|
|
.Lfirst_fixup\@:
|
|
|
+ /* unset_bytes already in a2 */
|
|
|
jr ra
|
|
|
nop
|
|
|
|
|
|
.Lfwd_fixup\@:
|
|
|
+ /*
|
|
|
+ * unset_bytes = partial_start_addr + #bytes - fault_addr
|
|
|
+ * a2 = t1 + (a2 & 3f) - $28->task->BUADDR
|
|
|
+ */
|
|
|
PTR_L t0, TI_TASK($28)
|
|
|
andi a2, 0x3f
|
|
|
LONG_L t0, THREAD_BUADDR(t0)
|
|
@@ -250,6 +259,10 @@
|
|
|
LONG_SUBU a2, t0
|
|
|
|
|
|
.Lpartial_fixup\@:
|
|
|
+ /*
|
|
|
+ * unset_bytes = partial_end_addr + #bytes - fault_addr
|
|
|
+ * a2 = a0 + (a2 & STORMASK) - $28->task->BUADDR
|
|
|
+ */
|
|
|
PTR_L t0, TI_TASK($28)
|
|
|
andi a2, STORMASK
|
|
|
LONG_L t0, THREAD_BUADDR(t0)
|
|
@@ -258,10 +271,15 @@
|
|
|
LONG_SUBU a2, t0
|
|
|
|
|
|
.Llast_fixup\@:
|
|
|
+ /* unset_bytes already in a2 */
|
|
|
jr ra
|
|
|
nop
|
|
|
|
|
|
.Lsmall_fixup\@:
|
|
|
+ /*
|
|
|
+ * unset_bytes = end_addr - current_addr + 1
|
|
|
+ * a2 = t1 - a0 + 1
|
|
|
+ */
|
|
|
PTR_SUBU a2, t1, a0
|
|
|
jr ra
|
|
|
PTR_ADDIU a2, 1
|