Commit Graph

12277 Commits

Author SHA1 Message Date
Sebastian Huber
24bf11eca1 score: Add CPU counter support
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.
2014-02-14 10:28:29 +01:00
Sebastian Huber
382ea27b6a bsps/arm: Fix Cortex-A9 MPCore nanoseconds handler 2014-02-13 10:05:14 +01:00
Sebastian Huber
bab16de267 score: Change debug helper functions
Rename rtems_internal_error_description() to
rtems_internal_error_text().  Rename rtems_fatal_source_description() to
rtems_fatal_source_text().  Rename rtems_status_code_description() to
rtems_status_text().  Remove previous implementation of
rtems_status_text().
2014-02-12 09:18:00 +01:00
Sebastian Huber
97cf623d4a sparc: Save/restore only non-volatile context
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.
2014-02-12 09:18:00 +01:00
Sebastian Huber
62c5c4a564 bsps/sparc: Fix ambapp_find_by_idx()
The expression "*pi++" post-increments the pointer (not the value).
2014-02-11 12:54:24 +01:00
Sebastian Huber
0df8d7f20d bsps/arm: Use Global Timer for Cortex-A9 MPCore
Use the Global Timer for the Cortex-A9 MPCore clock driver instead of
the Private Timer.  This enables a consistent nanoseconds since last
context switch value across all processors.
2014-02-10 16:58:03 +01:00
Sebastian Huber
069e10c392 bsps/arm: Include missing header file 2014-02-10 16:58:03 +01:00
Sebastian Huber
847fc79da1 Revert "bsp/leon3: New BSP variant leon3_qemu"
This reverts commit 7579e25512.

Improve QEMU to support AMBA plug and play instead.
2014-02-07 09:32:31 +01:00
Sebastian Huber
7579e25512 bsp/leon3: New BSP variant leon3_qemu 2014-02-06 08:47:03 +01:00
Sebastian Huber
224b88805e bsp/leon3: Declare bsp_debug_uart_init() in header
Do not return a status.
2014-02-06 08:47:03 +01:00
Sebastian Huber
558cc8ddb7 score: _CPU_Context_switch_to_first_task_smp()
Delete _CPU_Context_switch_to_first_task_smp() and use
_CPU_Context_restore() instead.
2014-02-05 15:46:30 +01:00
Sebastian Huber
1c1c2a04c3 bsps: Delete unused bsp_smp_delay() 2014-02-05 15:46:30 +01:00
Sebastian Huber
36a52ab367 bsp/leon3: Avoid magic delays for IPI broadcast 2014-02-05 15:46:30 +01:00
Sebastian Huber
3d770018d9 bsp/leon3: Fix SMP initialization
Avoid usage of the same stack area by multiple secondary processors at
the same time.

Avoid magic delay loops.
2014-02-05 15:46:29 +01:00
Sebastian Huber
3ef2d175fa bsp/leon3: Install IPI handler early
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.
2014-02-05 15:46:29 +01:00
Sebastian Huber
d212acb7db bsp/leon3: Use printk() only if debug is enabled 2014-02-05 15:46:29 +01:00
Sebastian Huber
2082809919 bsps/sparc: Fix comment 2014-02-05 11:43:32 +01:00
Sebastian Huber
5ff6a9ca62 bsps/sparc: Remove confusing nop 2014-02-04 16:57:59 +01:00
Sebastian Huber
f715433ae9 bsps/sparc: Order load/store by increasing offsets
This may increase the cache hit performance.
2014-02-04 16:57:58 +01:00
Sebastian Huber
a54179d2ba bsps/sparc: Fix comments 2014-02-04 16:57:58 +01:00
Sebastian Huber
1d5d6de35e bsp/leon3: Console driver changes
Move declaration of global variables and functions to <leon.h> header
file.  Make several global variables and functions static.
2014-02-04 14:54:27 +01:00
Sebastian Huber
6fe6d017a4 bsp/leon3: Avoid copy and paste in console driver 2014-02-04 14:54:27 +01:00
Sebastian Huber
1e744efde9 bsp/leon3: Fix interrupt-driven console driver 2014-02-04 14:54:26 +01:00
Sebastian Huber
022851aba5 Add thread-local storage (TLS) support
Tested and implemented on ARM, m68k, PowerPC and SPARC.  Other
architectures need more work.
2014-02-04 10:06:35 +01:00
Sebastian Huber
960fd8546f bsps: Thread-local storage (TLS) for linkcmds 2014-02-04 10:06:34 +01:00
Sebastian Huber
fe535885e6 bsp/v850: Use proper ABI in linkcmds 2014-02-04 10:06:34 +01:00
Chris Johns
e5d706cba0 bsp/xilinx_zynq: Support configuraton of memory map. Remove SMP variants.
Generate a linker command file from configure letting the user override the
defaults to suite their custom needs. Refer to configure.ac for the details.

Remove the SMP variants and let --enable-smp control if a BSP is built for
SMP.

Make USE_FAST_IDLE 1 only for the realview qemu BSP.
2014-02-02 14:01:18 +11:00
Joel Sherrill
6dce1621b6 bootcard.c: Comment clean up 2014-01-31 08:13:05 -06:00
Sebastian Huber
fd49e3f162 bsps/sparc: Fix linkcmds part of new network stack 2014-01-30 16:46:38 +01:00
Sebastian Huber
bba0e09a0e bsps: Fix barrier section definitions 2014-01-30 16:42:55 +01:00
Sebastian Huber
6c3517f25d bsp/stm32f4: Use BSP_SMALL_MEMORY for a variant 2014-01-30 16:42:55 +01:00
Sebastian Huber
c26a945335 bsp/lpc24xx: Fix compile error 2014-01-30 16:42:55 +01:00
Nick Withers
f334847bce powerpc/flash: give string variables const attribute 2014-01-23 11:30:15 -05:00
Nick Withers
a7775cbd09 Add warnings to MOTLoad-equipped BSPs' READMEs that a "waitProbe", "netShut" sequence must be executed in MOTLoad before booting RTEMS to remove its network interface interrupt handlers, lest memory corruption occur 2014-01-23 11:28:21 -05:00
Sebastian Huber
e16a7ba121 libchip/serial: Documentation 2014-01-23 15:59:25 +01:00
Cynthia Rempel
d7f05338e3 libbsp sh: Add Doxygen file header to coverhd.h 2014-01-14 17:34:00 -06:00
Cynthia Rempel
279d83d33a libbsp powerpc: Add Doxygen file header to coverhd.h 2014-01-14 17:33:48 -06:00
Cynthia Rempel
d5d1faee24 libbsp mips: Add Doxygen file header to coverhd.h 2014-01-14 17:33:33 -06:00
Cynthia Rempel
f68660071a libbsp m68k: Add Doxygen file header to coverhd.h 2014-01-14 17:33:04 -06:00
Aleksandr Platonov
fc6a0ae1a6 rtems_cache_invalidate_multiple_instruction_lines
According with comment in
rtems_cache_invalidate_multiple_instruction_lines(), final_address
indicates the last address which needs to be invalidated.  But if in
while loop we got final_address == i_addr condition then loop breaks and
final_address will not be invalidated.
2014-01-14 14:40:07 +01:00
Sebastian Huber
3a7f5887f3 bsps/arm: Use _ARMV4_Exception_interrupt
This allows read-only vector tables in ROM.  It avoids also an unsolved
problem with MMU/cache synchronization on SMP.
2014-01-14 09:46:13 +01:00
Sebastian Huber
eba0626fa2 bsps/arm: Use Normal memory for code and data 2014-01-13 13:24:02 +01:00
Sebastian Huber
4ec210fe3e bsps/arm: Use ALIGN_WITH_INPUT
The ALIGN_WITH_INPUT helps to make this linker script more reliable.
See also:

https://sourceware.org/ml/binutils/2013-06/msg00246.html

https://sourceware.org/binutils/docs-2.24/ld/Forced-Output-Alignment.html#Forced-Output-Alignment

This reverts commit 4a9e52eefc.

This reverts commit 1ab4f76900.
2014-01-13 13:19:02 +01:00
Sebastian Huber
8fdf4e57f8 bsp/lpc24xx: Add PL111 support 2014-01-10 21:44:24 +01:00
Sebastian Huber
3e7590021c bsp/lpc24xx: Add register definition 2014-01-10 21:44:24 +01:00
Sebastian Huber
c369e84efa bsp/realview-pbx-a9: Fix PL111 color encoding 2014-01-10 21:44:24 +01:00
Sebastian Huber
5b85ccaebc bsps/arm: Use handlers for PL111 set up/tear down 2014-01-10 21:44:24 +01:00
Cynthia Rempel
e327e692c3 libbsp tm27.h: Add Doxygen file header to all tm27.h 2014-01-09 16:05:54 -06:00
Toma Radu
1d325e7b4d sparc BSP shared: Improve Doxygen
Add doxygen to the header files in sparc/shared/include directory.
2014-01-09 09:21:49 -06:00
Gerardo Puga
78c84df00c PR 1548: ERC32 console stops working when UART error flags are set
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.
2014-01-09 09:44:14 -05:00