+
+3:
+ @ unaligned ending nastiness :(
+ add r3, r0, #8*4
+ add r12, r1, #8*4
+ lsr r3, #12
+ lsr r12, #12
+ cmp r3, r0, lsr #12 @ are we crossing
+ cmpeq r12, r1, lsr #12 @ the page boundary?
+ beq 1b @ nope, overreading is safe
+
+ @ _wb_'s bad luck, do some slow stuff here
+ push {r0-r2, lr}
+ vpush {q11, q12}
+ sub sp, #8*4*2
+ lsl r2, #2
+ mov r1, r0
+ mov r0, sp
+ bl memcpy
+ ldr r2, [sp, #8*4*2 + 16*2 + 8] @ stacked r2
+ add r0, sp, #8*4
+ ldr r1, [sp, #8*4*2 + 16*2 + 4]
+ lsl r2, #2
+ bl memcpy
+ vld4.8 {d0-d3}, [sp]!
+ vld4.8 {d4-d7}, [sp]!
+ vpop {q11, q12}
+ pop {r0-r2, lr}
+ b 2b