summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu (follow)
Commit message (Collapse)AuthorAgeFilesLines
* powerpc: Fix SMP context switchSebastian Huber2016-09-081-61/+62
| | | | | | We need the unmodified r4 for get_potential_new_heir. This partially reverts commit 8d785f72d9610fb80a65d7848404f0f7507e026c.
* bsps/arm: reorganize CP15 code to allow clean and invalidate ARMv7 cache by ↵Pavel Pisa2016-09-071-48/+60
| | | | | | | level. New function arm_cp15_cache_invalidate_level and arm_cp15_cache_clean_level can be used to maintain single cache level (instruction or data).
* bsps/arm: use defines for cache type register format field.Pavel Pisa2016-09-071-9/+30
| | | | | | The change documents meaning of codes and opens well defined way to use cache type format for cache examination/debugging outside of arm-cp15.h file.
* arm/bsps: CP15 and basic cache support entire cache clean for more ↵Pavel Pisa2016-07-201-2/+42
| | | | | | | | | | | | | | | | | 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-0/+16
| | | | | | | | | | | | | | | | | | | | 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 }
* bsps/powerpc: Fix AtliVec context switchSebastian Huber2016-07-192-62/+68
| | | | | | | Properly pass the stack aligned context to _CPU_Context_switch_altivec() since _CPU_altivec_ctxt_off defined via ppc_context. Close #2761.
* Beaglebone: Update PWM driver imported from BBBIOPunit Vara2016-07-041-1/+96
| | | | | | This patch adapts the previously added Beaglebone PWM code from BBBIO to RTEMS. This work was done in the context of the Google Summer of Code 2016, and further patches will follow to improve the code quality and documentation.
* bsps/arm: basic on core cache support changed to use l1 functions.Pavel Pisa2016-07-041-3/+28
| | | | | | | | | | | | | | 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-104/+30
| | | | | | | | | | | | | | | | | | | | | | | 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
* rtems+bsps/cache: Define cache manager operations for code synchronization ↵Pavel Pisa2016-07-041-0/+42
| | | | | | | | | | | | | | and maximal alignment. There is need for unambiguous named and defined cache function which should be called when code is updated, loaded or is self-modifying. There should be function to obtain maximal cache line length as well. This function can and should be used for allocations which can be used for data and or code and ensures that there are no partial cache lines overlaps on start and end of allocated region.
* arm/score and shared: define ARM hypervisor mode and alternate vector table ↵Pavel Pisa2016-07-041-0/+30
| | | | | | | | | base access. The main reason for inclusion of minimum hypervisor related defines is that current ARM boards firmware and loaders (U-boot for example) start loaded operating system kernel in HYP mode to allow it take control of virtualization (Linux/KVM for example).
* score: Rename _ISR_Disable() and _ISR_Enable()Sebastian Huber2016-05-207-54/+54
| | | | | | | | | Rename _ISR_Disable() into _ISR_Local_disable(). Rename _ISR_Enable() into _ISR_Local_enable(). Remove _Debug_Is_owner_of_giant(). This is a preparation to remove the Giant lock. Update #2555.
* score: Rename _ISR_Disable_without_giant()Sebastian Huber2016-05-201-12/+12
| | | | | | | | | Rename _ISR_Disable_without_giant() into _ISR_Local_disable(). Rename _ISR_Enable_without_giant() into _ISR_Local_enable(). This is a preparation to remove the Giant lock. Update #2555.
* score: _Thread_Dispatch_increment_disable_level()Sebastian Huber2016-05-204-8/+8
| | | | | | | | | | Avoid _Thread_Dispatch_increment_disable_level() and _Thread_Dispatch_decrement_disable_level() and thus the Giant lock. This is a preparation to remove the Giant lock. Update #2555.
* bsps/arm: CP15 support for flush prefetch buffer and table base control.Pavel Pisa2016-05-191-0/+48
|
* libcpu/m68k/mcf5272/clock/ckinit.c: Fix warning by including <rtems/clockdrv.h>Joel Sherrill2016-03-271-0/+1
|
* libcpu/m68k/mcf5206/clock/ckinit.c: Fix warning by including <rtems/clockdrv.h>Joel Sherrill2016-03-271-0/+1
|
* libcpu/bfin/clock/clock.c: Fix warning by including <rtems/clockdrv.h>Joel Sherrill2016-03-271-0/+2
|
* sparc: Fix window underflow trap handlerDaniel Hellstrom2016-03-171-6/+6
| | | | | | | | | | | | The window underflow trap handler used %i5 which destroyed the %o5 of the calling context. Bug introduced by 0d3b5d47429effb350448d9e9123a67db722109f. Go back to the pre 0d3b5d47429effb350448d9e9123a67db722109f behaviour and use the two unused instructions in the trap vector to optimize a bit. Update #2651.
* i386: refactor libcpu/cpu.h into rtems/score/i386.hJoel Sherrill2016-03-037-484/+49
| | | | Fixes #2515.
* am335x irq handling improvementMartin Galvan2016-02-281-1/+2
| | | | | | | | | | | | | This patch makes the following changes to the Beaglebone IRQ handling code: - Disable support for nested interrupts. - Detect spurious IRQs using the SPURIOUSIRQ field of the INTC_SIR_IRQ register. - Acknowledge spurious IRQs by setting the NewIRQAgr bit of the INTC_CONTROL register. This cleans the SPURIOUSIRQ field and allows new interrupts to be generated. - Improve the get_mir_reg function a bit. Closes #2580.
* Delete unused API extensionsSebastian Huber2016-02-033-3/+0
|
* score: Introduce CPU_CACHE_LINE_BYTESSebastian Huber2016-01-261-0/+8
| | | | | Add CPU_CACHE_LINE_BYTES for the maximum cache line size in bytes. The actual processor may use no cache or a smaller cache line size.
* score: Fix simple timecounter supportSebastian Huber2016-01-191-14/+18
| | | | Update #2502.
* score: Introduce Thread_Entry_informationSebastian Huber2016-01-112-4/+4
| | | | | | | This avoids potential dead code in _Thread_Handler(). It gets rid of the dangerous function pointer casts. Update #2514.
* Fix interrupt epilogue for ARMv7-AR and PowerPCSebastian Huber2015-11-121-13/+38
|
* basdefs.h: Add and use RTEMS_PACKEDSebastian Huber2015-10-261-1/+1
|
* SMP: Fix and optimize thread dispatchingSebastian Huber2015-09-282-15/+19
| | | | | | | | 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.
* Beagle: GPIO support (for BBB)Ketul Shah2015-08-181-0/+168
| | | | GPIO Driver Development for BeagleBone Black based on the generic GPIO API
* bsp/mpc83xx: Update due to header guard changeSebastian Huber2015-07-172-6/+6
| | | | Close #2373.
* bsps/powerpc: Provide debug and trace symbolsSebastian Huber2015-07-081-0/+3
|
* score: Simplify <rtems/system.h>Sebastian Huber2015-06-264-0/+4
| | | | | Drop the <rtems/score/percpu.h> include since this file exposes a lot of implementation details.
* score: Add Thread_Control::is_fpSebastian Huber2015-06-091-17/+1
| | | | | | | | Store the floating-point unit property in the thread control block regardless of the CPU_HARDWARE_FP and CPU_SOFTWARE_FP settings. Make sure the floating-point unit is only enabled for the corresponding multilibs. This helps targets which have a volatile only floating point context like SPARC for example.
* bsps/powerpc: Fix potential integer overflowSebastian Huber2015-05-291-1/+1
| | | | Update #2356.
* beagle bsp: RTC support for BBBragunath2015-05-282-0/+26
|
* arm/s3c24xx/clock/clockdrv.c: Remove unused variable warningJoel Sherrill2015-05-211-1/+0
|
* arm/lpc22xx/clock/clockdrv.c: Remove unused variable warningJoel Sherrill2015-05-211-1/+0
|
* bsps: Convert clock drivers to use a timecounterAlexander Krutwig2015-05-206-122/+80
| | | | Update #2271.
* bsps/sparc: Use inline functions for cache managerSebastian Huber2015-04-273-46/+32
|
* bsps/cache: Clarify range functions supportSebastian Huber2015-04-272-4/+6
|
* Fix broken BSPs due to a shared cache function declaration.Hesham ALMatary2015-04-271-1/+0
| | | | | Get rid of _CPU_cache_invalidate_instruction_range declaration as it doesn't make sense here.
* score: Refactor SMP cache manager supportSebastian Huber2015-04-201-172/+51
|
* Replace www.rtems.com with www.rtems.orgSebastian Huber2015-03-202-2/+2
|
* rtems: Use atomic operation with correct typeDaniel Cederman2015-03-201-1/+1
|
* libcpu/bfin/clock/rtc.c: Do not use rtems_clock_get()Joel Sherrill2015-03-171-2/+2
|
* libcpu/powerpc/mpc8260/console-generic/console-generic.c: Include bsp.h to ↵Joel Sherrill2015-03-091-3/+1
| | | | fix warning
* sparc64: fix copyright notices.Gedare Bloom2015-02-232-14/+4
| | | | | The sparc64 port had some incorrect copyright notices affixed to source code files.
* bsps/powerpc: Fix a clock driverNick Withers2015-01-301-9/+57
| | | | | | | PowerPC Book E: Account for an extra tick period if a tick increment's pending. Close #2230.
* bsps/powerpc: Fix switch statement in CPU identSebastian Huber2015-01-231-0/+2
| | | | Close #2237.
* powerpc: Fix AltiVec VSCR save/restoreSebastian Huber2015-01-201-4/+6
|