[ECOS] RE : [ECOS] RedBoot crash after do_go()

David POUTY david.pouty@com2gether.net
Thu Jan 8 16:54:00 GMT 2004

The program works also well with GDB.
I don't understand your explanation about the cache flush code ! I think
also there's a problem with cache but I not familiar with it.

The stack is corrupt when 'sync' is executed, just after the 'mtmsr'
instruction with the bit EE set.


-----Message d'origine-----
De : Gary Thomas [mailto:gary@mlbassoc.com] 
Envoyé : mercredi 7 janvier 2004 18:38
À : David POUTY
Cc : eCos Discussion
Objet : Re: [ECOS] RedBoot crash after do_go()

On Wed, 2004-01-07 at 10:32, David POUTY wrote:
> Hi,
> I try to execute a simple application from RedBoot (MPC8xx plateform).

> When application is finished RedBoot display exit code, then crash 
> (enter in GDB mode). It seems that the stack is corrupted BEFORE the 
> application is executed.
> During function hal_thread_load_context(), the macro 
> 'hal_cpu_int_merge' is called to merge MSR register value with the 
> thread context previously initialized (HAL_THREAD_INT_CONTEXT). The 
> thread MSR value contains MSR_EE (to external enable irqs).
> The stack is corrupted when MSR_EE bit is set to MSR in 
> 'hal_cpu_int_merge' !! I use GDB with BDI probe. There's no interrupt 
> pending (SIPEND=0).

What happens if you execute the program via GDB, instead of RedBoot?

One thing to try (no guarantees) would be to disable the cache flush
code that's in mbx.S (only when CYG_HAL_STARTUP_RAM is defined).  Look
at how it's done on a newer platform, like the adder.

Gary Thomas <gary@mlbassoc.com>
MLB Associates

Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

More information about the Ecos-discuss mailing list