| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This patch is a part of the BSP source reorganization.
Update #3285.
|
|
|
|
|
|
|
|
|
| |
Cannot read or write MSR when executing in user mode. This
is used when RTEMS_PARAVIRT is defined.
Provide alternate methods to disable/enable interrupts
Closes #3306.
|
|
|
|
| |
Update #3082.
|
|
|
|
| |
Update #3082.
|
|
|
|
| |
Update #2751.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We must not alter the is executing indicator in
_CPU_Context_Initialize() since this would cause an invalid state during
a self restart.
The is executing indicator must be valid at creation time since
otherwise _Thread_Kill_zombies() uses an undefined value for not started
threads. This could result in a system life lock.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
Tested and implemented on ARM, m68k, PowerPC and SPARC. Other
architectures need more work.
|
|
|
|
| |
The r2 may be used for thread-local storage.
|
|
|
|
| |
Use the right context.
|
|
|
|
|
| |
Use INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR on PowerPC for
_CPU_ISR_install_vector().
|
|
|
|
| |
This function is only used if CPU_HAS_HARDWARE_INTERRUPT_STACK == TRUE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1799/bsps
* new-exceptions/bspsupport/ppc_exc_async_normal.S: New file.
* new-exceptions/cpu.c, new-exceptions/cpu_asm.S,
new-exceptions/bspsupport/ppc_exc_asm_macros.h,
new-exceptions/bspsupport/ppc_exc_global_handler.c,
new-exceptions/bspsupport/ppc_exc_prologue.c,
new-exceptions/bspsupport/vectors.h: Added support for SPE.
* configure.ac, preinstall.am, Makefile.am: Added support for qoriq
BSPs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* e500/mmu/mmu.c, mpc505/ictrl/ictrl.c, mpc505/timer/timer.c,
mpc5xx/ictrl/ictrl.c, mpc5xx/timer/timer.c,
mpc6xx/altivec/vec_sup.c, mpc6xx/clock/c_clock.c,
mpc6xx/mmu/bat.c, mpc6xx/mmu/bat.h, mpc6xx/mmu/pte121.c,
mpc8260/timer/timer.c, mpc8xx/timer/timer.c, new-exceptions/cpu.c,
new-exceptions/bspsupport/ppc_exc_initialize.c,
ppc403/clock/clock.c, ppc403/console/console.c,
ppc403/console/console.c.polled, ppc403/console/console405.c,
ppc403/irq/ictrl.c, ppc403/tty_drv/tty_drv.c,
rtems/powerpc/cache.h, shared/include/powerpc-utility.h, shared/src/cache.c:
Use "__asm__" instead of "asm" for improved c99-compliance.
|
|
|
|
|
|
|
|
|
| |
* new-exceptions/cpu.c, new-exceptions/cpu_asm.S,
new-exceptions/bspsupport/ppc_exc_asm_macros.h,
new-exceptions/bspsupport/ppc_exc_initialize.c,
new-exceptions/bspsupport/vectors.h:
Added AltiVec support (save/restore volatile vregs
across exceptions).
|
| |
|
|
|
|
| |
* new-exceptions/cpu.c: Correct prototype of _CPU_Initialize.
|
| |
|
|
|
|
|
| |
* new-exceptions/cpu.c: propagate R2 to all task contexts
even if the ABI is SVR4. Cannot hurt...
|
|
|
|
|
| |
* new-exceptions/cpu.c: use ppc_interrupt_get_disable_mask()
to determine which bits to set/clear from _CPU_Context_Initialize().
|
| |
|
|
|
|
|
|
|
| |
* mpc5xx/console-generic/console-generic.c, mpc8260/timer/timer.c,
new-exceptions/cpu.c, old-exceptions/cpu.c: Move interrupt_stack_size
field from CPU Table to Configuration Table. Eliminate CPU Table from
all ports. Delete references to CPU Table in all forms.
|
|
|
|
| |
(new gcc may use FP regs implicitely).
|
|
|
|
|
|
|
| |
* new-exceptions/cpu.c, rtems/powerpc/powerpc.h:
Remove CPU_MINIMUM_STACK_FRAME_SIZE.
Use PPC_MINIMUM_STACK_FRAME_SIZE instead.
* rtems/powerpc/powerpc.h: Add PPC_MINIMUM_STACK_FRAME_SIZE.
|
|
|
|
| |
* new-exceptions/cpu.c: Add CPU_MINIMUM_STACK_FRAME_SIZE.
|
|
|
|
| |
* new-exceptions/cpu.c (_CPU_ISR_install_vector): New.
|
|
|
|
| |
* cpu.c, cpu_asm.S, irq_stub.S: #include <rtems/powerpc/powerpc.h>.
|
| |
|
| |
|
| |
|
|
|
|
| |
* cpu.c: Convert to using c99 fixed size types.
|
|
|
|
| |
* cpu.c, cpu_asm.S: URL for license changed.
|
|
|
|
|
|
| |
PR 288/rtems
* support/new_exception_processing/cpu.c: _ISR_Nest_level is now
properly maintained and does not reside in SPRG0.
|
|
|
|
|
| |
PR 356/bsps
* cpu.c: This patch makes RTEMS/PowerPC eabi compliant.
|
|
|
|
|
|
| |
* cpu.c: Currently only the mpc8260 BSP supports interrupt nesting.
NOTE: These needs to be generalized as the patch is applied to other
BSPs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* cpu.c: Per PR211 fix
saving/restoring floating point context. The fpsave and fprestore
routines are only used in a executing context which _is_ fp and hence
has the FPU enabled. The current behavior required the FPU always to
be on which is very dangerous if lazy context switching is used.
[Joel Note: Some ports explicitly enabled the FPU in the FP save and
restore routines to avoid this.]
The patch also makes sure (on powerpc only) that the FPU is disabled
for integer tasks. Note that this is crucial if deferred fp context
switching is used. Otherwise, fp context corruption may go undetected!
Also note that even tasks which merely push/pop FP registers to/from
the stack without modifying them still MUST be FP tasks - otherwise
(if lazy FP context switching is used), FP register corruption (of
other, FP, tasks may occur)!
Furthermore, (on PPC) by default, lazy FP context save/restore
is _disabled_.
|
|
|
|
|
|
|
|
|
|
| |
This was tracked as PR91.
* rtems/score/cpu.h: Added CPU_PROVIDES_ISR_IS_IN_PROGRESS macro which
is used to specify if the port uses the standard macro for this (FALSE).
A TRUE setting indicates the port provides its own implementation.
* rtems/score/c_isr.inl: Deleted and contents merged into cpu.c.
* cpu.c: Received contents of c_isr.inl.
* Makefile.am: Deleted reference to c_isr.inl.
|
|
|
|
|
|
|
|
|
| |
* mpc6xx/clock/c_clock.c, mpc6xx/clock/c_clock.h, mpc8xx/clock/clock.c,
mpc8xx/timer/timer.c, new_exception_processing/cpu.c,
new_exception_processing/cpu.h, new_exception_processing/cpu_asm.S,
old_exception_processing/cpu.c, old_exception_processing/cpu.h,
old_exception_processing/cpu_asm.S, old_exception_processing/rtems.S:
Fixed typo.
|
|
As part of this effort, the mpc750 libcpu code is now shared with the
ppc6xx.
|