[U-Boot-Users] Generic ARM Error with respect to usage of r8 in start.S's.

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[U-Boot-Users] Generic ARM Error with respect to usage of r8 in start.S's.

Woodruff, Richard
Let me restate my minor point hopefully more correctly. - gd/r8 is only used
to reference things in the gd_t structure and its members.  Given the way
things currently stand for ARM something like the following might work as
well and free up a register and remove an assembly dependency:

#define DECLARE_GLOBAL_DATA_PTR gd_t *gd = &global_data
-------------

gd_t global_data;  /* global data declaration */

start_armboot()
{
        #include <someheader with extern gd_t global_data>
        /* remove stack allocation of global */
}

I'm NOT saying that I think this is needed.

As far as a patch goes maybe (though I can't test on anything other than
arm925), the one touchy point I noticed when looking at the code was the
partially useful (in a forward looking way) "irq handling code" would have
to regress or be redone to be made to work with the current level of the
overall code.

Regards,

Richard W.




> -----Original Message-----
> From: Wolfgang Denk [mailto:wd at denx.de]
> Sent: Tuesday, June 24, 2003 3:29 PM
> To: Woodruff, Richard
> Cc: u-boot-users at lists.sourceforge.net
> Subject: Re: [U-Boot-Users] Generic ARM Error with respect to
> usage of r8 in start.S's.
>
>
> In message
> <FD2AC9A020DDD51194710008C7089B20053D4CAD at dlee17.itg.ti.com>
> you wrote:
> >
> > The u-boot for ARM code defines and uses global data which is not
> > referenced using r8 (can be seen by all).  The code as currently
> > generated only uses r8 to access into the bd_info structure and its
> > members.  As it is, the bd_info
>
> No. All access to the "global data pointer" ("*gd") goes
> through  r8, as defined in "include/asm-arm/global_data.h":
>
> #define DECLARE_GLOBAL_DATA_PTR     register gd_t *gd asm ("r8")
>
>
> > structure is allocated on the C stack in start_armboot(), there is
> > nothing special about the sdram which its allocated in.  
> The structure
> > could have as
>
> As mentioned before, the ARM initialization sequence and  
> memory  map do  not  exactly  fit into the U-Boot model as it
> was intended to be. The curerent state is a result of  the  
> port  done  for  the  ARMBoot project,  but  this  is  a  
> temporary  state which will be fixed in a future release.
>
> > Yes the flexibility to do different things is there which is good,
> > unfortunately the leaving of expansion hooks which break
> the existing
> > code somewhat defeats its usefulness.
>
> The problem is that we  obviously  missed  the  exception  
> code  when chosing r8. If you can, please submit a patch to
> fix this problem.
>
>
> Best regards,
>
> Wolfgang Denk
>
> --
> Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
> Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email:
> wd at denx.de In an organization, each person rises to the level
> of his own  incom-
> petency                                         - The Peter Principle
>



Reply | Threaded
Open this post in threaded view
|

[U-Boot-Users] Generic ARM Error with respect to usage of r8 in start.S's.

Wolfgang Denk
In message <FD2AC9A020DDD51194710008C7089B20053D4CB2 at dlee17.itg.ti.com> you wrote:
> Let me restate my minor point hopefully more correctly. - gd/r8 is only used
> to reference things in the gd_t structure and its members.  Given the way
> things currently stand for ARM something like the following might work as
> well and free up a register and remove an assembly dependency:

But this is exactly what I want. The  "global  data"  pointer  (which
used  to  be  calles  "initial  data pointer") is meant for some data
which is needed globally (i. e. cannot be put on a stack) and may  be
used before the initialization of SDRAM.

The current implementation  of  the  init  sequence  is  not  in  the
philosophy of U-Boot. It may be changed. Maybe soon.

The design goal is to switch to C  code  as  soon  as  possible,  and
implement  as  much  as  possible  in  C  - including for example the
initialization of the memory controller.

Best regards,

Wolfgang Denk

--
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
I've got a bad feeling about this.