Greetings:

I am having trouble understanding what is happening to my stack pointer.

At line 1 r1 = 0x03f9_ebe8

After line 15 executes r1 = 0xc00f4ff0
which seems fine so far (according to the map file it is pointing to the
proper location)

After line 16 executes r1=0xc00f6ff0
which is still within the bounds of init_task_union

After line 17 execute r1 = 0xc00f6fe0 which seems like a problem to me,
because it is not with the
bounds of init_task_union - (see map file below)

I would expect r1 to be within the bounds of init_task_union after this code
is executed -
is my guess correct?  If so how is it possible that line 17 comes up with
the result
that it did?

TASK_UNION_SIZE = 8192
STACK_FRAME_OVERHEAD = 16

Thanks for any help

Jerry

1 start_here:
2
3       /* ptr to current */
4       lis     r2,init_task_union at h
5       ori     r2,r2,init_task_union at l
6
7       /* ptr to phys current thread */
8       tophys(r4,r2)
9       addi    r4,r4,THREAD    /* init task's THREAD */
10      mtspr   SPRG3,r4
11      li      r3,0
12      mtspr   SPRG2,r3        /* 0 => r1 has kernel sp */
13
14      /* stack */
15      addi    r1,r2,TASK_UNION_SIZE
16      li      r0,0
17      stwu    r0,-STACK_FRAME_OVERHEAD(r1)


c00f4ff0 D init_task_union
c00f6ff0 d aligninfo
c00f70f0 D cpuinfo_op
c00f7100 D cpu_specs
c00f7280 D ppc_htab_operations



Jerry Walden
Program Manager
Digital Atlantic Inc
http://www.digitalatlantic.com
jwalden at digitalatlantic.com
1-877-494-6073 x407
cell - 703-431-2413


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/


Reply via email to