| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
The use of this function is optional. Newer BSPs do not use it.
|
|
|
|
| |
Enumerators are restricted to signed integers in some C standards.
|
|
|
|
|
|
|
|
| |
Add _CPU_Get_TLS_thread_pointer() to get the thread pointer which is
used to get the address of thread-local storage objects associated with
a thread.
Update #4920.
|
|
|
|
|
|
|
|
| |
Store symbols with an arbitrary absolute address such as _TLS_Size,
_TLS_Alignment, _TLS_Data_size, and _TLS_BSS_size in an object to avoid issues
with some code models.
Update #4953.
|
|
|
|
|
|
|
| |
The ARM926EJ-S is an ARMv5T architecture processor and lacks some
features of ARMv6 processors such as the ARM1176JZF-S.
Close #4940.
|
|
|
|
| |
Sponsored-By: Precidata
|
|
|
|
|
| |
All CPU ports used the same <rtems/score/cpustdatomic.h> header file to
provide the atomic operations. Remove the header file indirection.
|
|
|
|
| |
Prefer macros with a proper namespace.
|
| |
|
|
|
|
|
| |
The embedded brains GmbH & Co. KG is the legal successor of embedded
brains GmbH.
|
|
|
|
|
|
|
| |
Due to API change, the patch also fixes affected BSPs and uses
value provided by MPU CTRL spec option there.
Sponsored-By: Precidata
|
|
|
|
| |
Close #4759.
|
|
|
|
|
|
|
| |
Set the thread ID register in the CPU context.
Update #3835.
Close #4753.
|
|
|
|
| |
Update #3835.
|
|
|
|
|
|
|
| |
Directly use "static inline" which is available in C99 and later. This brings
the RTEMS implementation closer to standard C.
Close #3935.
|
|
|
|
|
|
|
| |
All CPU ports used the same _CPU_Counter_difference() implementation. Remove
this CPU port interface and mandate a monotonically increasing CPU counter.
Close #3456.
|
|
|
|
|
|
|
|
|
|
|
|
| |
At some point during system initialization, the idle threads are created.
Afterwards, the boot processor basically executes within the context of an idle
thread with thread dispatching disabled. On some architectures, the
thread-local storage area of the associated thread must be set in dedicated
processor registers. Add the new CPU port function to do this:
void _CPU_Use_thread_local_storage( const Context_Control *context )
Close #4672.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The false trigger is covered in:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
GCC 11 and 12 has been patched for constant pointer casts above
4K. This code casts a constant pointer within the first 4K
page. As a result the patch disables the warning.
Updates #4662
|
|
|
|
|
|
|
|
|
|
| |
Sections with identical attributes may be contiguous with a respective
begin and end address which is not on a minimum region boundary. The
begin address is aligned down to the region base address. The end
address is aligned up to the region end address. Account for this in
the check for contiguous sections.
Update #4202.
|
|
|
|
|
|
|
|
| |
A section may span up to the end of the address range. In this case the
end address is zero. Use the base address to check if a region should
be before another region.
Update #4202.
|
| |
|
|
|
|
|
| |
Fix move of regions. Allow sections to be contained in a region (may
happen due to region alignment).
|
|
|
|
| |
This simplifies unit testing.
|
|
|
|
| |
Updates #4625.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous SMP multitasking start assumed that the initial heir thread of a
processor starts execution in _Thread_Handler(). The _Thread_Handler() sets
the interrupt state explicitly by _ISR_Set_level() before it calls the thread
entry. Under certain timing conditions, processors may perform an initial
context switch to a thread which already executes its thread body (see
smptests/smpstart01). In this case, interrupts are disabled after the context
switch on targets which do not save/restore the interrupt state during a
context switch (aarch64, arm, and riscv).
Close #4627.
|
|
|
|
| |
Updates #3053.
|
|
|
|
|
| |
Use the SRS (Store Return State) instruction if available. This
considerably simplifies the context save and restore.
|
|
|
|
|
|
|
|
|
|
|
| |
On a public interface, the stack pointer must be aligned on an 8-byte
boundary. However, it may temporarily be only aligned on a 4-byte
boundary. The interrupt handling code must ensure that the stack
pointer is properly aligned before it calls a function. See also:
https://developer.arm.com/documentation/den0013/d/Interrupt-Handling/External-interrupt-requests/Nested-interrupt-handling
Update #4579.
|
|
|
|
| |
Update #4579.
|
|
|
|
|
|
|
|
| |
Use volatile register r0 for the per-CPU control of the current
processor instead of the non-volatile register r7. This enables the use
of r7 in a follow up patch. Do the interrupt handling in ARM mode.
Update #4579.
|
|
|
|
| |
Update #4579.
|
|
|
|
|
|
|
| |
Add default memory attributes for read-write data. The actual
attributes depend on the RTEMS_SMP build option.
Update #4202.
|
|
|
|
|
|
|
| |
Fix definition of AARCH32_PMSA_DATA_READ_WRITE_CACHED. Since
AARCH32_PMSA_ATTR_AP_EL1_RW_EL0_NO is zero, this fix is only cosmetic.
Update #4202.
|
|
|
|
|
|
| |
These two OAR copyright headers are the only two in the codebase with
a format that differs from the typical OAR copyright header. This makes
all of the OAR copyright headers consistent.
|
|
|
|
|
| |
Close #3250.
Close #4081.
|
|
|
|
|
|
|
|
| |
Move _CPU_Fatal_halt() declaration to <rtems/score/cpuimpl.h> and make sure it
is a proper declaration of a function which does not return. Fix the type of
the error code. If necessary, add the implementation to cpu.c. Implementing
_CPU_Fatal_halt() as a function makes it possible to wrap this function for
example to fully test _Terminate().
|
|
|
|
|
|
| |
Remove _CPU_SMP_Processor_event_broadcast() and
_CPU_SMP_Processor_event_receive(). These functions are hard to use since they
are subject to the lost wake up problem.
|
|
|
|
|
|
|
|
| |
The Cortex-R52 does not support cache coherency and the shareable memory
attribute. If a region is configured to be shareable, then it falls
back to use non-cacheable memory.
Update #4202.
|
|
|
|
| |
Update #4202.
|
|
|
|
| |
Update #4202.
|
|
|
|
|
|
|
| |
Disable the alignment check through SCTLR[A] in
_AArch32_PMSA_Initialize().
Update #4202.
|
|
|
|
|
|
|
|
|
|
|
| |
The write to RBAR didn't have the valid flag set. Therefore the write to
RASR had an influence on the previously set region. That means for
example that if Region 0 had been enabled but 1 should be disabled due
to a size of 0, the previous code would have disabled region 0 instead.
This patch fixes that behaviour.
Close #4450
|
|
|
|
|
|
|
| |
Don't initialze regions that have a negative size (for example due to a
wrong calculation).
Update #4450
|
|
|
|
| |
Update #4202.
|
|
|
|
|
|
|
|
|
|
|
| |
The __builtin_unreachable() cannot be used with current GCC versions to
tell the compiler that a function does not return to the caller, see:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99151
Add a no return variant of _CPU_Context_switch() to avoid generation of
dead code in _Thread_Start_multitasking() if RTEMS was built with SMP
support enabled.
|
| |
|
|
|
|
| |
Update #4202.
|
|
|
|
| |
Update #4202.
|
|
|
|
| |
Update #4202.
|
|
|
|
|
|
|
|
| |
Somehow the table index has been missing in the latest patch version.
With that, the configuration for the first region has been applied
multiple times.
Update #4180
|