| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.
This has at least seven problems:
* The make preinstall step itself needs time and disk space.
* Errors in header files show up in the build tree copy. This makes it
hard for editors to open the right file to fix the error.
* There is no clear relationship between source and build tree header
files. This makes an audit of the build process difficult.
* The visibility of all header files in the build tree makes it
difficult to enforce API barriers. For example it is discouraged to
use BSP-specifics in the cpukit.
* An introduction of a new build system is difficult.
* Include paths specified by the -B option are system headers. This
may suppress warnings.
* The parallel build had sporadic failures on some hosts.
This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.
The new cpukit include directories are:
* cpukit/include
* cpukit/score/cpu/@RTEMS_CPU@/include
* cpukit/libnetworking
The new BSP include directories are:
* bsps/include
* bsps/@RTEMS_CPU@/include
* bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include
There are build tree include directories for generated files.
The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.
The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.
Update #3254.
|
|
|
|
|
|
| |
According to data sheet bit 31 in ASR22 must be written with a zero
to start the up-counter. GRMON starts the up-counter for us. This
patch is important when running in "flight" from ROM without GRMON.
|
|
|
|
|
|
| |
Prefix BSP specific symbols with BSP name:
dbg_uart -> leon3_debug_uart
debug_uart_index -> leon3_debug_uart_index
|
| |
|
|
|
|
|
| |
Rework CPU counter support to enable use of the GR740 up-counter via
%asr22 and %asr23.
|
| |
|
|
|
|
| |
Update #2554.
|
| |
|
|
|
|
| |
To be merged with "leon3: make timer initialization configurable"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch reimplements the console driver of the LEON3 BSP, it
has split up the console driver in two parts: Console driver and
UART driver. Before the only UART supported was APBUART and only
on-chip APBUARTs found during startup. However splitting the
driver in two allows any UART interface to reuse the termios
attach code of the console driver, pratically this has always
been a problem when discovering APBUARTs after startup for
example the PCI board GR-RASTA-IO has APBUARTs and must wait
until after PCI has been setup.
Since the only current driver that supports the new console
driver uses the Driver Manager, the new console driver is
only enabled when Driver Manager is initialized during startup.
The new APBUART driver supports:
* polling mode
* interrupt mode
* task-driven mode
* set UART attributes
* read UART attributes (system console inherit settings from
boot loader)
* Driver manager for finding/initialization of the hardware
|
|
|
|
|
|
|
|
|
|
|
| |
Its now possible to select which timer core will be used for
system clock timer and to control the timer prescaler that
affects all timer instances on that timer core.
The timer and interrupt controller AMBA devices are exported
to make it possible for other code to get detailed information.
For example the frequency of the timer and interrupt controller
is required by the cpucounter support.
|
|
|
|
|
| |
Condition needs to be inverted, as a 1 in the mask register means
that the interrupt is enabled. Solves ticket #1958 in trac.
|
|
|
|
| |
Check that data cache snooping exists and is enabled on all cores.
|
|
|
|
|
|
| |
The LEON2 and ERC32 maps the new macros to CPU0 since they do not
support SMP. With the LEON3 a specific CPU's interrupt controller
registers can be modified using macros.
|
|
|
|
|
|
|
|
| |
The LEON3_MP_IRQ define is used to pick the IRQ to be used by the
shared memory driver and for inter-processor interrupts. On some LEON3
systems, for example the GR712RC, the default value of 14 is not suitable.
To make this value configurable from the application, it is replaced with
a weakly linked variable that can be overridden from the application.
|
|
|
|
|
|
| |
The flush instruction on LEON flushes both the data and the instruction
cache. Flushing of just the instruction cache can be done by setting
the "flush instruction cache" bit in the cache control register.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Use a standard function for startup on secondary processors.
|
|
|
|
| |
This enables re-use for other BSPs
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Use the interrupt controller timestamping counter for the CPU counter if
available since it runs with a high frequency.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The SPARC processors supported by RTEMS have no built-in CPU counter
support. We have to use some hardware counter module for this purpose.
The BSP must provide a 32-bit register which contains the current CPU
counter value and a function for the difference calculation. It can use
for example the GPTIMER instance used for the clock driver.
|
| |
|
| |
|
|
|
|
|
| |
Disabling of interrupts is not enough to ensure mutual exclusion on SMP
configurations.
|
| |
|
|
|
|
| |
Add _LEON3_Get_current_processor().
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Do not return a status.
|
|
|
|
|
|
|
| |
Avoid usage of the same stack area by multiple secondary processors at
the same time.
Avoid magic delay loops.
|
|
|
|
|
| |
Move declaration of global variables and functions to <leon.h> header
file. Make several global variables and functions static.
|
|
|
|
| |
Add doxygen to the bsp.h, tm27.h, amba.h and leon.h files
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some register layout definitions for LEON3 reside in ambapp.h which
does not really has anything to do with device registers. The
register structures has been incorrectly named LEON3_*, the cores
are not only used on LEON3 but on LEON4 and perhaps on LEON5 when
that day comes. Some structures has been renamed according to the
GRLIB core name instead, which CPU that actually use it is not
relevant. Drivers has been updated with the new names.
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
|
|
|
|
| |
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The implementation use IRQ number instead of vector number since
some IRQs does not have a unique vector, for example the extended
interrupts all enter the same trap vector entry.
Added support for the LEON3 extended interrupt controller when using
the shared IRQ layer.
ERC32 patches untested.
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Regenerate
|
|
|
|
|
|
| |
Removed old LEON2 definitions never used in LEON3 leon.h.
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When data cache snooping is not present the cache needs
flushing, the SPARC LEON CPUs does not have to ability
to flush individual cache rows and flushing all cache is
expensive. Instead the LDA instruction is used to force
cache miss on individual loads during the IP-align copy
operation required anyway.
GRETH GBIT non-snooping systems are still unsupported,
since it use zero-copy (can deal with unaligned DMA).
Let the bsp.h select if the GRETH driver is supported.
Currently only the LEON2/LEON3 platforms BSPs builds the
driver.
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
|
|
|
|
|
|
|
|
| |
Jennifer Averett <jennifer.averett@OARcorp.com>
PR 1801/bsps
* Makefile.am, include/leon.h: Add SMP support to LEON3 BSP.
* smp/getcpuid.c, smp/smp_leon3.c: New files.
|
|
|
|
|
|
|
|
| |
PR 1748/bsps
* clock/ckinit.c, include/leon.h: When the clock tick generates an
interrupt WHILE we have interrupts disabled doing a get TOD or
uptime, the get nanoseconds handler was returning a bogusly large
number.
|
| |
|