Hi, On Thu, 2009-10-29 at 03:12 +0000, Maciej W. Rozycki wrote: > On Thu, 29 Oct 2009, Wu Zhangjin wrote: > > > diff --git a/arch/mips/boot/compressed/head.S b/arch/mips/boot/compressed/head.S > > index e23f25e..29080f4 100644 > > --- a/arch/mips/boot/compressed/head.S > > +++ b/arch/mips/boot/compressed/head.S > > @@ -38,7 +38,7 @@ start: > > PTR_LA ra, 2f > > PTR_LA k0, decompress_kernel > > jr k0 > > - nop > > + nop > > 2: > > move a0, s0 > > move a1, s1 > > @@ -46,7 +46,7 @@ start: > > move a3, s3 > > PTR_LI k0, KERNEL_ENTRY > > jr k0 > > - nop > > + nop > > 3: > > b 3b need to add one nop here. > > END(start) > > This piece of code looks unsafe to me. I'm not sure which tree this is > against and certainly I don't have a local copy of the file, This is against the of mips-for-linux-next branh of Ralf's http://www.linux-mips.org/git?p=upstream-sfr.git;a=summary > but based on > the manual delay slot scheduling this is built with .set noreorder in > effect Yes, there is exactly a ".set noreorder" there: arch/mips/boot/compressed/head.S: [...] 17 18 .set noreorder 19 .cprestore 20 LEAF(start) 21 start: 22 /* Save boot rom start args */ 23 move s0, a0 24 move s1, a1 25 move s2, a2 26 move s3, a3 27 28 /* Clear BSS */ [...] > and as such the function lacks a delay slot fill for the trailing > branch (which is also ill-formatted). A new version will be sent out, thanks! Regards, Wu Zhangjin