Commit Graph

79 Commits

Author SHA1 Message Date
Sebastian Huber
350bba7a04 sparc: Add SPARC_INTERRUPT_SOURCE_TO_TRAP()
Update #4171.
2020-11-06 14:05:53 +01:00
Sebastian Huber
828114778d sparc: Add SPARC_INTERRUPT_TRAP_TO_SOURCE()
Update #4171.
2020-11-06 14:05:53 +01:00
Sebastian Huber
b7271f8c1e sparc: Add SPARC_IS_INTERRUPT_TRAP()
Update #4171.
2020-11-06 14:05:53 +01:00
Sebastian Huber
db94626bc3 bsp/leon3: Updat due to API changes 2020-10-26 15:10:05 +01:00
Sebastian Huber
f9c8e14dcb grlib: Add ambapp_common_info to derived types
This avoids a cast in DEV_TO_COMMON().
2020-10-16 07:07:19 +02:00
Sebastian Huber
d7a48e1b25 rtems: Improve RTEMS_NO_RETURN attribute
Provide RTEMS_NO_RETURN also in case RTEMS_DEBUG is defined to prevent errors
like this:

error: no return statement in function returning non-void [-Werror=return-type]

Use C11 and C++11 standard means to declare a no-return function.

Close #4122.
2020-10-10 14:00:37 +02:00
Sebastian Huber
e1a0e0c308 grlib: Add and use irqmp_has_timestamp()
Replace leon3_irqmp_has_timestamp() with irqmp_has_timestamp() and move
it to grlib.h.

Close #4128.
2020-10-10 14:00:37 +02:00
Sebastian Huber
d556af3605 bsps: Always install IPI in SMP configs
The inter-processor interrupt (IPI) may be used to process per-CPU jobs.
See for example the blocked handler in T_interrupt_test().

Update #3199.
2020-08-31 16:19:53 +02:00
Sebastian Huber
fe6191f91a bsps/leon3: Remove superfluous includes 2020-08-20 14:54:18 +02:00
Chris Johns
7d00247497 testsuite: Add expected-fail to erc32, leon2, and leon3 BSPs
Updates #2962
2020-05-06 18:39:05 +10:00
Sebastian Huber
0161b93d50 imfs: Replace devfs with an IMFS specialization
Add a simplified path evaluation function IMFS_eval_path_devfs() for a
device only IMFS configuration.

The code size can be further reduced by the application if it disables
the support for legacy IO drivers via:

  #define CONFIGURE_IMFS_DISABLE_MKNOD
  #define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE

Obsolete CONFIGURE_MAXIMUM_DEVICES.  Remove BSP_MAXIMUM_DEVICES.

Update #3894.
Update #3898.
2020-03-09 17:26:54 +01:00
Sebastian Huber
c344e5828c Use RTEMS_SYSINIT_ORDER_LAST_BUT_5
Use RTEMS_SYSINIT_ORDER_LAST_BUT_5 instead of RTEMS_SYSINIT_ORDER_LAST
to allow applications and support functions to place system
initialization handlers behind the standard handlers.

Update #3838.
2020-02-04 06:06:42 +01:00
Sebastian Huber
eea21eaca1 bsps: Rework work area initialization
The work area initialization was done by the BSP through
bsp_work_area_initialize(). This approach predated the system
initialization through the system initialization linker set. The
workspace and C program heap were unconditionally initialized.  The aim
is to support RTEMS application configurations which do not need the
workspace and C program heap.  In these configurations, the workspace
and C prgram heap should not get initialized.

Change all bsp_work_area_initialize() to implement _Memory_Get()
instead.  Move the dirty memory, sbrk(), per-CPU data, workspace, and
malloc() heap initialization into separate system initialization steps.
This makes it also easier to test the individual initialization steps.

This change adds a dependency to _Heap_Extend() to all BSPs.  This
dependency will be removed in a follow up change.

Update #3838.
2020-02-04 06:06:41 +01:00
Sebastian Huber
07e2eacf89 bsps: Remove uses of BSP_GET_WORK_AREA_DEBUG
The code covered by BSP_GET_WORK_AREA_DEBUG was basically dead code
since there was no normal way to activate it (e.g. via a BSP
configuration option).  A follow up patch will bring back this feature
through a CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION configuration option.

Update #3838.
2020-02-04 06:06:30 +01:00
Sebastian Huber
be3d697450 bsp/erc32: Improve pseudo-SMP support
Add support for _SMP_Send_message() to the own processor.  This is
required by the smpmulticast01 test program.
2019-10-01 09:55:07 +02:00
Sebastian Huber
f9219db2a9 rtems: Add rtems_scheduler_get_processor_maximum()
Add rtems_scheduler_get_processor_maximum() as a replacement for
rtems_get_processor_count(). The rtems_get_processor_count() is a bit
orphaned. Adopt it by the Scheduler Manager. The count is also
misleading, since the processor set may have gaps and the actual count
of online processors may be less than the value returned by
rtems_get_processor_count().

Update #3732.
2019-04-09 08:06:46 +02:00
Sebastian Huber
03c9f24061 rtems: Add rtems_scheduler_get_processor()
Add rtems_scheduler_get_processor() as a replacement for
rtems_get_current_processor(). The rtems_get_current_processor() is a
bit orphaned. Adopt it by the Scheduler Manager. This is in line with
the glibc sched_getcpu() function.

Deprecate rtems_get_current_processor().

Update #3731.
2019-04-09 08:06:46 +02:00
Joel Sherrill
6163ab2c01 erc32/start/setvec.c: Fix warning 2019-03-25 16:27:43 -05:00
Sebastian Huber
828276b081 bsps: Adjust shared Doxygen groups
Update #3706.
2019-03-08 07:42:54 +01:00
Sebastian Huber
c991eeeccc bsps: Adjust bsp.h Doxygen groups
Update #3706.
2019-03-08 07:42:54 +01:00
Sebastian Huber
212663bede bsps: Adjust architecture Doxygen groups
- Use CamelCase as it is not used in our C code.  Enables simple search and
   replace.

 - Prefix with "RTEMS" to aid deployment and integration.  It aids
   searching and sorting.

Update #3706.
2019-03-04 07:51:38 +01:00
Jiri Gaisler
411c29735d grlib: make apbuart driver independent of bsp
Update #3678.
2019-01-22 12:48:19 +01:00
Sebastian Huber
7eb606d393 grlib: Move source files
Update #3678.
2019-01-22 12:46:33 +01:00
Sebastian Huber
3172092576 grlib: Move header files
Update #3678.
2019-01-22 12:46:28 +01:00
Sebastian Huber
c05d7a9d17 bsps/sparc: Fix warnings 2018-12-21 21:43:54 +01:00
Sebastian Huber
75e1009f1e bsps/sparc: Fix typo 2018-12-21 21:43:54 +01:00
Sebastian Huber
11f3b9a535 bsps/sparc: Add grlib_malloc(), grlib_calloc()
This avoids a dependency to errno in device driver code.
2018-12-21 14:54:13 +01:00
Sebastian Huber
0a1f5df98e Simplify _CPU_Counter_difference()
In order to simplify the use of CPU counter values it is beneficial to
have monotonic increasing values within the range of the CPU counter
ticks data type, e.g. 32-bit unsigned integer.  This eases the use of
CPU counter timestamps in external tools which do not know the details
of the CPU counter hardware.  The CPU counter is the fastest way to get
a time on an RTEMS system.

Such a CPU counter may be also used as the timecounter.  Use it on SPARC
for this purpose to simplify the clock drivers.

Update #3456.
2018-12-07 14:22:01 +01:00
Sebastian Huber
2e8b5de2b2 bsp/leon2: Move printk() support
Avoid assert() in console_inbyte_nonblocking().

Do not poll forever in bsp_in_char().  This allows the caller to decide
what to do if no character is available.

This entangles some dependencies and fixes a spconfig02 test failure.
2018-12-05 13:06:07 +01:00
Marçal Comajoan Cara
0446f68056 Spelling and grammar fixes in source code comments (GCI 2018) 2018-12-04 15:12:53 -06:00
Sebastian Huber
fdcba406db bsp/leon3: Fix CPU counter frequency 2018-12-04 16:11:05 +01:00
Sebastian Huber
a7267241a9 bsps/sparc: Add and use <grlib_impl.h>
Reduce copy and paste.
2018-11-27 08:06:53 +01:00
Sebastian Huber
ff081aee72 score: Rename interrupt stack symbols
Rename

  * _Configuration_Interrupt_stack_area_begin in _ISR_Stack_area_begin,
  * _Configuration_Interrupt_stack_area_end in _ISR_Stack_area_end, and
  * _Configuration_Interrupt_stack_size in _ISR_Stack_size.

Move definitions to <rtems/score/isr.h>.  The new names are considerable
shorter and in the right namespace.

Update #3459.
2018-11-08 08:09:20 +01:00
Daniel Hellstrom
dc32b6aa08 leon: do not use -mfix-{device} with Clang
Clang do not support -mfix-gr712rc, -mfix-ut700 and -mfix-ut699.
Therefore we adjust the CPU_CFLAGS to remove these when compiling with
Clang. Instead use
  GR712RC:      -mcpu=gr712rc
  GR740:        -mcpu=gr740
  UT699/UT700:  Not currently supported by clang, use LEON3 BSP.
2018-10-09 12:36:41 +02:00
Javier Jalle
6dc0b5f4c5 leon, spwtdp: Initial driver commit 2018-10-09 12:36:41 +02:00
Sebastian Huber
f004b2b8dc Use rtems_task_exit()
Update #3530.
Update #3533.
2018-10-02 10:22:15 +02:00
Daniel Hellstrom
9ed109cc7f leon: remove warning missing string.h 2018-09-20 12:48:32 +02:00
Martin Aberg
c2011b474e leon, grspw_pkt: support CCSDS/ISO16 data CRC
When the CCSDS/CCITT CRC-16 and 16-bit ISO-checksum logic is available in
GRSPW2, the DCRCT field is used to determine how to generate the CRC/checksum
code. grspw_hw_sup has been extended with the field ccsds_crc
2018-09-20 12:48:32 +02:00
Daniel Hellstrom
0aae151eba leon,grspw_pkt: protect TX descriptor from bad input (hdrlen) 2018-09-20 12:48:32 +02:00
Martin Aberg
ddc95ab04b leon, l2cache: workaround for scrubber
This is a workaround for a L2CACHE scrubber corner case described in GR740
User's Manual, Version 1.10, section 43.2.30.

The issue affects some version of the L2CACHE. However, since the performance
impact of the workaround is marginal, special device probing logic has been
avoided. In addition, this update does not affect users who enable the L2CACHE
and scrubber before RTEMS is started.
2018-09-20 12:48:32 +02:00
Daniel Hellstrom
56a7540cd8 leon: substitute printf with printk in driver init 2018-09-20 12:48:32 +02:00
Daniel Hellstrom
68a0012470 leon3, ckinit: avoid unsued code warnings when drvmgr is enabled 2018-09-20 12:48:32 +02:00
Daniel Hellstrom
d952d733fe leon3: fix warning when SMP is enabled 2018-09-20 12:48:32 +02:00
Sebastian Huber
b3cf79b9c4 bsp/leon3: Fix typo which breaks the CPU counter
Update #3456.
2018-09-20 07:27:28 +02:00
Sebastian Huber
cb682532cf network: Use kernel/user space header files
Add and use <machine/rtems-bsd-kernel-space.h> and
<machine/rtems-bsd-user-space.h> similar to the libbsd to avoid command
line defines and defines scattered throught the code base.

Simplify cpukit/libnetworking/Makefile.am.

Update #3375.
2018-09-10 10:38:44 +02:00
Daniel Hellstrom
408fad38f8 leon,grspw_pkt: remove incorrect comment on SMP not being tested
To clarify, SMP with GRSWP_PKT driver API has been extended to
take advantage of multi-core, is now SMP-safe, and has been tested
on GR740.
2018-08-24 15:51:39 +02:00
Daniel Hellstrom
aea3134ea9 leon,apbuart: replace termios c_cflag & CBAUD with c_{i,o}speed
ince some time RTEMS started to use the termios c_ispeed and
c_ospeed variables in the termios struct to hold the UART baudrate.
However the APBUART driver still uses the old c_cflag sometimes
causing other UART parameters to get overwritten, for example the
partiy setting no mapped to the same bits as the old CBAUD mask.

At the same time the RTEMS primitievs for setting/reading
c_{i,o}speed is now used.
2018-08-24 15:51:39 +02:00
Daniel Hellstrom
243ddb52b3 leon,greth: enable MAC filtering (promiscous mode, multicast)
It enabled promiscous mode or sets the multicast filter according
to the configuration and parameters to ioctl(SIOCSIFFLAGS),
ioctl(SIOCADDMULTI) and ioctl(SIOCDELMULTI).
On SIOCADDMULTI/SIOCDELMULTI requests the greth ioctl calls the
Ethernet helper functions ether_addmulti()/ether_delmulti() which
tells the greth driver when its required to update the MAC multicast
filtering.

The interface notifies support for multicast by setting IFF_MULTICAST.

The GRETH has two registers which contains a bit-mask of allowed MAC
addresses. The incomming MAC address is CRC:ed and the CRC is used as
an index into the bit-mask to determine to allow or drop the frame.
2018-08-24 15:51:39 +02:00
Daniel Hellstrom
2fbe2ef3ea leon, greth: 10/100 MAC enable TX BD interrupt
Missed to enable interrupt per TX descriptor. Could lead to TX buffer
starvation.

Does not affect the GBit code.
2018-08-24 15:51:39 +02:00
Daniel Hellstrom
a87964d04f sparc,smp: typo in start.S causing SMP not working 2018-08-24 15:51:38 +02:00