From a824821b861ff2e5afc442c1207382bbb1ecb332 Mon Sep 17 00:00:00 2001 From: Andrew Boie Date: Wed, 13 Nov 2019 12:10:56 -0800 Subject: [PATCH] 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 --- arch/x86/core/x86_mmu.c | 4 ++-- include/app_memory/app_memdomain.h | 4 ++-- include/kernel.h | 2 +- kernel/mem_domain.c | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/x86/core/x86_mmu.c b/arch/x86/core/x86_mmu.c index a8075259cab..9abdd4f8949 100644 --- a/arch/x86/core/x86_mmu.c +++ b/arch/x86/core/x86_mmu.c @@ -937,11 +937,11 @@ static void apply_mem_partition(struct x86_page_tables *ptables, } __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); __ASSERT(((partition->start + partition->size) <= (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, (DT_PHYS_RAM_ADDR + (DT_RAM_SIZE * 1024U))); diff --git a/include/app_memory/app_memdomain.h b/include/app_memory/app_memdomain.h index c429c285e4c..40227d931ae 100644 --- a/include/app_memory/app_memdomain.h +++ b/include/app_memory/app_memdomain.h @@ -110,8 +110,8 @@ struct z_app_region { extern char Z_APP_START(name)[]; \ extern char Z_APP_SIZE(name)[]; \ struct k_mem_partition name = { \ - .start = (u32_t) &Z_APP_START(name), \ - .size = (u32_t) &Z_APP_SIZE(name), \ + .start = (uintptr_t) &Z_APP_START(name), \ + .size = (size_t) &Z_APP_SIZE(name), \ .attr = K_MEM_PARTITION_P_RW_U_RW \ }; \ extern char Z_APP_BSS_START(name)[]; \ diff --git a/include/kernel.h b/include/kernel.h index e510e39d5d1..31745af668e 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -5128,7 +5128,7 @@ struct k_mem_partition { /** start address of memory partition */ uintptr_t start; /** size of memory partition */ - u32_t size; + size_t size; #if defined(CONFIG_MEMORY_PROTECTION) /** attribute of memory partition */ k_mem_partition_attr_t attr; diff --git a/kernel/mem_domain.c b/kernel/mem_domain.c index 4eb24d7719c..8534ae71ca3 100644 --- a/kernel/mem_domain.c +++ b/kernel/mem_domain.c @@ -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]->start + parts[i]->size) > parts[i]->start, - "invalid partition %p size %d", + "invalid partition %p size %zu", parts[i], parts[i]->size); #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(part != NULL, ""); __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) || \ defined(CONFIG_MPU_REQUIRES_NON_OVERLAPPING_REGIONS)