summaryrefslogtreecommitdiffstats
path: root/spec/build/cpukit (follow)
Commit message (Collapse)AuthorAgeFilesLines
* aarch64: Break out MMU definitionsKinsey Moore2021-11-011-0/+1
| | | | | | This moves the AArch64 MMU memory type definitions into cpukit for use by libdebugger since remapping of memory is required to insert software breakpoints.
* cpukit: Add signal mapping supportKinsey Moore2021-10-292-0/+18
| | | | | | This adds a confdef option allowing an application to request mapping machine exceptions to POSIX signals. This is required for some languages such as Ada.
* cpukit/aarch64: Add exception extensions supportKinsey Moore2021-10-291-0/+1
| | | | | This adds the function implementations necessary to add exception extensions support to AArch64.
* cpukit: Add exception extensionsKinsey Moore2021-10-292-0/+20
| | | | | | | | This adds the set of functions necessary to allow more generic handling of machine exceptions. This initial patch offers the ability to manipulate a CPU_Exception_frame and resume execution using that exception information with or without thread dispatch. These functions are gated behind the RTEMS_EXCEPTION_EXTENSIONS configuration option.
* rtems: Fix rate monotonic statisticsSebastian Huber2021-10-251-0/+1
| | | | | | | | | | | | | | | The rate monotonic period statistics were affected by rtems_cpu_usage_reset(). The logic to detect and work around a CPU usage reset was broken. The Thread_Contol::cpu_time_used is changed to contain the processor time used throughout the entire lifetime of the thread. The new member Thread_Contol::cpu_time_used_at_last_reset is added to contain the processor time used at the time of the last reset through rtems_cpu_usage_reset(). This decouples the resets of the CPU usage and the rate monotonic period statistics. Update #4528.
* spec/libdebugger: Only enable for supported architecturesChris Johns2021-10-223-1/+19
| | | | Closes #4533
* microblaze: Rework for RTEMS 6Alex White2021-10-132-0/+31
| | | | | This reworks the existing MicroBlaze architecture port and BSP to achieve basic functionality using the latest RTEMS APIs.
* Add support for IDLE Thread stack allocatorJoel Sherrill2021-10-111-0/+1
| | | | | | | | Add a stack allocator hook specifically for allocation of IDLE thread stacks. This allows the user to decide if IDLE thread stacks are statically allocated or handled by the same custom allocator mechanism as other thread stacks. Closes #4524.
* cpukit: Add AArch64 SMP SupportKinsey Moore2021-09-211-0/+4
| | | | This adds SMP support for AArch64 in cpukit and for the ZynqMP BSPs.
* score: Remove unused default scheduler opsSebastian Huber2021-09-211-1/+0
| | | | | | | | | | If SMP support is enabled and the system has exactly one processor, then it may use an uniprocessor scheduler. The ask for help, reconsider help request, and withdraw node operations can be NULL in this case, since they are only used if a thread has at least one helping scheduler node. At least two schedulers are required to get a helping node and each scheduler involved must own at least one processor. This is not possible on a system with exactly one processor.
* score: Provide two thread pin/unpin defaultsSebastian Huber2021-09-211-0/+1
| | | | | | | | | | | | | | The uniprocessor schedulers do not support systems with more than more processors. So they rivially support thread pinning and thus the SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED cannot happen. Add a second default implementation for SMP schedulers which do not support thread pinning. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: Split up rbtreenext.cSebastian Huber2021-09-061-0/+3
| | | | | | | | | | Split up rbtreenext.c since only _RBTree_Minimum() is used by the operating system core services (thread queues and the EDF scheduler). Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: Add _TOD_Is_valid_new_time_of_day()Sebastian Huber2021-09-061-0/+1
| | | | | | Move the TOD validation to the callers of _TOD_Set(). This avoids dead code in case only rtems_clock_set() is used in an application because rtems_clock_set() always calls _TOD_Set() with a valid time of day.
* score: Remove TOD_TICKS_PER_SECOND_method()Sebastian Huber2021-09-061-1/+0
| | | | Use _Watchdog_Ticks_per_second instead.
* score: Move _Thread_Dispatch()Sebastian Huber2021-09-031-0/+1
| | | | | | | | | | | | The _Thread_Dispatch() function was customized over time and now the work is done by _Thread_Do_dispatch() and specialized wrappers. The plain _Thread_Dispatch() is now only used in some CPU ports. Move it to a separate file to avoid dead code in the general. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* confstr() support for RTEMSEshan dhawan2021-08-181-0/+1
| | | | | | | | Closes #3373 confstr() style update Signed-off-by: Eshan Dhawan <eshandhawan51@gmail.com>
* build: Merge default-by-family into by-variantSebastian Huber2021-08-1858-58/+0
| | | | | | | Prefix the BSP family name with "bsps/" to make it distinct to the BSP variant names. Update #4468.
* score: Split SMP multicast action moduleSebastian Huber2021-07-291-0/+3
| | | | | Split up the SMP multicast action module since the use of the SMP multicast action variants depend on the architecture and BSP.
* score: Move per-CPU jobs supportSebastian Huber2021-07-281-2/+2
| | | | Add percpujobs.c to contain the per-CPU jobs implementation.
* build: Use BSP family for optionsChris Johns2021-07-1558-0/+58
| | | | | | | - Optionally add support for 'default-by-family' to allow option to be set by a family and so all related BSPs Close #4468
* sparc: Simplify trap table initializationSebastian Huber2021-06-241-0/+1
| | | | | | | | | | | | | | | 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.
* sparc: More reliable bad trap handlingSebastian Huber2021-06-241-0/+2
| | | | | | | | | | | | | 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.
* sparc: Move ISR handler install routinesSebastian Huber2021-06-241-0/+1
| | | | | | | | 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.
* score: Move _ISR_Vector_table[] to separate fileSebastian Huber2021-06-241-0/+1
| | | | | | | | | | 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.
* score: Add PER_CPU_DATA_NEED_INITIALIZATION()Sebastian Huber2021-06-101-0/+1
| | | | | | | | | 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.
* Change filesystem utime_h handler to utimens_hRyan Long2021-05-281-2/+2
| | | | | | | Also updated licenses. Closes #4400 Updates #3899
* libcsupport: Added futimens() and utimensat()Ryan Long2021-05-281-0/+3
| | | | | | | | | | 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
* bsps/aarch64: Break out system registersKinsey Moore2021-05-271-0/+1
| | | | | Break out system register definitions and accessors so that they're usable by other parts of RTEMS.
* score: Move _Thread_queue_Queue_get_name_and_id()Sebastian Huber2021-05-171-0/+1
| | | | | | | | | | 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.
* posix: Move clock_nanosleep()Sebastian Huber2021-05-171-0/+1
| | | | | | | Move clock_nanosleep() to a separate file to avoid a dependency on errno which pulls in the Newlib reentrancy support. This is an issue since most parts which are pulled in cannot be garbage collected by the linker due to the system initialization linker set.
* score: Rename _Stack_Free_nothing()Sebastian Huber2021-05-111-1/+1
| | | | | | | Rename _Stack_Free_nothing() in _Objects_Free_nothing() to make it reusable for the message queue buffers. Update #4007.
* Use alias for rtems_task_self() and pthread_self()Sebastian Huber2021-04-301-2/+1
| | | | This may reduce the code size a bit.
* libcsupport: Move rtems_calloc()Sebastian Huber2021-04-201-0/+1
| | | | | | | | | Move rtems_calloc() since it only depends on rtems_malloc(). This may make it easier to customize the heap allocator. Change licence to BSD-2-Clause according to file history. Update #3053.
* Revert "cpukit: Remove telnetd"Vijay Kumar Banerjee2021-04-132-0/+26
| | | | This reverts commit 3299dda2454a8847c670a732f6c12ef1f2cc5dd0.
* cpukit: Remove telnetdVijay Kumar Banerjee2021-04-072-26/+0
| | | | Update #3850
* cpukit/libfs: Remove nfsclientVijay Kumar Banerjee2021-04-072-25/+0
| | | | Update #3850
* cpukit: remove pppdVijay Kumar Banerjee2021-04-073-36/+0
| | | | Update #3850
* cpukit: Move ftpfs from libnetworking to libfsVijay Kumar Banerjee2021-04-072-2/+2
| | | | Update #3850
* spec: Remove RTEMS_NETWORKING optionsVijay Kumar Banerjee2021-04-074-346/+0
| | | | Update #3850
* score: Replace Objects_Name_or_id_lookup_errorsSebastian Huber2021-04-071-1/+0
| | | | | Replace Objects_Name_or_id_lookup_errors with new Status_Control codes. Get rid of the _Status_Object_name_errors_to_status lookup table.
* leon,tn-0018: work around GRLIB-TN-0018 errataDaniel Hellstrom2021-03-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Overview ======== The errata is worked around in the kernel without requiring toolchain modifications. It is triggered the JMPL/RETT return from trap instruction sequence never generated by the compiler and. There are also other conditions that must must be true to trigger the errata, for example the instruction that the trap returns to has to be a JMPL instruction. The errata can only be triggered if certain data is corrected by ECC (inflicted by radiation), thus it can not be triggered under normal operation. For more information see: www.gaisler.com/notes Affected RTEMS target BSPs: * GR712RC * UT699 * UT700/699E The work around is enabled by defining __FIX_LEON3_TN0018 at build time. After applying the following GCC patch, GCC will set the define when compiling for an affected multilib: * GR712RC (-mcpu=leon3 -mfix-gr712rc) * UT700/UT699E (-mpcu=leon3 -mfix-ut700) * UT699 (-mcpu=leon -mfix-ut699) When building for another multilib and TN0018 is still required, it is possible to enable it on the RTEMS kernel configure line using the TARGET_CFLAGS (-D__FIX_LEON3FT_TN0018) or other by other means. The following GCC patch sets __FIX_LEON3FT_TN0018 for the affected RTEMS multilibs: --------- diff --git a/gcc/config/sparc/rtemself.h b/gcc/config/sparc/rtemself.h index 6570590..ddec98c 100644 --- a/gcc/config/sparc/rtemself.h +++ b/gcc/config/sparc/rtemself.h @@ -33,6 +33,8 @@ builtin_assert ("system=rtems"); \ if (sparc_fix_b2bst) \ builtin_define ("__FIX_LEON3FT_B2BST"); \ + if (sparc_fix_gr712rc || sparc_fix_ut700 || sparc_fix_ut699) \ + builtin_define ("__FIX_LEON3FT_TN0018"); \ } \ while (0) --------- Workaround Implementation ========================= In general there are two approaches that the workaround uses: A) avoid ECC restarting the RETT instruction B) avoid returning from trap to a JMPL instruction Where A) comes at a higher performance cost than B), so B) is used where posssible. B) can be achived for certain returns from trap handlers if trap entry is controlled by assembly, such as system calls. A) A special JMPL/RETT sequence where instruction cache is disabled temporarily to avoid RETT containing ECC errors, and reading of RETT source registers to "clean" them from incorrect ECC just before RETT is executed. B) The work around prevents JMPL after system calls (TA instruction) and modifies assembly code on return from traps jumping back to application code. Note that for some traps the trapped instruction is always re-executed and can therefore not trigger the errata, for example the SAVE instruction causing window overflow or an float instruction causing FPU disabled trap. RTEMS SPARC traps workaround implementation: NAME NOTE TRAP COMMENT * window overflow 1 - 0x05 always returns to a SAVE * window underflow 1 - 0x06 always returns to a RESTORE * interrupt traps 2 - 0x10..1f special rett sequence workaround * syscall 3 - 0x80 shutdown system - never returns * ABI flush windows 2 - 0x83 special rett sequence workaround * syscall_irqdis 4 - 0x89 * syscall_irqen 4 - 0x8A * syscall_irqdis_fp 1 - 0x8B always jumps back to FP instruction * syscall_lazy_fp_switch 5 - 0x04 A) jumps back to FP instruction, or to B) _Internal_error() starting with SAVE Notes: 1) no workaround needed because trap always returns to non-JMPL instruction 2) workaround implemented by special rett sequence 3) no workaround needed because system call never returns 4) workaround implemented by inserting NOP in system call generation. Thus fall into 1) when workaround is enabled and no trap handler fix needed. 5) trap handler branches into both 1) and returning to _Internal_error() which starts with a SAVE and besides since it shuts down the system that RETT should never be in cache (only executed once) so fix not necessary in this case. Any custom trap handlers may also have to be updated. To simplify that, helper work around assembly code in macros are available in a separate include file <libcpu/grlib-tn-0018.h>. Close #4155.
* build: Install <rtems/score/hash.h>Sebastian Huber2021-02-261-0/+1
| | | | Update #4267.
* score: Add Hash HandlerSebastian Huber2021-02-261-0/+1
| | | | Update #4267.
* rtems: Add rtems_get_build_label()Sebastian Huber2021-02-253-0/+19
| | | | Update #4269.
* build: Sort source listsSebastian Huber2021-02-2421-124/+124
| | | | Use the Python sorted() function to sort the "source" lists.
* score: Remove _CORE_barrier_Do_flush()Sebastian Huber2021-02-241-1/+0
| | | | Call _Thread_queue_Flush_critical() directly.
* rtems: Simplify signal handlingSebastian Huber2021-02-201-1/+0
| | | | | | | Remove superfluous ASR_Information::signals_posted. Move code out of trivial inline functions. Update #4244.
* libcsupport: Add sbrk greedy support to consume all sbrk memoryChris Johns2021-02-101-0/+1
| | | | | | | | | - Move the heap sbrk code into a separate routnine. - Update heap and workspace greedy allocators to use the common sbrk greedy support. Closes #3982
* score: Make FIFO thread queue ops publicSebastian Huber2021-02-061-0/+1
| | | | Update #4230.
* nios2: Allow ISR nesting in dispatch variantSebastian Huber2021-02-011-1/+0
| | | | | | Rename _Nios2_ISR_Dispatch_with_shadow_non_preemptive() in _Nios2_ISR_Dispatch_with_shadow_register_set(). Remove _Nios2_ISR_Dispatch_with_shadow_preemptive().