summaryrefslogtreecommitdiffstats
path: root/cpukit/score (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-06-29arm: For AArch32 use non-shareable memorySebastian Huber1-2/+2
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.
2021-06-29arm: Fix AARCH32_PMSA_ATTR_XN valueSebastian Huber1-1/+1
Update #4202.
2021-06-29arm: Fix AArch32 memory attribute definesSebastian Huber1-4/+4
Update #4202.
2021-06-29arm: Disable alignment check in PMSA initSebastian Huber1-1/+1
Disable the alignment check through SCTLR[A] in _AArch32_PMSA_Initialize(). Update #4202.
2021-06-24Update Strong APA SchedulerRichi Dubey1-192/+789
This change allows for the migration of higher priority tasks on the arrival of a lower priority task limited by affinity constraints. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
2021-06-24sparc: Simplify trap table initializationSebastian Huber3-54/+638
Move _ISR_Handler() to a separate file since it is now only used if a handler is installed by _CPU_ISR_install_raw_handler(). Statically initialize the traps for external interrupts to use the new _SPARC_Interrupt_trap() which directly dispatches the interrupt handlers installed by rtems_interrupt_handler_install() via the BSP-provided _SPARC_Interrupt_dispatch(). Since the trap table is now fully statically initialized, there is no longer a dependency on the Cache Manager in the default configuration. Update #4458.
2021-06-24sparc: Move FP frame offset defines to cpuimpl.hSebastian Huber2-57/+57
This makes them usable in multiple files. Update #4458.
2021-06-24sparc: More reliable bad trap handlingSebastian Huber5-1/+513
Statically initialize the trap table in start.S to jump to _SPARC_Bad_trap() for all unexpected traps. This enables a proper RTEMS fatal error handling right from the start. Do not rely on the stack and register settings which caused an unexpected trap. Use the ISR stack of the processor to do the fatal error handling. Save the full context which caused the trap. Fatal error handler may use it for error logging. Unify the _CPU_Exception_frame_print() implementations and move it to cpukit. Update #4459.
2021-06-24sparc: Move ISR handler install routinesSebastian Huber2-174/+201
Move _CPU_ISR_install_raw_handler() and _CPU_ISR_install_vector() to separate files. The goal is to make their use optional. Update #4458. Update #4459.
2021-06-24score: Move _ISR_Vector_table[] to separate fileSebastian Huber2-8/+48
The _ISR_Handler_initialization() does not touch the _ISR_Vector_table[]. Move the definition of _ISR_Vector_table[] to a separate file. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
2021-06-24score: Remove bogus _ISR_Nest_level settingSebastian Huber1-4/+0
This variable is actually contained in _Per_CPU_Information[] which is already zero initialized. Remove superfluous includes.
2021-06-24score: Remove _CPU_Initialize_vectors()Sebastian Huber13-76/+0
This CPU port macro was not used. Since the _ISR_Vector_table[] is statically allocated, CPU ports could initialize this table in _CPU_Initialize() if necessary. Remove _CPU_Initialize_vectors() to simplify the CPU port interface.
2021-06-21cpu/armv7m: Fix initialization of MPU regionsChristian Mauderer1-1/+1
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
2021-06-21cpu/armv7m: Avoid regions with negative sizeChristian Mauderer1-1/+1
Don't initialze regions that have a negative size (for example due to a wrong calculation). Update #4450
2021-06-16arm: Fix parameter use in AARCH32_PMSA_MEM_ATTR()Sebastian Huber1-1/+1
Update #4202.
2021-06-15score: Comment _Thread_queue_Surrender_sticky()Sebastian Huber1-1/+7
The change also helps to avoid reports from static analysers since most callers of _Thread_queue_Make_ready_again() check the unblock status.
2021-06-10score: Add PER_CPU_DATA_NEED_INITIALIZATION()Sebastian Huber2-42/+98
Make the initialization of the per-CPU data optional. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
2021-06-10score: Fix initialization of thread queue contextSebastian Huber1-2/+2
Set Thread_queue_Context::timeout_absolute in _Thread_queue_Context_set_timeout_argument() to avoid using it uninitialized. The bug was introduced by a89ecaa1a94d49ddae7753d6b83923e9d2a00486.
2021-05-28libcsupport: Added futimens() and utimensat()Ryan Long1-0/+54
Created futimens.c and utimensat.c to add support for the POSIX methods futimens() and utimensat(). utime() and utimes() are considered obsolote by POSIX, but RTEMS will continue to support them. Closes #4396
2021-05-27bsps/aarch64: Add MMU driver to relax alignmentKinsey Moore1-16/+50
Currently, the AArch64 BSPs have a hard time running on real hardware without building the toolchain and the bsps with -mstrict-align in multiple places. Configuring the MMU on these chips allows for unaligned memory accesses for non-device memory which avoids requiring strict alignment in the toolchain and in the BSPs themselves. In writing this driver, it was found that the synchronous exception handling code needed to be rewritten since it relied on clearing SCTLR_EL1 to avoid thread stack misalignments in RTEMS_DEBUG mode. This is now avoided by exactly preserving thread mode stack and flags and the new implementation is compatible with the draft information provided on the mailing list covering the Exception Management API.
2021-05-27bsps/aarch64: Break out system registersKinsey Moore1-0/+9985
Break out system register definitions and accessors so that they're usable by other parts of RTEMS.
2021-05-26score/aarch64: Align context validation frameKinsey Moore1-11/+18
Ensure the stack remains aligned by keeping the context frame at a multiple of 16 bytes. This avoids stack alignment exceptions which occur when the stack pointer is not 16 byte aligned.
2021-05-26score: Direct thread dispatch in a self restartSebastian Huber1-5/+11
Commit 73ebf9a27ed5cd0fd3e0dc0da98345d7faa610a2 accidentally removed the direct thread dispatch in a self thread restart. In case of a self restart (always in task context) the directive shall not return. If this is not possible due to a bad thread dispatch disable level, then a fatal error shall occur. Update #4412.
2021-05-26score: Fix _Thread_Cancel()Sebastian Huber1-26/+22
The _Thread_Cancel() (in contrast to _Thread_Restart() which used a similar code block) may have produced ready threads with an active timer in case the thread to cancel had its thread life protection enabled. The problem was this code block: Priority_Control priority; _Thread_Add_life_change_request( the_thread ); if ( _Thread_Is_life_change_allowed( previous ) ) { _Thread_State_release( the_thread, &lock_context ); _Thread_queue_Extract_with_proxy( the_thread ); _Thread_Timer_remove( the_thread ); } else { _Thread_Clear_state_locked( the_thread, STATES_SUSPENDED ); _Thread_State_release( the_thread, &lock_context ); } priority = _Thread_Get_priority( executing ); _Thread_Raise_real_priority( the_thread, priority ); _Thread_Remove_life_change_request( the_thread ); The life change request should only be added/removed if a life change is allowed (see _Thread_Restart()). Add _Thread_Try_life_change_request() and use it in _Thread_Cancel() and _Thread_Restart(). Close #4435.
2021-05-26score: Simplify calling _Thread_Exit()Sebastian Huber1-5/+13
Move common code into _Thread_Exit(). This enables a tail call optimization in most cases.
2021-05-18score: Simplify thread queue timeout handlingSebastian Huber2-4/+12
Add Thread_queue_Context::timeout_absolute to specify an absolute or relative timeout. This avoid having to get the current time twice for timeouts relative to the current time. It moves also functionality to common code.
2021-05-18score: Add _CPU_Context_switch_no_return()Sebastian Huber9-5/+56
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.
2021-05-17score: Move _Thread_queue_Queue_get_name_and_id()Sebastian Huber2-36/+76
Move this diagnostic function to a separate file since it does not provide a core function of the system. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
2021-05-17score: Add and use _Per_CPU_Is_ISR_in_progress()Sebastian Huber1-1/+1
Add _Per_CPU_Is_ISR_in_progress() as an optimized version of _ISR_Is_in_progress().
2021-05-17score: Improve parameters in _Thread_Change_life()Sebastian Huber1-12/+17
2021-05-14rtems: Fix task restart within interrupt contextSebastian Huber1-53/+15
rtems_task_restart() may be called from within interrupt context. So checking only that the thread to restart is equal to the executing thread is insufficient to determine a self restart. We have to also check that no ISR is in progress. Merge _Thread_Restart_other() and _Thread_Restart_self() into one _Thread_Restart() since they share a lot of common code. Close #4412.
2021-05-14rtems: Always set the real priority during restartSebastian Huber1-26/+32
Unconditionally set the real priority of the task to its initial priority during a task restart. Close #4411.
2021-05-14score: Return status in _Thread_Restart_other()Sebastian Huber1-3/+3
This simplifies rtems_task_restart().
2021-05-11rtems: Use _Objects_Free_nothing() for msg queuesSebastian Huber1-5/+3
Use _Objects_Free_nothing() for rtems_message_queue_construct() to avoid unreachable code in _CORE_message_queue_Close() in case only user-provided message buffers are used. Update #4007.
2021-05-11score: Rename _Stack_Free_nothing()Sebastian Huber1-5/+5
Rename _Stack_Free_nothing() in _Objects_Free_nothing() to make it reusable for the message queue buffers. Update #4007.
2021-05-04score: Make _Once_Lock() and _Once_Unlock() staticSebastian Huber1-16/+16
These two functions are no longer used outside of _Once().
2021-05-02score: Add _Thread_Dispatch_direct_no_return()Sebastian Huber2-2/+5
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 _Thread_Dispatch_direct() to avoid generation of dead code.
2021-04-30Use alias for rtems_task_self() and pthread_self()Sebastian Huber1-0/+53
This may reduce the code size a bit.
2021-04-29objectextendinformation.c: Ensure information->object_blocks is not NULLRyan Long1-0/+11
CID 26033: Dereference after null check in _Objects_Extend_information(). Closes #4326
2021-04-27Return status code for _Thread_Start()Sebastian Huber1-3/+3
This avoids having conditional statements to get the API-specific status code.
2021-04-27Return status code for _Scheduler_Set_affinity()Sebastian Huber4-18/+18
This avoids having conditional statements to get the API-specific status code.
2021-04-27rtems: Change rtems_task_get_affinity() statusSebastian Huber1-1/+1
In case the processor set is not large enough to contain the processor affinity set of the task return RTEMS_INVALID_SIZE instead of RTEMS_INVALID_NUMBER. This is more in line with other directives since the issue is related to the size of an object. Close #4393.
2021-04-27Return status code for _Scheduler_Get_affinity()Sebastian Huber1-2/+7
This avoids having conditional statements to get the API-specific status code.
2021-04-20Remove superfluous <rtems/score/wkspace.h> includesSebastian Huber15-15/+0
2021-04-20score: Remove unused _Thread_queue_Dequeue()Sebastian Huber1-32/+0
Last use was removed by: commit 54550e048d3a49435912797d2024f80671e93267 Author: Sebastian Huber <sebastian.huber@embedded-brains.de> Date: Fri May 13 08:16:30 2016 +0200 posix: Rework pthread_join() Rework pthread_join() to use _Thread_Join().
2021-04-19cpukit/aarch64: Restore ISR cookie bit maskKinsey Moore1-13/+13
The _CPU_ISR_Is_enabled() function operates on ISR cookies and so must mask off the appropriate status bits. This also fixes the naming of the parameters of the _CPU_ISR_* functions to indicate use of ISR cookies instead of interrupt enable/disable levels.
2021-04-07score: Replace Objects_Name_or_id_lookup_errorsSebastian Huber3-17/+17
Replace Objects_Name_or_id_lookup_errors with new Status_Control codes. Get rid of the _Status_Object_name_errors_to_status lookup table.
2021-04-06cpukit/aarch64: Add ESR register decodingAlex White1-10/+125
2021-03-27score: Add an assert to _Workspace_Free()Sebastian Huber1-1/+5
2021-03-27score: Fix task stack initializationSebastian Huber1-1/+0
Do not adjust the stack area begin address since this may confuse the stack allocator and result in failed stack frees. Account for the alignment overhead in the stack space size estimate. Check that the stack size is in the expected interval.