| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Disabling of interrupts is not enough to ensure mutual exclusion on SMP
configurations.
|
| |
|
| |
|
|
|
|
|
|
| |
Rename rtems_smp_process_interrupt() into
_SMP_Inter_processor_interrupt_handler(). Delete unused header file
<rtems/bspsmp.h>.
|
|
|
|
|
|
| |
Rename rtems_smp_secondary_cpu_initialize() into
_SMP_Start_multitasking_on_secondary_processor(). Move declaration to
<rtems/score/smpimpl.h>.
|
|
|
|
|
|
| |
Since the per-CPU SMP lock must be acquired and released to send the
message a single interrupt broadcast operations offers no benefits. If
synchronization is required, then a SMP barrier must be used anyway.
|
|
|
|
|
| |
Rename bsp_smp_initialize() into _CPU_SMP_Initialize() since every CPU
port must supply this function.
|
| |
|
|
|
|
|
|
| |
Merge RTEMS_FATAL_SOURCE_BSP_GENERIC and RTEMS_FATAL_SOURCE_BSP_SPECIFIC
into new fatal source RTEMS_FATAL_SOURCE_BSP. This makes it easier to
figure out the code position given a fatal source and code.
|
| |
|
|
|
|
|
| |
Move vital code out of debug section. Harmonize variable names with
other implementations.
|
|
|
|
| |
Add _LEON3_Get_current_processor().
|
|
|
|
|
|
|
|
|
| |
Add a CPU counter interface to allow access to a free-running counter.
It is useful to measure short time intervals. This can be used for
example to enable profiling of critical low-level functions.
Add two busy wait functions rtems_counter_delay_ticks() and
rtems_counter_delay_nanoseconds() implemented via the CPU counter.
|
|
|
|
|
|
|
|
|
|
| |
The _CPU_Context_switch() is a normal function call. The following
registers are volatile (the caller must assume that the register
contents are destroyed by the callee) according to "SYSTEM V APPLICATION
BINARY INTERFACE - SPARC Processor Supplement", Third Edition: g1, o0,
o1, o2, o3, o4, o5. Drop these registers from the context.
Ensure that offset defines match the structure offsets.
|
|
|
|
| |
The expression "*pi++" post-increments the pointer (not the value).
|
|
|
|
|
|
| |
This reverts commit 7579e255127ee0cf04901bbab6c1538559053508.
Improve QEMU to support AMBA plug and play instead.
|
| |
|
|
|
|
| |
Do not return a status.
|
|
|
|
|
| |
Delete _CPU_Context_switch_to_first_task_smp() and use
_CPU_Context_restore() instead.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Avoid usage of the same stack area by multiple secondary processors at
the same time.
Avoid magic delay loops.
|
|
|
|
|
|
|
|
| |
Install inter-processor interrupt (IPI) handler before secondary CPUs
are started. This ensures that secondary CPUs fetch the newly installed
handler.
Remove superfluous return statement.
|
| |
|
| |
|
| |
|
|
|
|
| |
This may increase the cache hit performance.
|
| |
|
|
|
|
|
| |
Move declaration of global variables and functions to <leon.h> header
file. Make several global variables and functions static.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Add doxygen to the header files in sparc/shared/include directory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
The console works fine when only transmitting data from the ERC32, but stops
working after a while when receiving data.
"Stops working" means, bytes are neither sent nor received from the UART, but
the rest of the system keeps functioning (task are executing, the operative
system is responsive, etc).
Context:
- When an RX error occurs, the ERC32 UARTS stop generating RX/TX interrupts
until the corresponding error flag in the UART_STATUS are cleared.
- The console.c code currently cleans the error flags from the console_isr_x
subroutines, but those are NOT called when an RX error occurs. Thus the error
flag is never cleaned and then the UARTs stop generating interrupts
indefinitely.
- The ERC32 UARTs generate a different interrupt when an RX error occurs.
Fixed by:
- Adding a third interrupt service routine console_isr_error to handle the
UART_ERROR trap. This isr cleans the error flags of the channels.
- Cleaning the error flags manually just after having initialized the interrupt
vectors. This is because if the error flag was already set by the time the
interrupt vectors are configured, the interrupts might never be called.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The function-like macro ERC32_Is_interrupt_masked defined as:
(ERC32_MEC.Interrupt_Masked & (1 << (_source)))
The ERC32_MEC is of type ERC32_Register_Map structure and Interrupt_Masked does
not exist in structure, instead Interrupt_Mask exists.
Update the macro accordingly.
|
| |
|
|
|
|
| |
Add doxygen to the header files in sparc/shared/include directory.
|
|
|
|
| |
Add doxygen to the bsp.h, tm27.h, erc32.h and irq.h files.
|
| |
|
|
|
|
| |
Add doxygen to the bsp.h, tm27.h, amba.h and leon.h files
|
| |
|
| |
|
|
|
|
| |
Add doxygen to the cchip.c & leon_open_eth.c files.
|
|
|
|
|
|
| |
sparc/shared/startup/bspgetworkarea.c
* refactored sparc/shared/bspgetworkarea.c to sparc/shared/startup/bspgetworkarea.c
|