src/rtos/eCos : Support per-build configuration specific structure layouts
Extended feature. This is a large patch, but is self-contained to the eCos support and does not affect any other openocd functionality. It does NOT affect existing eCos RTOS plugin users where their applications do not provide the extended symbolic helper information. If the helper symbols are not available the rtos support code will behave as before. This "dynamic" functionality is *required* because eCos does NOT have a fixed/hardwired, known, layout for the thread descriptor structure. The per-application build eCos configuration can affect the shape of the thread descriptor structure (field presence, and hence offsets of subsequent fields) such that constant values cannot be used to consistently interpret all possible eCos application configurations. For historical reasons, there is not yet a consistent namespace for the helper symbols across eCos HALs hence the support is currently limited to specific architectures (Cortex-M and ARM/Cortex-A). No new Clang analyser warnings are raised by this changeset. Change-Id: Ib3a36877326eeb56595cbca55e21b9e59a59c98a Signed-off-by: James G. Smith <jsmith@rallysmith.co.uk> Reviewed-on: https://review.openocd.org/c/openocd/+/6275 Reviewed-by: Alex Schuilenburg <alex.schuilenburg@gmail.com> Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Tested-by: jenkins
This commit is contained in:
parent
9a7781ff8c
commit
d96dc47ef6
1005
src/rtos/eCos.c
1005
src/rtos/eCos.c
File diff suppressed because it is too large
Load Diff
|
@ -8,6 +8,13 @@
|
|||
#include "rtos_standard_stackings.h"
|
||||
#include "target/armv7m.h"
|
||||
|
||||
/* For Cortex-M eCos applications the actual thread context register layout can
|
||||
* be different between active threads of an application depending on whether
|
||||
* the FPU is in use, configured for lazy FPU context saving, etc. */
|
||||
|
||||
/* Default fixed thread register context description used for older eCos
|
||||
* application builds without the necessary symbolic information describing the
|
||||
* actual configuration-dependent offsets. */
|
||||
static const struct stack_register_offset rtos_ecos_cortex_m3_stack_offsets[ARMV7M_NUM_CORE_REGS] = {
|
||||
{ ARMV7M_R0, 0x0c, 32 }, /* r0 */
|
||||
{ ARMV7M_R1, 0x10, 32 }, /* r1 */
|
||||
|
|
Loading…
Reference in New Issue