summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/powerpc/cpu.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Canonicalize config.h includeSebastian Huber2020-04-161-1/+1
| | | | | | | | Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
* powerpc: Add 64-bit context/interrupt supportSebastian Huber2017-08-221-2/+7
| | | | Update #3082.
* powerpc: Use Per_CPU_Control::isr_dispatch_disableSebastian Huber2016-11-181-0/+1
| | | | Update #2751.
* powerpc: Add up to date CPU_Interrupt_frameSebastian Huber2016-11-181-5/+222
| | | | | | | Rename ppc_exc_min_frame to CPU_Interrupt_frame. Move it and the corresponding defines to <rtems/score/cpuimpl.h>. Update #2809.
* powerpc: AltiVec and FPU context supportSebastian Huber2015-01-131-0/+41
| | | | | | | | | | | Add AltiVec and FPU support to the Context_Control in case we use the e6500 multilib. Add PPC_MULTILIB_ALTIVEC and PPC_MULTILIB_FPU multilib defines. Add non-volatile AltiVec and FPU context to Context_Control. Add save/restore of non-volatile AltiVec and FPU to _CPU_Context_switch(). Add save/restore of volatile AltiVec and FPU context to the exception code. Adjust data cache optimizations for the new context and cache line size.
* score: Implement forced thread migrationSebastian Huber2014-05-071-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation of task migration in RTEMS has some implications with respect to the interrupt latency. It is crucial to preserve the system invariant that a task can execute on at most one processor in the system at a time. This is accomplished with a boolean indicator in the task context. The processor architecture specific low-level task context switch code will mark that a task context is no longer executing and waits that the heir context stopped execution before it restores the heir context and resumes execution of the heir task. So there is one point in time in which a processor is without a task. This is essential to avoid cyclic dependencies in case multiple tasks migrate at once. Otherwise some supervising entity is necessary to prevent life-locks. Such a global supervisor would lead to scalability problems so this approach is not used. Currently the thread dispatch is performed with interrupts disabled. So in case the heir task is currently executing on another processor then this prolongs the time of disabled interrupts since one processor has to wait for another processor to make progress. It is difficult to avoid this issue with the interrupt latency since interrupts normally store the context of the interrupted task on its stack. In case a task is marked as not executing we must not use its task stack to store such an interrupt context. We cannot use the heir stack before it stopped execution on another processor. So if we enable interrupts during this transition we have to provide an alternative task independent stack for this time frame. This issue needs further investigation.
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* powerpc: Add r2 to CPU contextSebastian Huber2013-11-181-0/+1
| | | | The r2 may be used for thread-local storage.
* score misc: Clean up Doxygen GCI Task #12Alex Ivanov2012-12-071-0/+6
| | | | http://www.google-melange.com/gci/task/view/google/gci2012/7983217
* powerpc: Simplify context switchSebastian Huber2012-06-041-1/+38
| | | | | | | | | | | | | | | | | | | PowerPC cores with the SPE (Signal Processing Extension) have 64-bit general-purpose registers. The SPE context switch code has been merged with the standard context switch code. The context switch may use cache operations to increase the performance. It will be ensured that the context is 32-byte aligned (PPC_DEFAULT_CACHE_LINE_SIZE). This increases the overall memory size of the context area in the thread control block slightly. The general-purpose registers GPR2 and GPR13 are no longer part of the context. The BSP must initialize these registers during startup (usually initialized by the __eabi() function). The new BSP option BSP_USE_DATA_CACHE_BLOCK_TOUCH can be used to enable the dcbt instruction in the context switch. The new BSP option BSP_USE_SYNC_IN_CONTEXT_SWITCH can be used to enable sync and isync instructions in the context switch. This should be not necessary in most cases.
* Remove All CVS Id Strings Possible Using a ScriptJoel Sherrill2012-05-111-2/+0
| | | | | | | | | | | | Script does what is expected and tries to do it as smartly as possible. + remove occurrences of two blank comment lines next to each other after Id string line removed. + remove entire comment blocks which only exited to contain CVS Ids + If the processing left a blank line at the top of a file, it was removed.
* 2010-03-27 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill2010-03-271-0/+5
| | | | * cpu.c: Add include of config.h
* 2005-02-12 Ralf Corsepius <ralf.corsepius@rtems.org>Ralf Corsepius2005-02-121-0/+12
* cpu.c: New (Stub file for consistency with other ports). * Makefile.am: Reflect changes above.