*/
                mfs     r11, rpid
                nop
-               bri     4
                mfs     r3, rear                /* Get faulting address */
                nop
                /* If we are faulting a kernel address, we have to use the
         */
        handle_data_tlb_miss_exception:
                /* Working registers already saved: R3, R4, R5, R6
-                * R3 = ESR
+                * R3 = EAR, R4 = ESR
                 */
                mfs     r11, rpid
                nop
-               bri     4
                mfs     r3, rear                /* Get faulting address */
                nop
 
                /* If we are faulting a kernel address, we have to use the
                 * kernel page tables. */
-               ori     r4, r0, CONFIG_KERNEL_START
-               cmpu    r4, r3, r4
+               ori     r6, r0, CONFIG_KERNEL_START
+               cmpu    r4, r3, r6
                bgti    r4, ex5
                ori     r4, r0, swapper_pg_dir
                mts     rpid, r0                /* TLB will have 0 TID */
                 */
                mfs     r11, rpid
                nop
-               bri     4
                mfs     r3, rear                /* Get faulting address */
                nop