kernel: fix k_mem_partition data types

We need a size_t and not a u32_t for partition sizes,
for 64-bit compatibility.

Additionally, app_memdomain.h was also casting the base
address to a u32_t instead of a uintptr_t.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie 2019-11-13 12:10:56 -08:00 committed by Andrew Boie
commit a824821b86
4 changed files with 7 additions and 7 deletions

View file

@ -937,11 +937,11 @@ static void apply_mem_partition(struct x86_page_tables *ptables,
} }
__ASSERT(partition->start >= DT_PHYS_RAM_ADDR, __ASSERT(partition->start >= DT_PHYS_RAM_ADDR,
"region at %08lx[%u] extends below system ram start 0x%08x", "region at %08lx[%zu] extends below system ram start 0x%08x",
partition->start, partition->size, DT_PHYS_RAM_ADDR); partition->start, partition->size, DT_PHYS_RAM_ADDR);
__ASSERT(((partition->start + partition->size) <= __ASSERT(((partition->start + partition->size) <=
(DT_PHYS_RAM_ADDR + (DT_RAM_SIZE * 1024U))), (DT_PHYS_RAM_ADDR + (DT_RAM_SIZE * 1024U))),
"region at %08lx[%u] end at %08lx extends beyond system ram end 0x%08x", "region at %08lx[%zu] end at %08lx extends beyond system ram end 0x%08x",
partition->start, partition->size, partition->start, partition->size,
partition->start + partition->size, partition->start + partition->size,
(DT_PHYS_RAM_ADDR + (DT_RAM_SIZE * 1024U))); (DT_PHYS_RAM_ADDR + (DT_RAM_SIZE * 1024U)));

View file

@ -110,8 +110,8 @@ struct z_app_region {
extern char Z_APP_START(name)[]; \ extern char Z_APP_START(name)[]; \
extern char Z_APP_SIZE(name)[]; \ extern char Z_APP_SIZE(name)[]; \
struct k_mem_partition name = { \ struct k_mem_partition name = { \
.start = (u32_t) &Z_APP_START(name), \ .start = (uintptr_t) &Z_APP_START(name), \
.size = (u32_t) &Z_APP_SIZE(name), \ .size = (size_t) &Z_APP_SIZE(name), \
.attr = K_MEM_PARTITION_P_RW_U_RW \ .attr = K_MEM_PARTITION_P_RW_U_RW \
}; \ }; \
extern char Z_APP_BSS_START(name)[]; \ extern char Z_APP_BSS_START(name)[]; \

View file

@ -5128,7 +5128,7 @@ struct k_mem_partition {
/** start address of memory partition */ /** start address of memory partition */
uintptr_t start; uintptr_t start;
/** size of memory partition */ /** size of memory partition */
u32_t size; size_t size;
#if defined(CONFIG_MEMORY_PROTECTION) #if defined(CONFIG_MEMORY_PROTECTION)
/** attribute of memory partition */ /** attribute of memory partition */
k_mem_partition_attr_t attr; k_mem_partition_attr_t attr;

View file

@ -101,7 +101,7 @@ void k_mem_domain_init(struct k_mem_domain *domain, u8_t num_parts,
__ASSERT(parts[i] != NULL, ""); __ASSERT(parts[i] != NULL, "");
__ASSERT((parts[i]->start + parts[i]->size) > __ASSERT((parts[i]->start + parts[i]->size) >
parts[i]->start, parts[i]->start,
"invalid partition %p size %d", "invalid partition %p size %zu",
parts[i], parts[i]->size); parts[i], parts[i]->size);
#if defined(CONFIG_EXECUTE_XOR_WRITE) || \ #if defined(CONFIG_EXECUTE_XOR_WRITE) || \
@ -151,7 +151,7 @@ void k_mem_domain_add_partition(struct k_mem_domain *domain,
__ASSERT(domain != NULL, ""); __ASSERT(domain != NULL, "");
__ASSERT(part != NULL, ""); __ASSERT(part != NULL, "");
__ASSERT((part->start + part->size) > part->start, __ASSERT((part->start + part->size) > part->start,
"invalid partition %p size %d", part, part->size); "invalid partition %p size %zu", part, part->size);
#if defined(CONFIG_EXECUTE_XOR_WRITE) || \ #if defined(CONFIG_EXECUTE_XOR_WRITE) || \
defined(CONFIG_MPU_REQUIRES_NON_OVERLAPPING_REGIONS) defined(CONFIG_MPU_REQUIRES_NON_OVERLAPPING_REGIONS)