mov r0, r0
sub pc, pc, #4
+; This is needed to get Linux 2.6 booting
+ mov r0, #0
+ mcr p15, 0, r0, c7, c10, 4 ; Drain write buffer
+ mcr p15, 0, r0, c7, c7, 0 ; invalidate I+D & BTB
+
+ mrc p15, 0, r0, c1, c0, 0
+ bic r0, r0, #5 ; MMU & Dcache off
+ bic r0, r0, #0x1000 ; Icache off
+ mcr p15, 0, r0, c1, c0, 0 ; disable the MMU & caches
+ mrc p15, 0, r0, c2, c0, 0
+ mov r0, r0
+ sub pc, pc, #4
+
+
+ mov r0, #0
+ mcr p15, 0, r0, c13, c0, 0 ; clear PID
+ mcr p15, 0, r0, c8, c7, 0 ; invalidate I+D TLB
+ mrc p15, 0, r0, c2, c0, 0
+ mov r0, r0
+ sub pc, pc, #4
+
+;Set parameters for kernel
mov r0, #0
mov r1, r10
ldr r2, [r2, #0]