| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
| |
Close #2286.
|
| |
|
|
|
|
| |
closes 2285.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
See also:
https://nahratzah.wordpress.com/2012/10/12/a-trivial-fair-spinlock/
http://concurrencyfreaks.blogspot.de/2014/05/relaxed-atomics-optimizations-for.html
|
| |
|
|
|
|
| |
Update #2273.
|
|
|
|
| |
Update #2273.
|
|
|
|
|
|
|
|
|
| |
This enables per-object SMP locks on SMP configurations and is the first
step to support fine-grained locking. On uni-processor configuration
there will be no overhead. The _Objects_Acquire() is intended to
replace _Objects_Get_isr_disable().
Update #2273.
|
|
|
|
| |
Update #2273.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The _Thread_Dispatch() function is quite complex and the time to set up
and tear down the stack frame is significant. Split this function into
two parts. The complex part is now in _Thread_Do_dispatch(). Call
_Thread_Do_dispatch() in _Thread_Enable_dispatch() only if necessary.
This increases the average case performance.
Simplify _Thread_Handler() for SMP configurations.
Update #2273.
|
|
|
|
|
|
|
| |
Deliver the POSIX signals after the thread state was updated to avoid
race-conditions on SMP configurations.
Update #2273.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the _Thread_Heir was updated unconditionally in case a new
heir was determined. The _Thread_Dispatch_necessary was only updated in
case the executing thread was preemptible or an internal thread was
unblocked. Change this to update the _Thread_Heir and
_Thread_Dispatch_necessary only in case the currently selected heir
thread is preemptible or a dispatch is forced. Move the schedule
decision into the change priority operation and use the schedule
operation only in rtems_task_mode() in case preemption is enabled or an
ASR dispatch is necessary. This is a behaviour change. Previously, the
RTEMS_NO_PREEMPT also prevented signal delivery in certain cases (not
always). Now, signal delivery is no longer influenced by
RTEMS_NO_PREEMPT. Since the currently selected heir thread is used to
determine if a new heir is chosen, non-preemptible heir threads
currently not executing now prevent a new heir. This may have an
application impact, see change test tm04. Document this change in sp04.
Update #2273.
|
| |
|
|
|
|
| |
Update #2273.
|
| |
|
| |
|
|
|
|
|
| |
4e3d9a4d6c76fba8e31138d503f736405dafc213 broke or1k, cpuatomic.h has to
be added to all architectures.
|
|
|
|
|
|
|
|
|
|
| |
Empty structures are implementation-defined in C. GCC gives them a size
of zero. In C++ empty structures have a non-zero size.
Add ISR_LOCK_DEFINE() to define ISR locks for structures used by C and
C++.
Update #2273.
|
|
|
|
| |
Update #2273.
|
| |
|
|
|
|
| |
Update #2273.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
In _ARMV4_Exception_fiq_default, set the F bit of the SPSR so that when
it gets loaded back to the CPSR in save_more_context it won't re-enable
the FIQs.
Tested on a TMS570LS3137.
|
|
|
|
|
| |
The sparc64 port had some incorrect copyright notices affixed to
source code files.
|
|
|
|
|
|
|
|
| |
Closes #2148
Fix suggested in above ticket. On examination, the assembly
appears to be clearing the DISPATCH_NEEDED flag before jumping
to _Thread_Dispatch.
|
|
|
|
|
|
|
|
| |
Make <rtems/score/atomic.h> available for all RTEMS configurations. Use
inline functions instead of macros. Use ISR disable/enable on
uni-processor configurations to ensure atomicity.
Update #2273.
|
|
|
|
| |
Close #2268.
|
|
|
|
|
|
|
|
|
|
| |
After a context switch we end up in the second part of
_Thread_Dispatch() or in _Thread_Handler() in case of new threads. Use
the same function _Thread_Restore_fp() to restore the floating-point
context. It makes no sense to do this in _Thread_Start_multitasking().
This fixes also a race condition in SMP configurations.
Update #2268.
|
|
|
|
| |
Update #2268.
|
| |
|
| |
|
|
|
|
|
| |
This value depends on the _Heap_Initialize() call sequence and carries
no useful information.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add AltiVec and FPU support to the Context_Control in case we use the
e6500 multilib.
Add PPC_MULTILIB_ALTIVEC and PPC_MULTILIB_FPU multilib defines. Add
non-volatile AltiVec and FPU context to Context_Control. Add save/restore of
non-volatile AltiVec and FPU to _CPU_Context_switch(). Add save/restore
of volatile AltiVec and FPU context to the exception code. Adjust data
cache optimizations for the new context and cache line size.
|
|
|
|
| |
Close #2232.
|
|
|
|
|
|
|
| |
ARMv6-M is not supported since we cannot directly use the ARMv7-M code
due to some inline assembler statements.
Close #2231.
|
| |
|
|
|
|
| |
Provide floating point context support only if PPC_HAS_FPU == 1.
|
|
|
|
| |
Simplify PPC_STACK_ALIGNMENT definition.
|
| |
|
|
|
|
|
| |
Use it for the default PPC_CACHE_ALIGNMENT. Use it for
PPC_STRUCTURE_ALIGNMENT.
|
| |
|
| |
|