Commit Graph

29758 Commits

Author SHA1 Message Date
James
fc718cb83a Updated xilinx_zynq_a9_qemu bsp README instructions. 2016-10-25 11:01:41 -04:00
Sebastian Huber
f94155b8ec bsps/sparc: Add interrupt controller registers 2016-10-19 00:22:57 +02:00
Sebastian Huber
93614125c5 bsp/leon3: Avoid implicit integer conversions 2016-10-19 00:21:21 +02:00
Alexander Krutwig
24fe2130d7 atsam: multiple messages on one cs low level 2016-10-17 14:48:43 +02:00
Pavel Pisa
dfcec5595f libchip/network/if_fxp.c: do not use rtems_interrupt_disable.
The single write to memory or ioport output are mostly
atomic operations already. The proper memory synchronization barrier
should be used around them to guarantee ordering (sync or eieio
on PowerPC for example) but because I have not found settable
portable primitive only compiler barrier is used.
It should be enough on x86 because the externally visible order
should be/is guaranteed to be preserved on x86 architecture.
2016-10-17 09:41:58 +02:00
Pavel Pisa
20625a581d bsps/i386: use Pentimum instructions for pc586 and pc686 builds.
When GCC option -march is not specifies i386-rtems toolchain
defaults to i386 architecture instruction set. It does not
provide atomic instructions which results in really inefficient
atomic_fetch_or even on UP build.

SMP build is broken with i386 set because libatomic and GCC
generate infinite loop for __atomic_fetch_add_4 used
in rtems_interrupt_lock_acquire

__atomic_fetch_add_4:
    push   %ebp
    mov    %esp,%ebp
    movl   $0x5,0x10(%ebp)
    pop    %ebp
    jmp    __atomic_fetch_add_4
2016-10-17 09:41:58 +02:00
Pavel Pisa
6b54dcbbef bsps/i386: replace global interrupt disable by SMP build supporting locking. 2016-10-17 09:41:58 +02:00
Sebastian Huber
f45ddeea12 bsp/atsamv: Fix typo 2016-10-13 07:51:55 +02:00
Sebastian Huber
f5eff007a4 score: Rename RTEMS_OBFUSCATE_POINTER()
The inline asm construct works for everything which fits into a
register.

Close #2790.
2016-10-13 07:15:10 +02:00
Chris Johns
826f3afaf3 libmisc/xz: Add xz decompression.
Add support to untar XZ compressed files.
2016-10-13 13:11:40 +11:00
Sebastian Huber
be573185e6 score: More robust linker sets
Update #2408.
Update #2790.
2016-10-12 11:12:40 +02:00
Sebastian Huber
97eaefd493 score: Add RTEMS_OBFUSCATE_POINTER()
Update #2790.
2016-10-12 10:58:27 +02:00
Sebastian Huber
2ba0c0358d score: Simplify check for migrations 2016-10-12 10:37:23 +02:00
Sebastian Huber
ed19002d84 smpschedaffinity05: Fix configuration 2016-10-12 10:37:23 +02:00
Pavel Pisa
facebbb28e bsps/i386: Separate variable for i8259 IRQs disable due to in progress state.
The global state of enabled and disabled interrupts has to hold
interrupts really disabled by drivers and system. If the state is
combined with interrupts temporarily disabled because they are
processed at given time then it is impossible to maintain state
by interrupt handlers in drivers.
2016-10-11 22:17:04 +02:00
Pavel Pisa
4745650797 pci.h add PCI_COMMAND_INTX_DISABLE definition. 2016-10-11 22:16:58 +02:00
Sebastian Huber
271690eb88 score: Enhance _SMP_barrier_Wait()
Indicate which processor released the barrier.  Similar to
pthread_barrier_wait().
2016-10-11 14:44:47 +02:00
Sebastian Huber
282de10828 bsp/qoriq: Add GPIO register map 2016-10-11 10:42:36 +02:00
Sebastian Huber
00bac953f7 bsps/sparc: Support GR740 GPIO 2016-10-11 08:33:28 +02:00
Sebastian Huber
475faef538 tmfine01: Add self-contained mutex test case
This demonstrates the effect of false cache line sharing in case of
Classic mutexes.
2016-10-10 08:49:05 +02:00
Sebastian Huber
a899549ed2 bsp/atsam: Provide default buffer counts 2016-10-05 14:04:23 +02:00
Sebastian Huber
10eedb9fa6 bsp/atsam: Fix PHY detection 2016-10-05 14:04:07 +02:00
Pavel Pisa
8714684129 score/arm: Correct logic to select 64 byte cache line maximum size for Cortex-A.
The use of actual cache line max bytes and minimum required alignment
in architecture but not-BSP dependent code could be problematic
because there exists even ARM instruction set implementations
with 128 byte line length and real maximum can be quite problematic
to say. But actually supported ARM BSPs should be OK with these values.
2016-10-04 23:30:22 +02:00
Pavel Pisa
89b4a5cc5f libdl/rtl-obj.c: synchronize cache should not depend on CPU_CACHE_LINE_BYTES.
Use of rtems_cache_get_maximal_line_size() is more descriptive
choice. The min/max data/instruction cache line size is not critical
there, value is used for optimization only to use single operation
for directly following sections.
2016-10-04 23:17:25 +02:00
Sebastian Huber
9b0445685b monitor: Support priority inheritance queues 2016-09-30 07:54:29 +02:00
Sebastian Huber
8797c76add score: Unify CORE mutex seize/surrender
Use the Thread_Control::resource_count for the no protocol mutexes.
Merge the no protocol and priority inherit CORE mutex seize/surrender
operations.
2016-09-27 15:23:00 +02:00
Sebastian Huber
4e02681b2f score: Simplify ISR lock name 2016-09-27 07:39:22 +02:00
Sebastian Huber
94d5b390e5 score: Simplify CORE mutex seize
Rename _CORE_mutex_Seize_no_protocol_slow() in _CORE_mutex_Seize_slow().
Remove previous _CORE_mutex_Seize_slow() since the protocol handling is
now done in the thread queue operations.
2016-09-27 07:39:03 +02:00
Sebastian Huber
f0115ab4a6 score: Fix warning 2016-09-27 07:38:53 +02:00
Sebastian Huber
938ee19c5a sptests/spsem03: Fix compile error 2016-09-23 10:14:54 +02:00
Sebastian Huber
8ace7ee42f bsp/mvme147*: Fix linker issue
The GNU linker does not allow a nonconstant expression for a region
length.
2016-09-23 08:41:58 +02:00
Sebastian Huber
bbe8833336 bsps/m68k: Add libatomic support to some bsp_specs
Update #2695.
2016-09-23 08:03:41 +02:00
Sebastian Huber
d6e58a0f14 bsps/m68k: Fix linker command file
Prevent garbage collection of interrupt vector table.
2016-09-23 06:57:12 +02:00
Sebastian Huber
9149c87ec7 score: Fix C/C++ compatibility issue
Only use CPU_Per_CPU_control if it contains at least one filed.  In GNU
C empty structures have a size of zero.  In C++ structures have a
non-zero size.  In case CPU_PER_CPU_CONTROL_SIZE is defined to zero,
then this structure is not used anymore.
2016-09-23 06:57:03 +02:00
Pavel Pisa
425f6cfa11 arm/tms570: document BSP setup with included hardware initialization. 2016-09-22 09:56:06 +02:00
Pavel Pisa
aae17bf32d arm/tms570: update bootstrap generated preinstall.am 2016-09-22 09:51:31 +02:00
Pavel Pisa
98b6874031 arm/tms570: include TMS570_USE_HWINIT_STARTUP option to select bare metal startup and selftest. 2016-09-22 09:51:21 +02:00
Pavel Pisa
29430a3a10 arm/tms570: include hardware initialization and selftest based on Ti HalCoGen generated files.
The configuration is specific for TMS570LS3137 based HDK.
Pins configuration can be easily changed in

  rtems/c/src/lib/libbsp/arm/tms570/hwinit/init_pinmux.c

file.

The list tms570_selftest_par_list in the file

  rtems/c/src/lib/libbsp/arm/tms570/hwinit/bspstarthooks-hwinit.c

specifies peripherals which health status is examined
by parity self-test at BSP start-up. It can be easily
modified for other TMS570 family members variants same
as the selection of other tests in bspstarthooks-hwinit.c.
2016-09-22 09:50:59 +02:00
Pavel Pisa
5746f108bd arm/tms570: define base addresses of all TMS570LS3137 SPI interfaces.
Generated header file ti_herc/reg_spi.h contains complete registers
and fields set for Ti MibSPI peripheral.
Care has to be taken that only TMS570_SPI1, TMS570_SPI3 and TMS570_SPI5
are of this complete multibuffer type. TMS570_SPI2 and TMS570_SPI4
have substantial part of registers removed but else they are compatible.
2016-09-22 08:26:29 +02:00
Pavel Pisa
a396ed4778 bsps/arm: Export bsp_start_hook_0_done symbol from ARM start.S.
The symbol can be used by bsp_start_hook_0 when complete
RAM memory is initialization and overwritten during BSP
self-test. The test overwrites even memory used to store
return address / link register and regular resturn from
bsp_start_hook_0 is not possible then.
2016-09-22 08:26:13 +02:00
Pavel Pisa
4d3c866aec classic networking: adapt FXP driver to work with actual PCI and IRQ code.
Tested to work with QEMU provided Intel i82557b network controller emulation.

qemu-system-x86_64 -enable-kvm -kernel $APP_BINARY \
      -vga cirrus \
      -append "--console=/dev/com1" \
      -serial stdio \
      -net nic,vlan=1,macaddr=be:be:be:10:00:01,model=i82557b \
      -net tap,ifname=tap1,vlan=1,script=no,downscript=no
2016-09-21 10:24:59 +02:00
Sebastian Huber
f6142c19f1 score: Scheduler node awareness for thread queues
Maintain the priority of a thread for each scheduler instance via the
thread queue enqueue, extract, priority actions and surrender
operations.  This replaces the primitive priority boosting.

Update #2556.
2016-09-21 08:59:33 +02:00
Sebastian Huber
8123cae864 rtems: Add rtems_task_get_priority()
Update #2556.
Update #2784.
2016-09-21 08:59:33 +02:00
Sebastian Huber
6ae309ec85 smptests/smpmutex01: Use test case functions 2016-09-21 08:59:33 +02:00
Sebastian Huber
266d3835d8 score: Manage scheduler nodes via thread queues
Update #2556.
2016-09-21 08:59:32 +02:00
Sebastian Huber
5d6b211981 score: Add scheduler node table for each thread
Update #2556.
2016-09-21 08:59:32 +02:00
Sebastian Huber
300f6a481a score: Rework thread priority management
Add priority nodes which contribute to the overall thread priority.

The actual priority of a thread is now an aggregation of priority nodes.
The thread priority aggregation for the home scheduler instance of a
thread consists of at least one priority node, which is normally the
real priority of the thread.  The locking protocols (e.g. priority
ceiling and priority inheritance), rate-monotonic period objects and the
POSIX sporadic server add, change and remove priority nodes.

A thread changes its priority now immediately, e.g. priority changes are
not deferred until the thread releases its last resource.

Replace the _Thread_Change_priority() function with

 * _Thread_Priority_perform_actions(),
 * _Thread_Priority_add(),
 * _Thread_Priority_remove(),
 * _Thread_Priority_change(), and
 * _Thread_Priority_update().

Update #2412.
Update #2556.
2016-09-21 08:59:26 +02:00
Pavel Pisa
8c83cbcc96 classic networking: do not reference BSP_irq_enabled_at_i8259s which is no more available on i386.
This change is required to build RTEMS with classic "--enable-networking"
and link applications/tests which reference RTEMS_BSP_NETWORK_DRIVER_ATTACH.
2016-09-20 22:45:16 +02:00
Sebastian Huber
e814a233ed termios: Add IO control handler
Update #2785.
2016-09-19 07:52:34 +02:00
Sebastian Huber
55e0be3606 termios: Use IMFS nodes for new Termios devices
This makes the new Termios devices independent of device major/minor
numbers.  It enables BSP independent Termios device drivers which may
reside in the cpukit domain.  These drivers require an IMFS and do not
work with the device file system.  However, the device file system
should go away in the future.
2016-09-19 07:52:33 +02:00