On 2014-02-18 15:10, Daniel Hellstrom wrote:


On 02/18/2014 02:58 PM, Sebastian Huber wrote:
On 2014-02-18 14:49, Daniel Hellstrom wrote:

Is this needed for CPU0 also?

I don't know.  In which state are the caches after a power-on-reset?

It is the boot loaders job to initialize hardware and to load RTEMS into RAM
before jumping into it. Since single-core version seems to be working as it is
I see no reason why the behaviour have changed with SMP. The bootloader
initializes also the secondary CPUs and RTEMS is waiting in a loop for the
secondary CPU (not modifying anything) to wake up, so I guess it shouldn't be
needed there either.

If I understand this correctly, then the bootloader will place the secondary processors into the halt state and

uint32_t _CPU_SMP_Initialize( uint32_t configured_cpu_count )
{
[...]
  for ( cpu = 1 ; cpu < used_cpu_count ; ++cpu ) {
    #if defined(RTEMS_DEBUG)
      printk( "Waking CPU %d\n", cpu );
    #endif

    LEON3_IrqCtrl_Regs->mpstat = 1 << cpu;
  }
[...]
}

will request them to resume execution at the reset vector?

Is it guaranteed that in the L1 caches of such a secondary processor all valid cache lines (if they exist) reflect the state observable by the main processor? In other words, is it guaranteed that a secondary processor will read the value last written by other processors?

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to