You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeRTOS-Kernel/portable/GCC
bbain 050cf0d80f
Introduce portMEMORY_BARRIER for Microblaze port. (#621)
The introduction of `portMEMORY_BARRIER` will ensure
the places in the kernel use a barrier will work.
For example, `xTaskResumeAll` has a memory barrier
to ensure its correctness when compiled with optimization
enabled. Without the barrier `xTaskResumeAll` can fail
(e.g. start reading and writing to address 0 and/or
infinite looping) when `xPendingReadyList` contains more
than one task to restore.

In `xTaskResumeAll` the compiler chooses to cache the
`pxTCB` the first time through the loop for use
in every subsequent loop. This is incorrect as the
removal of `pxTCB->xEventListItem` will actually
change the value of `pxTCB` if it was read again
at the top of the loop. The barrier forces the compiler
to read `pxTCB` again at the top of the loop.

The compiler is operating correctly. The removal
`pxTCB->xEventListItem` executes on a `List_t *`
and `ListItem_t *`.  This means that the compiler
can assume that any `MiniListItem_t` values are
unchanged by the loop (i.e. "strict-aliasing").
This allows the compiler to cache `pxTCB` as it
is obtained via a `MiniListItem_t`. This is incorrect
in this case because it is possible for a `ListItem_t *`
to actually alias a `MiniListItem_t`. This is technically
a "violation of aliasing rules" so we use the the barrier
to disable the strict-aliasing optimization in this loop.
2 years ago
..
ARM7_AT91FR40008 Added support of 64bit events. (#597) 2 years ago
ARM7_AT91SAM7S Added support of 64bit events. (#597) 2 years ago
ARM7_LPC23xx Added support of 64bit events. (#597) 2 years ago
ARM7_LPC2000 Added support of 64bit events. (#597) 2 years ago
ARM_CA9 Normalize line endings and whitespace in source files 2 years ago
ARM_CA53_64_BIT Normalize line endings and whitespace in source files 2 years ago
ARM_CA53_64_BIT_SRE Normalize line endings and whitespace in source files 2 years ago
ARM_CM0 Added support of 64bit events. (#597) 2 years ago
ARM_CM3 Added support of 64bit events. (#597) 2 years ago
ARM_CM3_MPU Added support of 64bit events. (#597) 2 years ago
ARM_CM4F Added support of 64bit events. (#597) 2 years ago
ARM_CM4_MPU Added support of 64bit events. (#597) 2 years ago
ARM_CM7 Added support of 64bit events. (#597) 2 years ago
ARM_CM23 Added support of 64bit events. (#597) 2 years ago
ARM_CM23_NTZ/non_secure Added support of 64bit events. (#597) 2 years ago
ARM_CM33 Added support of 64bit events. (#597) 2 years ago
ARM_CM33_NTZ/non_secure Added support of 64bit events. (#597) 2 years ago
ARM_CM55 Added support of 64bit events. (#597) 2 years ago
ARM_CM55_NTZ/non_secure Added support of 64bit events. (#597) 2 years ago
ARM_CM85 Added support of 64bit events. (#597) 2 years ago
ARM_CM85_NTZ/non_secure Added support of 64bit events. (#597) 2 years ago
ARM_CR5 Normalize line endings and whitespace in source files 2 years ago
ARM_CRx_No_GIC Normalize line endings and whitespace in source files 2 years ago
ATMega323 Added support of 64bit events. (#597) 2 years ago
AVR32_UC3 Added support of 64bit events. (#597) 2 years ago
AVR_AVRDx Remove AVR ports from main repo (#394) 3 years ago
AVR_Mega0 Remove AVR ports from main repo (#394) 3 years ago
CORTUS_APS3 Added support of 64bit events. (#597) 2 years ago
ColdFire_V2 Added support of 64bit events. (#597) 2 years ago
H8S2329 Added support of 64bit events. (#597) 2 years ago
HCS12 Added support of 64bit events. (#597) 2 years ago
IA32_flat Normalize line endings and whitespace in source files 2 years ago
MCF5235 Replace two dashes and one whitespace with their corresponding ASCII characters. (#362) 4 years ago
MSP430F449 Added support of 64bit events. (#597) 2 years ago
MicroBlaze Introduce portMEMORY_BARRIER for Microblaze port. (#621) 2 years ago
MicroBlazeV8 Introduce portMEMORY_BARRIER for Microblaze port. (#621) 2 years ago
MicroBlazeV9 Introduce portMEMORY_BARRIER for Microblaze port. (#621) 2 years ago
NiosII Added support of 64bit events. (#597) 2 years ago
PPC405_Xilinx Added support of 64bit events. (#597) 2 years ago
PPC440_Xilinx Added support of 64bit events. (#597) 2 years ago
RISC-V Normalize line endings and whitespace in source files 2 years ago
RL78 Added support of 64bit events. (#597) 2 years ago
RX100 Added support of 64bit events. (#597) 2 years ago
RX200 Added support of 64bit events. (#597) 2 years ago
RX600 Added support of 64bit events. (#597) 2 years ago
RX600v2 Added support of 64bit events. (#597) 2 years ago
RX700v3_DPFPU Added support of 64bit events. (#597) 2 years ago
STR75x Added support of 64bit events. (#597) 2 years ago
TriCore_1782 Added support of 64bit events. (#597) 2 years ago