Skip to content
Snippets Groups Projects
Commit 82781138 authored by Katsuhiro Suzuki's avatar Katsuhiro Suzuki
Browse files

logging: (tentative) add padding for RISC-V 64bits environment


This patch add padding in filter structure of log system.
In RISCV && 64BIT environment. Log system is facing alignment bug.

struct log_source_dynamic_data {
	uint32_t filters;
};

static inline uint32_t *log_dynamic_filters_get(uint32_t source_id)
{
	return &__log_dynamic_start[source_id].filters;
}

A sizeof(log_source_dynamic_data) = 4, address offset of
&__log_dynamic_start[] are:
  - &__log_dynamic_start[0]: +0
  - &__log_dynamic_start[1]: +4
  - &__log_dynamic_start[2]: +8

But RISCV 64bit gcc/ld places each log_dynamic_log, log_dynamic_os
and log_dynamic_test per 8bytes alignment. So address offset of
log_dynamic_* are:
  - &log_dynamic_log : +0
  - &log_dynamic_os  : +8
  - &log_dynamic_test: +16

tests/subsys/logging/log_core cannot set correct log filters in
RISCV && 64BIT environment, so test is always going to fail.

Signed-off-by: default avatarKatsuhiro Suzuki <katsuhiro@katsuster.net>
parent 26b6d43f
No related branches found
No related tags found
No related merge requests found
......@@ -35,6 +35,9 @@ struct log_source_dynamic_data {
*/
uint32_t dummy[2];
#endif
#if defined(CONFIG_RISCV) && defined(CONFIG_64BIT)
uint32_t dummy;
#endif
};
/** @brief Creates name of variable and section for constant log data.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment