summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-06-29leon,tn-0018: work around GRLIB-TN-0018 erratasubmit/20200629Daniel Hellstrom
The errata is worked around in the kernel without requiring toolchain modifications. It is triggered the JMPL/RETT return from trap instruction sequence never generated by the compiler and. There are also other conditions that must must be true to trigger the errata, for example the instruction that the trap returns to has to be a JMPL instruction. The errata can only be triggered if certain data is corrected by ECC (inflicted by radiation), thus it can not be triggered under normal operation. For more information see: www.gaisler.com/notes Affected RTEMS target BSPs: * GR712RC * UT699 * UT700/699E The work around is enabled by defining __FIX_LEON3_TN0018 at build time. In general there are two approaches that the workaround uses: A) avoid ECC restarting the RETT instruction B) avoid returning from trap to a JMPL instruction Where A) comes at a higher performance cost than B), so B) is used where posssible. B) can be achived for certain returns from trap handlers if trap entry is controlled by assembly, such as system calls. A) A special JMPL/RETT sequence where instruction cache is disabled temporarily to avoid RETT containing ECC errors, and reading of RETT source registers to "clean" them from incorrect ECC just before RETT is executed. B) The work around prevents JMPL after system calls (TA instruction) and modifies assembly code on return from traps jumping back to application code. Note that for some traps the trapped instruction is always re-executed and can therefore not trigger the errata, for example the SAVE instruction causing window overflow or an float instruction causing FPU disabled trap. RTEMS SPARC traps workaround implementation: NAME NOTE TRAP COMMENT * window overflow 1 - 0x05 always returns to a SAVE * window underflow 1 - 0x06 always returns to a RESTORE * interrupt traps 2 - 0x10..1f special rett sequence workaround * syscall 3 - 0x80 shutdown system - never returns * ABI flush windows 2 - 0x83 special rett sequence workaround * syscall_irqdis 4 - 0x89 * syscall_irqen 4 - 0x8A * syscall_irqdis_fp 1 - 0x8B always jumps back to FP instruction * syscall_lazy_fp_switch 5 - 0x04 A) jumps back to FP instruction, or to B) _Internal_error() starting with SAVE Notes: 1) no workaround needed because trap always returns to non-JMPL instruction 2) workaround implemented by special rett sequence 3) no workaround needed because system call never returns 4) workaround implemented by inserting NOP in system call generation. Thus fall into 1) when workaround is enabled and no trap handler fix needed. 5) trap handler branches into both 1) and returning to _Internal_error() which starts with a SAVE and besides since it shuts down the system that RETT should never be in cache (only executed once) so fix not necessary in this case. Any custom trap handlers may also have to be updated. To simplify that, helper work around assembly code in macros are available in a separate include file <libcpu/grlib-tn-0018.h>.
2020-06-29sparc,leon: avoid triggering LEON3FT errata TN-0009Daniel Hellstrom
2020-06-29sparc,leon: avoid triggering TN-0009 bad sequenceDaniel Hellstrom
2020-06-29grlib,grspw_pkt: correct link state enum numberingDaniel Hellstrom
Not used by the driver itself, but shuold be correct if used by application.
2020-06-29leon, l2cache: prevent unused diagnostic accessMartin Aberg
2020-06-29leon, ahbstat: register definitions for AHBSTAT version 1Martin Aberg
2020-06-29leon, grspw_router: added router_port_link_div()Martin Aberg
Allows user to set SpaceWire run clock divisor for an individual port.
2020-06-29sparc: fix bad register alignment for 64 bit storeDaniel Hellstrom
2020-06-29leon: restart and load timer counter at initializationDaniel Hellstrom
Without this smp05 and smpthreadlife01 tests may fail depending on how the boot loader initialized the GPTIMER. Before the time counter stopped counting when reaching zero, but tests could work since it could take 2^32 us before stopping. The timer driver will potentially overwrite this, but it happens later due to the initialization order having RTEMS_SYSINIT_CPU_COUNTER very early.
2020-06-29leon,ckinit: avoid assuming 1MHz timer pre-scaler clockDaniel Hellstrom
2020-06-29leon3: avoid dependency on apbuart/timer driverDaniel Hellstrom
Moves drvmgr_drivers[] from amba.c to a separate file in order to avoid the dependecy on APBUART/GPTIMER drivers. This has an effect when user configured not to use timer or uart in their project.
2020-06-29leon,greth: added support for variable sized descriptor table sizesDaniel Hellstrom
The descriptor table size is equal to its alignment and set when configuring the HW IP through VHDL generics. This SW patch simply probes the HW how large the RX/TX descriptor tables are and adjusts accordingly. The number of descriptors actual used are controlled by other settings (rxDescs and txDescs) controlled by the user.
2020-06-29leon,grcan: split out GRCAN non-FD specific support in separate fileDaniel Hellstrom
2020-06-29leon,grcanfd: split out GRCANFD specific support in separate fileDaniel Hellstrom
2020-06-29leon,grcan: added support for GRCANFDDaniel Hellstrom
The new GRCAN_FD IP supports CAN FD standard and is mostly backwards compatible with GRCAN SW interface. The GRCAN driver have been extended to support the GRCANFD IP using the same driver. Additional functions have been added that uses a new CAN FD frame format and read/write/baud-rate functions that supports both GRCANFD and GRCAN. To keep the SW API fully backwards compatible with GRCAN, the old functions remain.
2020-06-29grlib: added 64-bit read no-cache functionDaniel Hellstrom
2020-06-29leon,occan: use common CAN baud-rate calculation routineDaniel Hellstrom
2020-06-29leon,grcan: use common CAN baud-rate calculation routineDaniel Hellstrom
2020-06-29leon,can: introduce common CAN baud-rate calculation functionDaniel Hellstrom
Reimplemented the baud-rate algorithm from scratch to cope with GRCAN, GRCANFD and OC_CAN devices.
2020-06-29grlib,ambapp: added new IP core IDsDaniel Hellstrom
2020-06-29leon,grspw: fix for SET_PACKET_SIZEDaniel Hellstrom
When the DMA table has been allocated dynamically, the IOCTL_SET_PACKETSIZE will trigger an issue where pDev->rx and pDev->tx are not updated with the new DMA tables base address. Instead the old pointers are used. There is no point in reallocting the DMA tables because there is no configuration option to it. Therefore the DMA tables allocation is moved to a separate function never called from SET_PACKETSIZE.
2020-06-29leon,gr1553b: Only align allocated memory. Verify alignment of memory.Arvid Bjorkengren
2020-06-29leon,gr1553b: set codec versionArvid Bjorkengren
This is enables the updated codec for GR740 and is backwards compatible with all other versions of the IP.
2020-06-29leon,gr1553rt: Fixed spinlock unlockArvid Bjorkengren
2020-06-29leon,gr1553rt: Fixed memory leakArvid Bjorkengren
2020-06-26sparc: Remove sequences that the B2BST scan script warns aboutDaniel Cederman
2020-06-23psxtmtests: Fix test namesHEADmasterSebastian Huber
Tests PSXTMCOND 08, 09, and 10 had the same test name.
2020-06-18rtems: Remove RTEMS_MP_NOT_CONFIGURED errorSebastian Huber
Some objects can be created with a local or global scope in a multiprocessing network. In non-multiprocessing configurations setting the scope to local or global had no effect since such a system can be viewed as a multiprocessing network with just one node. One and all nodes is the same in such a network. However, if multiprocessing was configured, creation of a global object in a single node network resulted in an RTEMS_MP_NOT_CONFIGURED error. Remove this error condition for symmetry to the non-multiprocessing setup. This is in line with the task affinity behaviour in SMP systems. Update #4005.
2020-06-18i386/pc: Initialise the printk serial port on first useChris Johns
2020-06-17bsps/i386/pc386/start/*.S: Remove space before tabJoel Sherrill
2020-06-11bsp/pc386: Disable interrupt nesting for job handlerJan Sommer
- Fixes timeout for smpipi01 where: + Main thread sends perform jobs to worker cpu while it is already performing jobs + Interrupt on worker cpu performs jobs, but with empty job list + Worker cpu continues to execut previous job and adds new job list to itself, which is never performed, since the interrupt has already been handled + Main thread blocks forever on barrier D
2020-06-11smpsignal01: Change state before sending the signalJan Sommer
The signal handler of the consumer might start executing before rtems_signal_send of the producer returns. Therefore change the state to SIG_1_SENT before sending the signal.
2020-06-11bsps/pc386: Separate smp API functions. Makes smpfatal08 linkJan Sommer
2020-06-11bsps/pc386: Fix Clock_isr for SMPJan Sommer
- Do not forward Clock_isr through Clock_driver_support_at_tick as this will cause every processor to send IPIs with Clock_isr therby creating an infinie loop - Instead the processor handling the clock interrupt causes all other processors to call rtems_timecounter_tick to update their tick count
2020-06-11bsp/pc386: Define interrupt stack frame for smpJan Sommer
- Defines CPU_Interrupt_frame in cpu_impl.h - Updates isq_asm.S to save/restore registers in matching order to interrupt frame
2020-06-11bsp/pc386: Update context switch and restoreJan Sommer
Uses similar flow in cpu_asm.S for i386 as for arm.
2020-06-11bsp/pc386: Update GDT to work for SMPJan Sommer
Create a GS segment in the GDT for each processor for storing TLS. This makes the GDT in startAP.S obsolete as all processors now share the same GDT, which is passed to each AP at startup. The correct segment for each processor is calculated in cpu_asm.S. Update #3335
2020-06-11bsp/pc386: Turn start16.S into a startAP.SJan Sommer
start16.S is now only used for SMP configurations to start the application processors. This commit removes all unnecessary parts for this job, i.e. video conssole initalisation, A20 gate activation and all non-AP related code. Update #3335
2020-06-11bsp/pc386: Fix Makefile for building with SMPJan Sommer
2020-06-06tests for fenv.h functionsEshan dhawan
added tests for fesetexeptflag(), fegetexeptflag(), fegetround(), fesetround(). In the test fegetround() does not return any flag other then FE_TONEAREST in tests. This is probably due to soft float. The test complies successfully and returns assert at fegetround() Other tests run without any errors tested on RISCV/rv32imac The test prints nothing if runs successfully. updates #2971 Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
2020-05-27arm: Fix ARMv7-M exception handlerSebastian Huber
Store the stack pointer of the exception context to the exception frame. Close #3987.
2020-05-12posix: Get real priority in pthread_getattr_np()Sebastian Huber
This is in line with pthread_setschedparam() and pthread_getschedparam(). Update #2514.
2020-05-08libtests/tar01: Remove files of tar01.tar archiveSebastian Huber
Update #3968.
2020-05-07termios: Replace rtems_termios_isig_status_codeSebastian Huber
Merge the rtems_termios_isig_status_code and rtems_termios_iproc_status_code enums into a single rtems_termios_iproc_status_code which is now a part of the API. Simplify rtems_termios_posix_isig_handler() to avoid unreachable code. Close #3800.
2020-05-07libtests/tar0[12]: Add tar archiveSebastian Huber
Do not generate the test tar archive on the host computer since not all file systems support symbolic links. Close #3968.
2020-05-06testsuite: Add expected-fail to beagleboneblackChris Johns
Updates #2962
2020-05-06testsuite: Add expected-fail to xilinx's zedboard, a9_qemu, zc702 and zc706Chris Johns
Updates #2962
2020-05-06testsuite: Add expected-fail to psimChris Johns
Updates #2962
2020-05-06libdl: Add allocator check scriptChris Johns
Use with the trace outout to check for allocation leaks.
2020-05-06testsuite: Add expected-fail to erc32, leon2, and leon3 BSPsChris Johns
Updates #2962