summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/shared (follow)
Commit message (Collapse)AuthorAgeFilesLines
* bsps/arm: Add Cortex-M DWT CPU counterSebastian Huber2016-11-241-0/+55
|
* arm: Use TPIDRPRW for current per-CPU controlSebastian Huber2016-11-181-5/+13
| | | | | | Use the previously unused TPIDRPRW register to get the per-CPU control of the current processor. This avoids instructions in GET_SELF_CPU_CONTROL which are not available in Thumb mode.
* bsps/arm: Export bsp_start_hook_0_done symbol from ARM start.S.Pavel Pisa2016-09-221-0/+1
| | | | | | | | The symbol can be used by bsp_start_hook_0 when complete RAM memory is initialization and overwritten during BSP self-test. The test overwrites even memory used to store return address / link register and regular resturn from bsp_start_hook_0 is not possible then.
* bsps/arm: remove lock in arm_cp15_set_translation_table_entries().Pavel Pisa2016-09-071-9/+1
| | | | | | | | | | | Protection by rtems_interrupt_disable() is incompatible with SMP build. Actual page table entries manipulation function does not need locking and disabling cache and can be run concurrently even on multiple CPUs as long as changes do not modify same region. If the function is called from more threads/CPUs to modify same region with different mapping options concurrently then there is problem at another level of virtual address space management and has to be solved by mutex or other locking at that level.
* libbsp/arm: Add the TTB table to the default MMU set up as read/write.Chris Johns2016-08-151-0/+4
| | | | | | | This lets the table be changed at runtime for dynamic loading and debugger support. Closes #2775.
* bsps/arm: Clear pending exceptions for ARMv7-MAlexander Krutwig2016-07-261-0/+2
|
* arm/bsps: CP15 and basic cache support entire cache clean for more ↵Pavel Pisa2016-07-202-4/+24
| | | | | | | | | | | | | | | | | architecture variants now. Next cache operations should work on most of cores now rtems_cache_flush_entire_data() rtems_cache_invalidate_entire_data() rtems_cache_invalidate_entire_instruction() Instruction cache invalidate works on the first level for now only. Data cacache operations are extended to ensure flush/invalidate on all cache levels. The CP15 arm_cp15_data_cache_clean_all_levels() function extended to continue through unified levels too (ctype = 4).
* bsps/arm: do not disable MMU during translation table management operations.Pavel Pisa2016-07-201-8/+42
| | | | | | | | | | | | | | | | | | | | Disabling MMU requires complex cache flushing and invalidation operations. There is almost no way how to do that right on SMP system without stopping all other CPUs. On the other hand, there is documented sequence of operations which should be used according to ARM manual and it guarantees even distribution of maintenance operations to other cores for last generation of Cortex-A cores with multiprocessor extension. This change could require addition of appropriate entry to arm_cp15_start_mmu_config_table for some BSPs to ensure that MMU table stays accessible after MMU is enabled { .begin = (uint32_t) bsp_translation_table_base, .end = (uint32_t) bsp_translation_table_base + 0x4000, .flags = ARMV7_MMU_DATA_READ_WRITE_CACHED }
* Misc: Spell length correctlyJoel Sherrill2016-07-122-2/+2
|
* bsps/arm: Fix basic cache support for SMPSebastian Huber2016-07-051-8/+8
|
* bsps/arm: basic on core cache support changed to use l1 functions.Pavel Pisa2016-07-042-45/+69
| | | | | | | | | | | | | | The basic data and instruction rage functions should be compatible for all ARMv4,5,6,7 functions. On the other hand, some functions are not portable, for example arm_cp15_data_cache_test_and_clean() and arm_cp15_data_cache_invalidate() for all versions and there has to be specialized version for newer cores. arm_cache_l1_properties_for_level uses CCSIDR which is not present on older chips. Actual version is only experimental, needs more changes and problem has been found on RPi1 with dlopen so there seems to be real problem.
* bsps/arm: Change code to explicit selection of cache implementation for ARM ↵Pavel Pisa2016-07-041-0/+134
| | | | | | | | | | | | | | | | | | | | | | | BSPs. The original ARM architecture wide cache_.h is changed to dummy version for targets not implementing/enablig cache at all. The ARM targets equipped by cache should include appropriate implementation. Next options are available for now c/src/lib/libbsp/arm/shared/armv467ar-basic-cache/cache_.h basic ARM cache integrated on the CPU core directly which requires only CP15 oparations c/src/lib/libbsp/arm/shared/arm-l2c-310/cache_.h support for case where ARM L2C-310 cache controller is used. It is accessible as mmaped peripheral. c/src/lib/libbsp/arm/shared/armv7m/include/cache_.h Cortex-M specific cache support
* bsp/arm: Report correct maximal cache line length for ARM Cortex-A + L2C-310.Pavel Pisa2016-07-041-0/+4
|
* bsps/arm: Support recent bootloaders starting kernel in HYP modePavel Pisa2016-07-045-7/+175
| | | | | | | | | | | | | | | | | | | When HYP mode is detected at startup then setup HYP mode vectors table (for future extensions) clean exceptions switching to HYP mode and switch CPU to ARM SVC mode. BSPs which want to use this support need to include next option in their configure.ac RTEMS_BSPOPTS_SET([BSP_START_IN_HYP_SUPPORT],[*],[1]) RTEMS_BSPOPTS_HELP([BSP_START_IN_HYP_SUPPORT], [Support start of BSP in ARM HYP mode]) AM_CONDITIONAL(BSP_START_IN_HYP_SUPPORT,test "$BSP_START_IN_HYP_SUPPORT" = "1") and need to include next lines in corresponding Makefile.am if BSP_START_IN_HYP_SUPPORT libbsp_a_SOURCES += ../shared/startup/bsp-start-in-hyp-support.S endif
* score: Fix SMP message handlingSebastian Huber2016-06-291-1/+0
| | | | | | | | According to the C11 standard only atomic read-modify-write operations guarantee that the last value written in modification order is read, see "7.17.3 Order and consistency". Thus we must use a read-modify-write in _SMP_Inter_processor_interrupt_handler() to make sure we read an up-to-date message.
* bsps: Include missing <rtems/bspIo.h>Sebastian Huber2016-06-241-0/+2
|
* bsps: Add CLOCK_DRIVER_USE_ONLY_BOOT_PROCESSORSebastian Huber2016-06-141-2/+2
| | | | | | | | | Add CLOCK_DRIVER_USE_ONLY_BOOT_PROCESSOR clock driver option. If defined, then do the clock tick processing on the boot processor on behalf of all other processors. Currently, this is intended as a workaround for a Qemu shortcoming on ARM. Update #2737.
* bsps: Add defines for some linker subsectionsSebastian Huber2016-05-311-1/+7
| | | | The GNU ld sort by name or alignment needs distinct input sections.
* bsps: Sort some sections first by alignmentSebastian Huber2016-05-311-3/+3
| | | | | This helps to avoid alignment padding and thus may reduce some memory waste.
* score: Distribute clock tick to all online CPUsSebastian Huber2016-03-043-9/+82
| | | | Update #2554.
* arm: Use DWT CYCCNT for timecounter if availableSebastian Huber2016-01-211-15/+47
|
* bsp/atsam: NewSebastian Huber2016-01-192-0/+183
| | | | Close #2529.
* bsps/arm: Copy vector table only if necessarySebastian Huber2016-01-191-5/+7
|
* bsps/arm: Use common ARMv7-M bsp_reset()Sebastian Huber2016-01-191-0/+38
|
* bsps/arm: Update CMSIS/IncludeSebastian Huber2016-01-1917-0/+22144
| | | | Remove duplicate and outdated files.
* score: Fix simple timecounter supportSebastian Huber2016-01-191-14/+37
| | | | Update #2502.
* bsps/arm: Fix broken switch statementSebastian Huber2016-01-181-3/+4
| | | | Update #2530.
* bsps: Generalize .nocacheheap to .nocachenoloadSebastian Huber2015-10-283-3/+13
| | | | Add ability to place data in a non-loadable cache-inhibited area.
* basdefs.h: Add and use RTEMS_UNUSEDSebastian Huber2015-10-261-3/+3
|
* bsps/arm: Add missing translation table entrySebastian Huber2015-10-141-0/+4
| | | | See also bc820946793426dbdc450dc8bba4a15d01006182.
* bsps: Add .nocacheheap sectionSebastian Huber2015-10-082-11/+14
| | | | | This avoids consumption of a loadable address space for the nocache heap.
* SMP: Fix and optimize thread dispatchingSebastian Huber2015-09-281-1/+2
| | | | | | | | According to the C11 and C++11 memory models only a read-modify-write operation guarantees that we read the last value written in modification order. Avoid the sequential consistent thread fence and instead use the inter-processor interrupt to set the thread dispatch necessary indicator.
* bsps/arm: Fix function definitionSebastian Huber2015-09-041-1/+1
| | | | Close #2385.
* bsps/arm: Do not use __ARM_ARCH_7A__Sebastian Huber2015-07-311-28/+16
| | | | | This would lead to link-time errors in case less specialized compiler machine options are used, e.g. to run the GCC test suite.
* bsps/arm: Update due to API changesSebastian Huber2015-07-211-4/+4
|
* bsps/arm: Update due to API changesSebastian Huber2015-06-261-2/+2
|
* arm/shared/lpc/clock/lpc-clock-config.c: Remove unused variable warningJoel Sherrill2015-05-211-1/+0
|
* bsps: Convert clock drivers to use a timecounterAlexander Krutwig2015-05-203-75/+75
| | | | Update #2271.
* ARM: Add BSP_START_NEEDS_REGISTER_INITIALIZATIONMartin Galvan2015-02-272-0/+133
| | | | | | | | | | | | | This patch adds the macro BSP_START_NEEDS_REGISTER_INITIALIZATION and three hooks for BSP-specific register init code to arm/shared/start.S. Said hooks are bsp_start_init_registers_core (intended for initializing the ARM core registers), bsp_start_init_registers_banked_fiq (for the FIQ mode banked registers) and bsp_start_init_registers_vfp (for the FPU registers). BSP_START_NEEDS_REGISTER_INITIALIZATION would be defined in a BSP's configure.ac (so that it appears in its bspopts.h). This patch also adds the register init code required by the TMS570. We've tested it with the tms570ls3137_hdk.cfg config and it works fine.
* ARM: Support VFP-D16Martin Galvan2015-02-201-3/+5
| | | | | | | | | This patch allows the existing FPU code to support both VFP-D16 and VFP-D32. According to ARM, writes to D32DIS are ignored for D16 so there's no need to enclose the bic instruction with an #ifdef. We tested it on a TMS570LS3137 using TI initialization code and it works fine. Signed-off by: Martin Galvan <martin.galvan@tallertechnologies.com>
* score: Add _CPU_SMP_Prepare_start_multitasking()Sebastian Huber2015-02-171-0/+5
| | | | Update #2268.
* bsps/arm: Add .nocache sectionSebastian Huber2014-11-273-1/+30
| | | | | This section can be use to provide a cache coherent memory area via rtems_cache_coherent_add_area().
* bsps/arm: L2C 310 avoid infinite loopsSebastian Huber2014-11-251-0/+8
|
* bsps/arm: Enable L2C for Cortex-A9 MPCore BSPsSebastian Huber2014-11-201-9/+9
|
* bsps/arm: L2C 310 drop exclusive cache supportSebastian Huber2014-11-201-71/+50
| | | | Optimize locking.
* bsps/arm: L1 cache support changesSebastian Huber2014-11-201-16/+21
|
* bsps/arm: L2C 310 compile-time errata 588369Sebastian Huber2014-11-201-49/+19
|
* bsps/arm: L2C 310 compile-time errata 753970Sebastian Huber2014-11-201-71/+43
|
* bsps/arm: L2C 310 exclusive config is fatalSebastian Huber2014-11-201-7/+16
|
* bsps/arm: L2C 310 use l2c_310_* prefix throughoutSebastian Huber2014-11-201-99/+99
|