[PATCH 1/4] bsp/leon3: Invalidate L1 caches during startup
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Feb 18 14:33:35 UTC 2014
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.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list