NetBSD-Bugs archive

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

Re: port-evbppc/57926: ppc405: lockdebug crash because cpu_index(curcpu()) is invalid (not 0) value.





cc -E src/external/gpl3/gcc/dist/libgcc/config/rs6000/crtresxgpr.S
(version of gcc)

...
.type _restgpr_29_x,@function; .globl _restgpr_29_x; _restgpr_29_x: .hidden 
_restgpr_29_x; lwz 29,-12(11)
.type _restgpr_30_x,@function; .globl _restgpr_30_x; _restgpr_30_x: .hidden 
_restgpr_30_x; lwz 30,-8(11)
.type _restgpr_31_x,@function; .globl _restgpr_31_x; _restgpr_31_x: .hidden 
_restgpr_31_x; lwz 0,4(11)   <---
  lwz 31,-4(11)   <---
  mtlr 0
  mr 1,11
  blr
...

cc -E src/sys/lib/libkern/arch/powerpc/gprsavrest.S
(version of NetBSD)

.hidden _restgpr_29_x; .text; .align 2; .globl _restgpr_29_x; .type 
_restgpr_29
_x,@function; _restgpr_29_x:; lwz 29,(-4*(32-29))(11)
.hidden _restgpr_30_x; .text; .align 2; .globl _restgpr_30_x; .type 
_restgpr_30
_x,@function; _restgpr_30_x:; lwz 30,(-4*(32-30))(11)
.hidden _restgpr_31_x; .text; .align 2; .globl _restgpr_31_x; .type 
_restgpr_31
_x,@function; _restgpr_31_x:; lwz 31,(-4*(32-31))(11)   <---
lwz 0,4(11)   <---
mtlr 0
mr 1,11
blr

I change gprsavrest.S's lwz 31,(-4)(11) and lwz 0,4(11), kernel works more 
stable.
(I change lwz 0,4(11); mtlr 0; mr 1,11 to comment like gcc's crtresgpr.S, 
kernel works more stable...)

I don't understand what's happening...

# but hptide's udma is unstable(bus-master DMA error: missing interrupt),
# pio-4 is almost stable, but stop on heavy load...






Home | Main Index | Thread Index | Old Index