summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/shared (follow)
Commit message (Collapse)AuthorAgeFilesLines
* bsps/arm: Export bsp_start_hook_0_done symbol from ARM start.S.Pavel Pisa2016-10-021-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: Support recent bootloaders starting kernel in HYP modePavel Pisa2016-10-025-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 Updates #2783
* libbsp/arm: Add the TTB table to the default MMU set up as read/write.Chris Johns2016-10-021-0/+4
| | | | | | | This lets the table be changed at runtime for dynamic loading and debugger support. Closes #2775.
* bsps/arm: Fix basic cache support for SMPSebastian Huber2016-10-021-8/+8
| | | | | Updates #2782 Updates #2783
* bsps/arm: remove lock in arm_cp15_set_translation_table_entries().Pavel Pisa2016-10-021-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. Updates #2782 Updates #2783
* arm/bsps: CP15 and basic cache support entire cache clean for more ↵Pavel Pisa2016-10-022-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). Updates #2782 Updates #2783
* bsps/arm: do not disable MMU during translation table management operations.Pavel Pisa2016-10-021-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 } Updates #2782 Updates #2783
* bsps/arm: basic on core cache support changed to use l1 functions.Pavel Pisa2016-10-022-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. Updates #2783 Updates #2782
* bsps/arm: Change code to explicit selection of cache implementation for ARM ↵Pavel Pisa2016-10-021-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 Updates #2782 Updates #2783
* bsp/arm: Report correct maximal cache line length for ARM Cortex-A + L2C-310.Pavel Pisa2016-10-021-0/+4
| | | | | Updates #2782 Updates #2783
* score: Fix simple timecounter supportSebastian Huber2016-01-271-14/+37
| | | | Close #2502.
* bsps/arm: Fix broken switch statementSebastian Huber2016-01-181-4/+5
| | | | Close #2530.
* 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
|
* bsps/arm: L2C 310 use L2C_310_* prefix throughoutSebastian Huber2014-11-201-232/+232
|
* bsps/arm: L2C 310 add compile time checksSebastian Huber2014-11-201-81/+68
| | | | Simplify initialization. Replace some assert() with fatal errors.
* bsps/arm: L2C 310 delete invalid linkSebastian Huber2014-11-201-2/+0
|
* bsps/arm: L2C 310 simplify and remove white spaceSebastian Huber2014-11-201-292/+177
|
* bsps/arm: L2C 310 rename BSP_ARM_L2CC_BASESebastian Huber2014-11-201-26/+26
| | | | Rename BSP_ARM_L2CC_BASE to BSP_ARM_L2C_310_BASE.
* bsps/arm: Adjust stacks for ARMv4Sebastian Huber2014-11-202-19/+7
| | | | | | | | Reduce non-IRQ stacks to size zero. All non-IRQ stacks overlap now the IRQ stack. This is all right since the SVC stack is used only during startup and here interrupts are disabled. The other exception stacks lead to a system termination by default, so we can here also use the IRQ stack since interrupts are disabled on exception entry.
* ARM removed shared/abort from several ARM BSPsAlan Cudmore2014-11-203-50/+55
|
* bsps/arm: Convert PL011 and PL050 console driversSebastian Huber2014-10-144-110/+98
| | | | Use Termios device API.
* bsps/arm: Move abort stackSebastian Huber2014-10-131-4/+4
| | | | | Move abort stack above the other exception stacks to use them just in case.
* arm/shared/abort/abort.c: Fix warnings and clean upJoel Sherrill2014-10-091-17/+28
|
* bsps/arm: Add a9mpcore_clock_initialize_early()Sebastian Huber2014-09-102-5/+10
| | | | | This is necessary to use the CPU counter converter even in case no clock driver is present, e.g. in tmcontext01.
* bsps/arm: Fix get cache sizeSebastian Huber2014-09-101-4/+6
|
* bsps/arm: Fix invalidate instruction cacheSebastian Huber2014-09-101-33/+2
| | | | | | | Do not invalidate the entire L2 cache since it is a uniform cache in _CPU_cache_invalidate_entire_instruction(). For consitency do not touch the L2 cache even for the range function _CPU_cache_invalidate_instruction_range().
* bsps/arm: Fix GIC tm27 supportSebastian Huber2014-09-101-15/+29
|
* arm: Add support for FPv4-SP floating point unitSebastian Huber2014-08-121-0/+15
| | | | | This floating point unit is available in Cortex-M4 processors and defined by ARMv7-M. This adds basic support for other VFP-D16 variants.
* Common ARM A8 code.Chris Johns2014-07-161-0/+55
|
* bsps/arm: Rename bsp_mm_config_tableSebastian Huber2014-07-012-4/+6
| | | | | | Rename bsp_mm_config_table to arm_cp15_start_mmu_config_table and rename bsp_mm_config_table_size to arm_cp15_start_mmu_config_table_size to be in line with the other names in <bsp/arm-cp15-start.h>.
* bsps/arm: Fix Cortex-A9 MPCore clock driverSebastian Huber2014-06-061-9/+18
| | | | | | The nanoseconds extension returned wrong values on secondary processors since some of the global timer registeres are banked. Use global variables instead.
* bsps/arm: Change L2 cache initializationSebastian Huber2014-06-062-50/+1
| | | | | Do not touch the L1 caches since they have been initialized by the start hooks.
* bsps/arm: Define ARM_CP15_TEXT_SECTIONSebastian Huber2014-06-063-43/+5
| | | | | Define ARM_CP15_TEXT_SECTION to BSP_START_TEXT_SECTION so that the start code is in the right section.
* bsps/arm: Simplify L1 caches supportSebastian Huber2014-06-051-55/+12
| | | | Delete superfluous/incorrect interrupt disable/enable.
* bsps/arm: Cortex-A9 MPCore startSebastian Huber2014-06-051-0/+5
| | | | Invalidate entire branch predictor array.