OK, we are deep into the assembly in poplog. We're having some trouble with
our understanding in regards to what asignals.a (tag Lb1) should do.
Our reading of the situation is the following. Soon after the launch of
newpop11, it ends-up in asignals.a (tag Lb1) in order for a branch to
p.sys_reset_signal to be executed. We grab the address of p.sys_reset_signal
correctly, but that is data!!!
It appears that the branch doesn't need to be at p.sys_reset_signal itself,
but to the address specified in the data of p.sys_reset_signal. That's what
we do (highlighted below with ***).
Lb1: lwz r11, 120(r14)
lwz r0,0(r15) ***
stw r2, 4*5(r1)
stw r11, 4*0(r1)
mtctr r0 ***
lwz r2, 4(r15)
lwz r11, 4*2(r15)
mflr r13
bctrl ***
If we look at the data of p.sys_reset_signal in poplink_3.a, here's what we
have:
p.sys_reset_signal:
.long L10B,c.K.d
.long L10C,c.K.w
It refers to the tags L10B that contains:
L10B:
.asciz "sys_reset_signal"
.byte 0,0,0
.long 5,c.K.s
and L10C:
L10C:
.long c.sysdaytime
.short 135
.byte 1,0
.align 2
.long c.K.i
That is pure data! You can't branch to that! Furthermore, L10B contains a
reference to itself. Could someone be kind enough to offer us some clear
explanation on what is expected in that part of the code?
Thank you very much.
Philippe Roy
Manager
Deltagreen USA, Inc.
|