summaryrefslogtreecommitdiff
path: root/bsps/shared (follow)
AgeCommit message (Collapse)Author
2020-03-13bsps: Remove legacy interrupt API from defaultSebastian Huber
This fixes linker issues on the powerpc/virtex4 and powerpc/virtex5 BSPs.
2020-02-25bsps/clock: Use _SMP_Get_processor_maximum()Sebastian Huber
Use a specific test to enable the fast idle mode instead of using the rtems_configuration_is_smp_enabled() workaround. Update #3876.
2020-02-20drvmgr: Fix determination of prefix in grlib uart driverDennis Pfau
drvmgr_get_dev_prefix returns 0 if a prefix was found. Therefore the if condition needs to check for 0, i.e. DRVMGR_OK.
2020-02-16libchip/ns16550: Allow user calculate baud divisorG S Niteesh
This patch will allow the user to pass a function to calculate the baud divisor. This will allow for more flexibility, since for some BSPs like raspberrypi, the calculation of baud divisor is different from what is in the current driver.
2020-02-06config: Add CONFIGURE_DIRTY_MEMORYSebastian Huber
Replace the BSP_DIRTY_MEMORY BSP option with a CONFIGURE_DIRTY_MEMORY configuration option. Update #3843.
2020-02-04Use RTEMS_SYSINIT_ORDER_LAST_BUT_5Sebastian Huber
Use RTEMS_SYSINIT_ORDER_LAST_BUT_5 instead of RTEMS_SYSINIT_ORDER_LAST to allow applications and support functions to place system initialization handlers behind the standard handlers. Update #3838.
2020-02-04bsps: Rework work area initializationSebastian Huber
The work area initialization was done by the BSP through bsp_work_area_initialize(). This approach predated the system initialization through the system initialization linker set. The workspace and C program heap were unconditionally initialized. The aim is to support RTEMS application configurations which do not need the workspace and C program heap. In these configurations, the workspace and C prgram heap should not get initialized. Change all bsp_work_area_initialize() to implement _Memory_Get() instead. Move the dirty memory, sbrk(), per-CPU data, workspace, and malloc() heap initialization into separate system initialization steps. This makes it also easier to test the individual initialization steps. This change adds a dependency to _Heap_Extend() to all BSPs. This dependency will be removed in a follow up change. Update #3838.
2020-01-03bsps/irq: fix resource leak in irq-server.cGedare Bloom
Resource leak identified by Coverity (CID 1456675). The value of instances is leaked in case some but not all irq servers are created. It should be stored in bsp_interrupt_server_instances.
2019-12-13rtems: Add and use rtems_object_get_local_node()Sebastian Huber
Update #3841.
2019-12-11mpci: Simplify MPCI configurationSebastian Huber
Use watchdog for shared memory driver instead of a Classic API Timer.
2019-12-11clock: Simplify driver initializationSebastian Huber
Use a system initialization handler instead of a legacy IO driver. Update #3834.
2019-09-20rtems: Add rtems_interrupt_server_entry_move()Sebastian Huber
The use case for this function is the libbsd. In FreeBSD, the interrupt setup and binding to a processor is done in two steps. Message based interrupts like PCIe MSI and MSI-X interrupts can be implemented through interrupt server entries. They are setup at the default interrupt server and may optionally move to an interrupt server bound to a specific processor.
2019-09-06record: Allow tracing of ISR disable/enableSebastian Huber
Directly use the CPU port API in boot_card() to allow tracing of the higher level interrupt disable/enable routines, e.g. _ISR_Local_disable() and _ISR_Local_enable(). Currently, there is no configuration option to enable this. Below is a patch. It may be used to investigate some nasty low level bugs in the system. Update #3665. diff --git a/cpukit/include/rtems/score/isrlevel.h b/cpukit/include/rtems/score/isrlevel.h index c42451d010..46d361ddc2 100644 --- a/cpukit/include/rtems/score/isrlevel.h +++ b/cpukit/include/rtems/score/isrlevel.h @@ -40,6 +40,10 @@ extern "C" { */ typedef uint32_t ISR_Level; +uint32_t rtems_record_interrupt_disable( void ); + +void rtems_record_interrupt_enable( uint32_t level ); + /** * @brief Disables interrupts on this processor. * @@ -56,8 +60,7 @@ typedef uint32_t ISR_Level; */ #define _ISR_Local_disable( _level ) \ do { \ - _CPU_ISR_Disable( _level ); \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ + _level = rtems_record_interrupt_disable(); \ } while (0) /** @@ -72,10 +75,7 @@ typedef uint32_t ISR_Level; * _ISR_Local_disable(). */ #define _ISR_Local_enable( _level ) \ - do { \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ - _CPU_ISR_Enable( _level ); \ - } while (0) + rtems_record_interrupt_enable( _level ) /** * @brief Temporarily enables interrupts on this processor. @@ -98,9 +98,8 @@ typedef uint32_t ISR_Level; */ #define _ISR_Local_flash( _level ) \ do { \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ - _CPU_ISR_Flash( _level ); \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ + rtems_record_interrupt_enable( _level ); \ + _level = rtems_record_interrupt_disable(); \ } while (0) /
2019-07-30Add and use THREAD_DEFAULT_MAXIMUM_NAME_SIZESebastian Huber
2019-05-27bsps: Fix warnings in grethSebastian Huber
2019-05-20score: Simplify _SMP_Multicast_action()Sebastian Huber
Move resposibility to disable thread dispatching to the caller of _SMP_Multicast_action(). Using an interrupt disable for this purpose is questionable.
2019-05-20score: Add _SMP_Broadcast_action()Sebastian Huber
2019-05-16bsps: Always build generic interrupt supportSebastian Huber
This makes it possible to write tests for the generic interrupt controller support. Update #3269.
2019-04-12score: Use processor mask in _SMP_Multicast_actionSebastian Huber
Processor_mask is the internal data type to deal with processor sets.
2019-04-11score: Rename _SMP_Get_processor_count()Sebastian Huber
Rename _SMP_Get_processor_count() in _SMP_Get_processor_maximum() to be in line with the API level rtems_scheduler_get_processor_maximum(). Update #3732.
2019-04-09rtems: Add rtems_scheduler_get_processor_maximum()Sebastian Huber
Add rtems_scheduler_get_processor_maximum() as a replacement for rtems_get_processor_count(). The rtems_get_processor_count() is a bit orphaned. Adopt it by the Scheduler Manager. The count is also misleading, since the processor set may have gaps and the actual count of online processors may be less than the value returned by rtems_get_processor_count(). Update #3732.
2019-03-14z85c30.c: Do not process 0 baud and return an error (CID 1399713)Joel Sherrill
2019-03-14Add rtems_board_support_package()Sebastian Huber
2019-03-08bsps: Adjust shared Doxygen groupsSebastian Huber
Update #3706.
2019-03-04bsps: Adjust architecture Doxygen groupsSebastian Huber
- Use CamelCase as it is not used in our C code. Enables simple search and replace. - Prefix with "RTEMS" to aid deployment and integration. It aids searching and sorting. Update #3706.
2019-02-28Remove explicit file names from @fileSebastian Huber
This makes the @file documentation independent of the actual file name. Update #3707.
2019-02-07bsps/irq: Fix interrupt server init (SMP)Sebastian Huber
2019-01-22grlib: make memory coherency cpu-independentJiri Gaisler
Update #3678.
2019-01-22grlib: use cpu-independent routines for uncached accessJiri Gaisler
Update #3678.
2019-01-22grlib: use rtems_interrupt_handler_install()Jiri Gaisler
Update #3678.
2019-01-22grlib: make apbuart driver independent of bspJiri Gaisler
Update #3678.
2019-01-22grlib: Move source filesSebastian Huber
Update #3678.
2018-12-21bsps: Add CPU_CACHE_SUPPORT_PROVIDES_DISABLE_DATASebastian Huber
Update #3667.
2018-12-21bsps: Update cache manager documentationSebastian Huber
Update #3667.
2018-12-21bsps: Remove superfluous comments in cacheimpl.hSebastian Huber
Remove superfluous blank lines. Update #3667.
2018-12-07Simplify _CPU_Counter_difference()Sebastian Huber
In order to simplify the use of CPU counter values it is beneficial to have monotonic increasing values within the range of the CPU counter ticks data type, e.g. 32-bit unsigned integer. This eases the use of CPU counter timestamps in external tools which do not know the details of the CPU counter hardware. The CPU counter is the fastest way to get a time on an RTEMS system. Such a CPU counter may be also used as the timecounter. Use it on SPARC for this purpose to simplify the clock drivers. Update #3456.
2018-11-28bsps/sparc: Fix SMP buildSebastian Huber
Update #3622.
2018-11-26Remove rtems_cache_*_processor_set() functionsSebastian Huber
The following rtems_cache_*_processor_set() cache manager API functions are exotic, complex, very hard to use correctly, not used in the RTEMS code base, and apparently unused by applications. Close #3622.
2018-11-12bsps/irq: Use rtems_malloc()Sebastian Huber
2018-11-09bsps: Include missing header filesSebastian Huber
Update #3598.
2018-11-09bsp/beatnik: Fix warningsSebastian Huber
2018-10-17serial/ns16550: Fix precision clock synthesizerSebastian Huber
The precision clock synthesizer support broke the driver on the QorIQ P1020. On this device the Alternate Function Register is accessed with DLAB == 1 instead of the FIFO Control Register (FCR). Restructure the code to account for this.
2018-10-02Use rtems_task_exit()Sebastian Huber
Update #3530. Update #3533.
2018-09-10network: Use kernel/user space header filesSebastian Huber
Add and use <machine/rtems-bsd-kernel-space.h> and <machine/rtems-bsd-user-space.h> similar to the libbsd to avoid command line defines and defines scattered throught the code base. Simplify cpukit/libnetworking/Makefile.am. Update #3375.
2018-09-03bsps: BSP_INTERRUPT_STACK_AT_WORK_AREA_BEGINSebastian Huber
Remove the BSP_INTERRUPT_STACK_AT_WORK_AREA_BEGIN hack. The interrupt stacks are now allocated by the linker. Update #3459.
2018-08-07libchip/ata: Use rtems_blkdev_create()Sebastian Huber
Update #3358.
2018-08-03bsps: Fix the generic IRQ supportSebastian Huber
The genmcf548x partly uses is own implementation of the interrupt extension API for libbsd support. This patch is a part of the BSP source reorganization. Update #3285.
2018-08-01serial/ns16550: Precision clock synthesizerSebastian Huber
Set the FIFO control register while DLAB == 1 in the line control register. At least on the QorIQ T4240 the driver still works with the re-ordered FIFO control register access.
2018-08-01serial/ns16550: Use standard register namesSebastian Huber
Use the standard register names for the divisor latches. This makes it easier to compare the code with other driver implementations.
2018-06-27Remove Clock_driver_support_shutdown_hardware()Sebastian Huber
The aim of this clock driver hook was to stop clock tick interrupts at some late point in the exit() procedure. The use of atexit() pulls in malloc() which pulls in errno. It is incompatible with the intention of the CONFIGURE_DISABLE_NEWLIB_REENTRANCY configuration option. The exit() function must be called from thread context, so accompanied clock tick interrupts should cause no harm. On the contrary, someone may assume a normal operating system operation, e.g. working timeouts. Remove the Clock_driver_support_shutdown_hardware() clock driver hook. Close #3436.