linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Gary D. Thomas" <gary.thomas@mind.be>
To: jwalden@digitalatlantic.com
Cc: Linux PPC embedded <linuxppc-embedded@lists.linuxppc.org>
Subject: Re: Stack Frame Calc Problem in head_4xx.S
Date: 03 May 2003 16:21:39 -0600	[thread overview]
Message-ID: <1052000497.2537.5413.camel@hermes> (raw)
In-Reply-To: <EGEGIJHKDKJGAJMGIDPNGEOPCLAA.jwalden@digitalatlantic.com>


On Sat, 2003-05-03 at 15:20, Jerry Walden wrote:
> 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)
>

Why do you think this?  It seems that init_task_union comprises the
space from 0xc00f4ff0..0xc00f6ff0.  That value is certainly within
that range.

> 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?

Read how 'stwu' works.  After the store takes place, r1 is updated
with the new value.  In other words
  stwu r0,-STACK_FRAME_OVERHEAD(r1)
means
  [r1] = r0
  r1 = r1 - STACK_FRAME_OVERHEAD(r1)
which is exactly the results you are getting.

>
> 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@h
> 5	ori	r2,r2,init_task_union@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@digitalatlantic.com
> 1-877-494-6073 x407
> cell - 703-431-2413
>
>
--
Gary D. Thomas <gary.thomas@mind.be>


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

  reply	other threads:[~2003-05-03 22:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-03 21:20 Stack Frame Calc Problem in head_4xx.S Jerry Walden
2003-05-03 22:21 ` Gary D. Thomas [this message]
2003-05-03 23:08   ` Jerry Walden
2003-05-05  1:41 ` Erik Christiansen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1052000497.2537.5413.camel@hermes \
    --to=gary.thomas@mind.be \
    --cc=jwalden@digitalatlantic.com \
    --cc=linuxppc-embedded@lists.linuxppc.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).