Commit Graph
14194 Commits
Author SHA1 Message Date
Sebastian Huber 697a6ca05a bsps/powerpc: Set output format in linker script
Set the proper output format in the linker script for the bootloader.
Otherwise the generic linker is used since Binutils 2.28 which does not
understand the PowerPC-specific relocations.
2017-06-01 19:00:38 +02:00
Phong Pham 848007c068 Add support for IBM PowerPC 750 chip.
Closes #3015.
2017-05-29 08:04:43 +02:00
Sebastian Huber afa5b894b2 ada: Remove task notepad support
Update #2493.
2017-05-29 08:01:54 +02:00
Sebastian Huber 783fbcec35 ada: Update due to Clock Manager API changes
Update #2676.
2017-05-29 08:01:54 +02:00
Sebastian Huber 9ff0f40ca0 ada: Remove <rtems/debug.h> support
Update #2477.
2017-05-29 08:01:54 +02:00
Chris Johns 7ec982bfeb build-system: Fix the targets support for the parallel build. 2017-05-26 10:35:17 +10:00
Chris Johns ff781cc00f m32c/m32csim: Exclude linpack from the tests.
Closes #3025.
2017-05-25 15:10:11 +10:00
Chris Johns a748603cb4 build-system: Parallel build all subdirs. 2017-05-24 19:59:22 +10:00
Chris Johns 9935c23f6a arm/tms570: Update preinstall.am after bootstrap. 2017-05-24 09:26:29 +10:00
Jacob Hansen bc470d3c49 sparc: only define start if it is different from SYM(start)
The SYM define concatenates the input with the compiler set
__USER_LABEL_PREFIX__ define. This define appears to be '_' in GCC but
empty in Clang. Therefore when compiling with Clang/LLVM 'SYM(start)'
and 'start' defines the same symbol, and the compiler complains that the
symbol is defined twice.
2017-05-14 12:32:01 +02:00
Jacob Hansen 863968599c sparc: Adjust assembly to improve compability with LLVM
- All references of %0 changed to %g0

- 'call label,0' changed to 'call label'. According to the sparc
  specification call does not take any registers

- '.seg "text"' changed to '.section ".text"'

- the synonym stub is replaced with stb

- the synonym stuh is replaced with sth
2017-05-14 12:32:00 +02:00
Daniel Hellstrom 1ea73e2b5f leon, grtc: SMP support by using spin-locks 2017-05-14 12:32:00 +02:00
Daniel Hellstrom 818f10bc6c leon, grtc: updated overrun condition handling
The following functions now reports to the user that an overrun has
occured by returning errno EIO:
 * grtc_read, on overrun and no more data in the DMA buffer
 * ioctl(GRTC_IOC_RECV), on overrun and no more frames in the DMA buffer
 * ioctl(GRTC_IOC_ISSTARTED), EIO is returned on overrun
2017-05-14 12:32:00 +02:00
Daniel Hellstrom 6fdded2c75 leon, gr1553bm: SMP support by using spin-locks 2017-05-14 12:32:00 +02:00
Daniel Hellstrom 3feae3bc82 leon, gr1553bc: SMP support by using spin-locks
Since DMA buffers are managed by the user, responsibility is put on
the user to cope with SMP in the application.
2017-05-14 12:32:00 +02:00
Daniel Hellstrom 84e4d10ca3 leon, apbuart: remove old RAW UART driver
This driver was initially intended for APBUART access on GRLIB PCI
peripherals (AMBA-over-PCI). There are already many APBUART drivers
for LEON. Instead of using this one the termios APBUART should work
on AMBA-over-PCI systems with recent changes on LEON3, however that
has not been tested yet.
2017-05-14 12:32:00 +02:00
Daniel Hellstrom c92f402ca9 leon, grtm: SMP support by using spin-locks 2017-05-14 12:31:59 +02:00
Daniel Hellstrom f767fe74f5 leon, ahbstat: remove printf warnings 2017-05-14 12:31:59 +02:00
Daniel Hellstrom ce76b9d295 leon, pci-peripherals: SMP support by spin-locks and updated genirq 2017-05-14 12:31:59 +02:00
Daniel Hellstrom 8670c46470 leon, genirq: SMP support for PCI peripherals
The common interrupt layer for GRLIB PCI perihperals is prepared for SMP
support by this patch. The existing locking (interrupt disabling) is
replaced by a new requirement on the user to implement locking before
calling the genirq API. This approach avoids taking more locks than
necessary.

The split up of the locks also introduces that the user must allocate
memory to describe ISR handlers, to avoid calling malloc()/free() while
possessing a spin-lock and interrupts are globally disabled.
2017-05-14 12:31:59 +02:00
Martin Aberg aa19873f68 leon: allow SMP boot from any CPU 2017-05-14 12:31:59 +02:00
Martin Aberg 039edd2adc leon, grcan: removed unused txerror, rxerror 2017-05-14 12:31:59 +02:00
Martin Aberg ee078c217d leon, grcan: fixed historical comment 2017-05-14 12:31:59 +02:00
Daniel Hellstrom 9154155110 leon, grcan: semaphore reset count required after flushing
It is also required to use semaphore release instead of flush when stopping
or on BUSOFF/AHBERR condition. Otherwise a task just about to wait
(taking the semaphore) could end up locked because the semaphore count is
still the same.

There was previously a scenario where the semaphore flush would not always make
semaphore obtain to return in case of BUSOFF, AHBERROR or grcan_stop. It has to
do with the rtems_semaphore_flush() not releasing the semaphore but just aborts
any _current_ waiter.
2017-05-14 12:31:58 +02:00
Daniel Hellstrom 9855690300 leon, grcan: split hw_stop() into hw and sw stop
this is to avoid owning the spin-lock during semaphore operations.
2017-05-14 12:31:58 +02:00
Martin Aberg 3a650d3b2c leon, grcan: RTEMS_NO_TIMEOUT on tx_sem 2017-05-14 12:31:58 +02:00
Martin Aberg 2d3d8f96b2 leon, grcan: redesigned bus-off and AHB error handling
When bus-off condition is detected by the ISR, it sets the started flag to
STATE_BUSOFF. This is monitored by the user functions grcan_read() and
grcan_write() each time they want to enable DMA or update interrupt mask. If
they detect that ISR has detected bus-off then they will return either with an
error or with the number of CAN messages processed. Future calls to functions
which require STARTED mode will be rejected and grcan_isstarted() will return
0. The next call to grcan_stop() will do the transition from BUSOFF->STOPPED
and the device can then be started again with grcan_start().

Similar to a bus-off condition, the AHB error condition detected by the ISR
will trigger the same shut-down logic of the driver. The difference is that
the state entered is STATE_AHBERR and the routines will return a different
value to indicate AHB error state.

This commit also fixes an issue where ISR was not always unregistered on close.

User functions can cause these transitions:
  STATE_STOPPED -> STATE_STARTED (grcan_start)
  STATE_STARTED -> STATE_STOPPED (grcan_stop)
  STATE_BUSOFF  -> STATE_STOPPED (grcan_stop, grcan_close)
  STATE_AHBERR  -> STATE_STOPPED (grcan_stop, grcan_close)

ISR can cause these transition
  STATE_STARTED -> STATE_BUSOFF (grcan_interrupt)
  STATE_STARTED -> STATE_AHBERR (grcan_interrupt)

STATE_BUSOFF/AHBERR is entered from ISR on bus-off condition. At transition
the ISR disables DMA, masks all interrupts and flushes semaphores.

Other related updates:

 * Statistics are updated from the ISR. Update is now spin-locked to ensure a
   consistent user view.
 * The debug output has been updated to include state changes.
 * For read/write/flush, return error (-4) if driver aborted the operation
   due to bus-off. Likewise if abourted due to AHB error -5 is returned.
 * Collect bus-off statistics

Related to the new BUSOFF and AHBERR states the API has been updated to
reflect the current SW driver state. The isstarted() function has been
replaced with get_state().
2017-05-14 12:31:58 +02:00
Daniel Hellstrom ca4c4164b5 leon, grcan: updated device name and use it for ISR 2017-05-14 12:31:58 +02:00
Martin Aberg 057496906f leon, grcan: fixed race on interrupt mask register
There was a potential read-modify-write race on the interrupt mask (imr)
register between the ISR and user functions.
2017-05-14 12:31:58 +02:00
Martin Aberg 5d367c56cf leon, grcan: unregister interrupt handler at close 2017-05-14 12:31:58 +02:00
Martin Aberg c297060b11 leon, grcan: protect statistics on copy to user
Locking the stats structure when copying to user buffer ensures a consistent
view to the user.
2017-05-14 12:31:57 +02:00
Martin Aberg 7b8a920a27 leon, grcan: use RTEMS 4.12 SMP interrupt lock 2017-05-14 12:31:57 +02:00
Martin Aberg bc40b4def8 leon, grcan: consistent indentation
This commit does not contain any change of functionality.
2017-05-14 12:31:57 +02:00
Martin Aberg ad203e5887 leon, grcan: function based user interface
This commit preserves all driver services, using a function based user
interface instead of the I/O interface.

The messages count parameter is now number of CAN messages instead of
number of bytes.
2017-05-14 12:31:57 +02:00
Martin Aberg 229c42499e bsp/leon3: Cleaner namespace for LEON3 debug UART
Prefix BSP specific symbols with BSP name:
dbg_uart -> leon3_debug_uart
debug_uart_index -> leon3_debug_uart_index
2017-05-14 12:31:57 +02:00
Daniel Hellstrom 011efee813 leon, irq: single CPU SMP configuration does not need IPI ISR 2017-05-14 12:31:56 +02:00
Daniel Hellstrom fa27fe5c82 leon, greth: new option and change soft-reset logic for EDCL 2017-05-14 12:31:56 +02:00
Daniel Hellstrom 8ac070ab99 leon, greth: 10/100 modes should be assigned in fastest priority 2017-05-14 12:31:56 +02:00
Daniel Hellstrom e6fbd26fdb leon, greth: speed modes advertising now configurable 2017-05-14 12:31:56 +02:00
Daniel Hellstrom 1271813421 leon, greth: EDCL and DD is disabled during reset
The EDCL and Duplex-Detection are now disabled during soft-reset
of the GRETH core.

The speed settings are preserved on boot and greth_stop() also,
this is required to keep EDCL operational when DD is set.
2017-05-14 12:31:56 +02:00
Phong Pham a9859d1a58 interrupt vector indexing is assuming BSP_INTERRUPT_VECTOR_MIN = 0
Closes #3014.
2017-05-13 23:10:25 -05:00
Phong Pham f219adc3f8 missing a couple register names + a #ifndef_ASM__ around serial.h inclusion
Closes #3016.
2017-05-13 22:50:39 -05:00
Sebastian Huber 0e4941701f bsps/arm: Fix bit field offset in GIC support
Update #3002.
2017-05-11 09:53:45 +02:00
Daniel Hellstrom 430949aa0d leon, greth: let Gbit full duplex override half 2017-05-02 12:34:50 +02:00
Daniel Hellstrom 998e34ad33 leon, greth: SMP support by using spin-lock protection 2017-05-02 12:34:50 +02:00
Martin Aberg 8927c0f8e7 leon, gptimer: offset intnum with subtimer index
If separate interrupts are not available, then do not add the timer hardware
index number when configuring interrupt affinity.
2017-05-02 12:34:49 +02:00
Martin Aberg 256e083ffb leon, gptimer: fixed probing separate interrupts
Probing of separate interrupts was done by storing the GPTIMER_CFG_SI bit. But
it was never actually stored since it is bit 8 and the datatype is 8-bit. Now
store the AND result as boolean value instead.
2017-05-02 12:34:49 +02:00
Javier Jalle 6234abe8bd leon, l4stat: Initial driver commit 2017-05-02 12:34:49 +02:00
Javier Jalle 21b3319f74 leon, ambapp: Added L4STAT driver to ambapp ids 2017-05-02 12:34:49 +02:00
Martin Aberg a8595605c2 leon, occan: Converted disable/enable to SMP locks
This commit updates the OCCAN driver locking mechanism:
1. Convert interrupt disable/enable to interrupt locks.
2. Make sure interrupt service routines use proper locking to deal with threads
running in parallel.
2017-05-02 12:34:48 +02:00