summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc (follow)
Commit message (Collapse)AuthorAgeFilesLines
* bsps/sparc: Set best baud in APBUART driverSebastian Huber2014-07-091-0/+14
| | | | | This prevents failures of all tests using rtems_shell_wait_for_input(), e.g. capture, termios, pppd, etc.
* bsps/sparc: Move APBUART printk supportChristian Mauderer2014-07-094-70/+70
|
* bsps/sparc: Add and use shared APBUART consoleSebastian Huber2014-07-095-325/+315
| | | | | | Move the APBUART console driver support to the shared SPARC area so that it can be reused by other BSPs. Only the console driver initialization is now BSP specific.
* score: PR2183: Fix context switch on SMPSebastian Huber2014-07-041-8/+49
| | | | | | | | Fix context switch on SMP for ARM, PowerPC and SPARC. Atomically test and set the is executing indicator of the heir context to ensure that at most one processor uses the heir context. Break the busy wait loop also due to heir updates.
* bsps/sparc: Reduce copy and pasteSebastian Huber2014-07-015-58/+28
|
* LEON3: devfs free nodes must be sizedDaniel Hellstrom2014-06-301-0/+3
| | | | | | | | | .. according to the maximum number of termios ports which is 8. Since LEON3 uses PnP to find how many UARTs there are present we must make sure worst case work. The current maximum of 4 free nodes caused for example the GR712RC with its 6 UARTs to fail during devfs02 test.
* LEON3: fix console close handlingDaniel Hellstrom2014-06-301-3/+3
| | | | | | On SMP rtems_interrupt_lock_context must be used. Most tests fail with a NULL pointer exception when exiting, except on NGMP where main memory is at 0x00000000.
* LEON2: enable exception prinout by defaultDaniel Hellstrom2014-06-051-1/+1
|
* LEON3: enable exception prinout by defaultDaniel Hellstrom2014-06-051-1/+1
|
* score/sparc: Add support for paravirtualizationChristian Mauderer2014-06-035-1/+40
| | | | | | | Guest systems in paravirtualization environments run usually in user mode. Thus it is not possible to directly access the PSR and TBR registers. Use functions instead of inline assembler to access these registers if RTEMS_PARAVIRT is defined.
* SPARC: syscall optimizations and PSR-write fixDaniel Hellstrom2014-05-281-1/+10
| | | | | | | | | | | | | | | The last optimization missed was incorrect in regards to PSR write instruction delay must be 3 instructions. New optimizations: * align to 32-byte cache line. * rearrange code into three "blocks" of 4 instructions that is executed by syscall 2 and 3. This is to optimize for 16/32 byte cache lines. * use delay-slot instruction in trap table to reduce by one instruction. * use the fact that "wr %PSR" implements XOR to reduce by one instruction.
* LEON3: coding style clean bsp_irq_fixup()Daniel Hellstrom2014-05-281-9/+9
|
* LEON3: add support for IRQ16..31 for CPU!=0Daniel Hellstrom2014-05-281-2/+3
|
* bsps/sparc: Change tabs to spaces.Daniel Cederman2014-05-2718-311/+309
|
* bsps/sparc: Add copyright and license informationDaniel Cederman2014-05-2720-38/+157
|
* bsps/sparc: Make lines in SPARC BSPs adhere to 80 character limit.Daniel Cederman2014-05-2721-183/+292
|
* bsps/sparc: Fix BSS initializationSebastian Huber2014-05-141-2/+0
| | | | | | | | Use __bss_start available via %g2 to clear the BSS section. The usage of _edata resulted in a copy of [_edata, __bss_start) from ROM to RAM and then a clear to zero of this area. Clear now only [__bss_start, _end).
* bsps/sparc: Fix data copy in start procedureSebastian Huber2014-05-141-9/+9
| | | | | | Use the register %g4 for the data content since it must be an even numbered register due to the std/ldd. Use the register %g2 for the BSS start address, so that it can be later re-used for the BSS zero loop.
* bsps: Use bsp_start_on_secondary_processor()Sebastian Huber2014-05-123-10/+6
| | | | Use a standard function for startup on secondary processors.
* bsps: Use standard file name for BSP supportSebastian Huber2014-05-125-27/+12
|
* bsp/leon3: Delete unused functionSebastian Huber2014-05-121-5/+0
|
* bsps/sparc: Move flags to grlib headerChristian Mauderer2014-05-125-10/+14
| | | | This enables re-use for other BSPs
* score: Fix CPU context usage on SMPSebastian Huber2014-05-081-3/+3
| | | | | | | | | | We must not alter the is executing indicator in _CPU_Context_Initialize() since this would cause an invalid state during a self restart. The is executing indicator must be valid at creation time since otherwise _Thread_Kill_zombies() uses an undefined value for not started threads. This could result in a system life lock.
* score: Implement forced thread migrationSebastian Huber2014-05-071-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation of task migration in RTEMS has some implications with respect to the interrupt latency. It is crucial to preserve the system invariant that a task can execute on at most one processor in the system at a time. This is accomplished with a boolean indicator in the task context. The processor architecture specific low-level task context switch code will mark that a task context is no longer executing and waits that the heir context stopped execution before it restores the heir context and resumes execution of the heir task. So there is one point in time in which a processor is without a task. This is essential to avoid cyclic dependencies in case multiple tasks migrate at once. Otherwise some supervising entity is necessary to prevent life-locks. Such a global supervisor would lead to scalability problems so this approach is not used. Currently the thread dispatch is performed with interrupts disabled. So in case the heir task is currently executing on another processor then this prolongs the time of disabled interrupts since one processor has to wait for another processor to make progress. It is difficult to avoid this issue with the interrupt latency since interrupts normally store the context of the interrupted task on its stack. In case a task is marked as not executing we must not use its task stack to store such an interrupt context. We cannot use the heir stack before it stopped execution on another processor. So if we enable interrupts during this transition we have to provide an alternative task independent stack for this time frame. This issue needs further investigation.
* score: Statically initialize _ISR_Vector_tableSebastian Huber2014-04-291-1/+1
|
* sparc: Add _CPU_Get_current_per_CPU_control()Sebastian Huber2014-04-282-60/+33
| | | | | | | | | | | | | | | | Use register g6 for the per-CPU control of the current processor. The register g6 is reserved for the operating system by the SPARC ABI. On Linux register g6 is used for a similar purpose with the same method since 1996. The register g6 must be initialized during system startup and then must remain unchanged. Since the per-CPU control is used in all critical sections of the operating system, this is a performance optimization for the operating system core procedures. An additional benefit is that the low-level context switch and interrupt processing code is now identical on non-SMP and SMP configurations.
* sparc: Optimize context switchSebastian Huber2014-04-281-4/+2
| | | | | | The registers g2 through g4 are reserved for applications. GCC uses them as volatile registers by default. So they are treated like volatile registers in RTEMS as well.
* bsps: Fix TLS support in linker command filesSebastian Huber2014-04-221-1/+3
| | | | | The TLS section symbols had wrong values in case of an empty TLS data section and a nonempty TLS BSS section.
* score: SMP initialization changesSebastian Huber2014-04-141-30/+20
| | | | | | | | | | | | | | | | | Add and use _CPU_SMP_Start_processor(). Add and use _CPU_SMP_Finalize_initialization(). This makes most _CPU_SMP_Initialize() functions a bit simpler since we can calculate the minimum value of the count of processors requested by the application configuration and the count of physically or virtually available processors in the high-level code. The CPU port has now the ability to signal a processor start failure. With the support for clustered/partitioned scheduling the presence of particular processors can be configured to be optional or mandatory. There will be a fatal error only in case mandatory processors are not present. The CPU port may use a timeout to monitor the start of a processor.
* sparc: Use __leon__ multilib defineSebastian Huber2014-04-141-1/+2
|
* rtems: Rename rtems_smp_get_current_processor()Sebastian Huber2014-04-111-1/+1
| | | | | | | Rename rtems_smp_get_current_processor() in rtems_get_current_processor(). Make rtems_get_current_processor() a function in uni-processor configurations to enable ABI compatibility with SMP configurations.
* rtems: Rename rtems_smp_get_processor_count()Sebastian Huber2014-04-111-1/+1
| | | | | | Rename rtems_smp_get_processor_count() in rtems_get_processor_count(). Make rtems_get_processor_count() a function in uni-processor configurations to enable ABI compatibility with SMP configurations.
* sparc/shared/.../linkcmds.base: Correct C++ supportJoel Sherrill2014-04-041-7/+6
| | | | Add KEEP() for .eh_frame*, .ctor*, and .dtor*.
* leon2 ckinit.c, console.c: Comment clean upJoel Sherrill2014-04-032-26/+5
|
* leon2/Makefile.am: Change to one file per lineJoel Sherrill2014-04-031-7/+16
|
* erc32/Makefile.am: Change to one file per lineJoel Sherrill2014-04-031-7/+17
|
* LEON3: UT699 and GR712 sleep-mode d-cache fixDaniel Cederman2014-03-311-5/+3
| | | | See errata of respective chip. Some code-cleanup as well.
* bsps/sparc: Make local functions for amba plug&play static.Daniel Cederman2014-03-245-12/+10
|
* bsps/sparc: Add common gnat handler function prototype.Daniel Cederman2014-03-2412-6/+42
| | | | Moved prototype for __gnat_install_handler and __gnat_install_handler_common to common header file. Placed header file in bsp namespace.
* greth: Make local functions static, remove overflow and correct printf call.Daniel Cederman2014-03-211-1/+1
|
* bsps/sparc: Change asm to __asm__ to compile with -pedantic.Daniel Cederman2014-03-213-6/+6
|
* bsps/sparc: Make spurious trap handler function static.Daniel Cederman2014-03-213-3/+3
|
* bsps/sparc: Make local functions static.Daniel Cederman2014-03-219-4/+32
| | | | | | | The PCI and RASTA versions of the uart, spacewire and 1553 drivers directly includes the c-file of the standard versions of the drivers, but uses a macro to change the name of the driver register function. When the standard version is used this function should be global, when it is included as part of the PCI and RASTA versions it should be local and static.
* smc91111: Move driver attach prototype to header file.Daniel Cederman2014-03-212-8/+0
| | | | Also signal to compiler that the start variable in lan91cxx_recv is only used when debugging.
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-2195-95/+95
|
* bsps/leon3: Add interrupt delay profiling supportSebastian Huber2014-03-141-1/+38
|
* sparc: Add support for interrupt profilingSebastian Huber2014-03-141-2/+23
|
* score: Add SMP lock profiling supportSebastian Huber2014-03-141-1/+2
|
* score: Add local context to SMP lock APISebastian Huber2014-03-111-16/+16
| | | | | | | | | | | Add a local context structure to the SMP lock API for acquire and release pairs. This context can be used to store the ISR level and profiling information. It may be later used to enable more sophisticated lock algorithms, e.g. MCS locks. There is only one lock that cannot be used with a local context. This is the per-CPU lock since here we would have to transfer the local context through a context switch which is very complicated.
* bsp/leon3: Use interrupt timestamping counterSebastian Huber2014-03-102-28/+73
| | | | | Use the interrupt controller timestamping counter for the CPU counter if available since it runs with a high frequency.