Re: soft lockup in 2.6.26-rc1+git, on Fire V100

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 07 May 2008, Alan Stern wrote:
> >      ea0:     02 c0 40 41     brz,pn   %g1, fa4 <usb_hcd_poll_rh_status+0x124>
> >      ea4:     01 00 00 00     nop 

Delay slot ... NOP gets executed before BRZ completes.


> >      ea8:     c4 5e 20 d8     ldx  [ %i0 + 0xd8 ], %g2
> >      eac:     a4 07 a7 e7     add  %fp, 0x7e7, %l2
> >      eb0:     90 10 00 18     mov  %i0, %o0
> >      eb4:     c2 58 a0 78     ldx  [ %g2 + 0x78 ], %g1
> >      eb8:     9f c0 40 00     call  %g1
> >      ebc:     92 10 00 12     mov  %l2, %o1

Delay slot ... "mov %l2, %o1" executed before CALLed %g1 routine
starts to execute.


> >      ec0:     a2 92 20 00     orcc  %o0, 0, %l1
> >      ec4:     04 40 00 1f     ble,pn   %icc, f40 <usb_hcd_poll_rh_status+0xc0>
> 
> I'm going to need a little help with this, since I'm not acquainted 
> with SPARC assembler.
> 
> The task dump showed that the address on the stack was
> usb_hcd_poll_rh_status+0x40/0x180, which would be ec0 above.  That
> looks like it is the second instruction past the call to
> hcd->driver->hub_status_data().  Is that right?  And does one expect 
> the return address to be two past the call (call slot or some such 
> thing)?

It's been a while since I used SPARC assembler too, but
I think the answer is "yes".

I don't think anyone would put delay slots into a new
instruction set today, but that hindsight wasn't known
when that instruction set was frozen.

- Dave

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux