diff options
| author | Shell <[email protected]> | 2024-08-28 20:54:55 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2024-09-01 15:12:34 -0400 |
| commit | dfd8ccf262d53723056490d8858807f792ffa013 (patch) | |
| tree | 83cc36f546cf5c17ed407318daf5dda0194b80c3 /src/mem.c | |
| parent | b6f1b16d7a7a61bc0b5301a6fcf084cef9f31e3b (diff) | |
feat: kernel/libcpu: fit into ilp32d
Diffstat (limited to 'src/mem.c')
| -rw-r--r-- | src/mem.c | 50 |
1 files changed, 25 insertions, 25 deletions
@@ -58,7 +58,7 @@ struct rt_small_mem_item { - rt_ubase_t pool_ptr; /**< small memory object addr */ + rt_uintptr_t pool_ptr; /**< small memory object addr */ rt_size_t next; /**< next free item */ rt_size_t prev; /**< prev free item */ #ifdef RT_USING_MEMTRACE @@ -82,19 +82,19 @@ struct rt_small_mem rt_size_t mem_size_aligned; /**< aligned memory size */ }; -#define MIN_SIZE (sizeof(rt_ubase_t) + sizeof(rt_size_t) + sizeof(rt_size_t)) +#define MIN_SIZE (sizeof(rt_uintptr_t) + sizeof(rt_size_t) + sizeof(rt_size_t)) #define MEM_MASK ((~(rt_size_t)0) - 1) -#define MEM_USED(_mem) ((((rt_base_t)(_mem)) & MEM_MASK) | 0x1) -#define MEM_FREED(_mem) ((((rt_base_t)(_mem)) & MEM_MASK) | 0x0) +#define MEM_USED(_mem) ((((rt_uintptr_t)(_mem)) & MEM_MASK) | 0x1) +#define MEM_FREED(_mem) ((((rt_uintptr_t)(_mem)) & MEM_MASK) | 0x0) #define MEM_ISUSED(_mem) \ - (((rt_base_t)(((struct rt_small_mem_item *)(_mem))->pool_ptr)) & (~MEM_MASK)) + (((rt_uintptr_t)(((struct rt_small_mem_item *)(_mem))->pool_ptr)) & (~MEM_MASK)) #define MEM_POOL(_mem) \ - ((struct rt_small_mem *)(((rt_base_t)(((struct rt_small_mem_item *)(_mem))->pool_ptr)) & (MEM_MASK))) + ((struct rt_small_mem *)(((rt_uintptr_t)(((struct rt_small_mem_item *)(_mem))->pool_ptr)) & (MEM_MASK))) #define MEM_SIZE(_heap, _mem) \ - (((struct rt_small_mem_item *)(_mem))->next - ((rt_ubase_t)(_mem) - \ - (rt_ubase_t)((_heap)->heap_ptr)) - RT_ALIGN(sizeof(struct rt_small_mem_item), RT_ALIGN_SIZE)) + (((struct rt_small_mem_item *)(_mem))->next - ((rt_uintptr_t)(_mem) - \ + (rt_uintptr_t)((_heap)->heap_ptr)) - RT_ALIGN(sizeof(struct rt_small_mem_item), RT_ALIGN_SIZE)) #define MIN_SIZE_ALIGNED RT_ALIGN(MIN_SIZE, RT_ALIGN_SIZE) #define SIZEOF_STRUCT_MEM RT_ALIGN(sizeof(struct rt_small_mem_item), RT_ALIGN_SIZE) @@ -173,12 +173,12 @@ rt_smem_t rt_smem_init(const char *name, { struct rt_small_mem_item *mem; struct rt_small_mem *small_mem; - rt_ubase_t start_addr, begin_align, end_align, mem_size; + rt_uintptr_t start_addr, begin_align, end_align, mem_size; - small_mem = (struct rt_small_mem *)RT_ALIGN((rt_ubase_t)begin_addr, RT_ALIGN_SIZE); - start_addr = (rt_ubase_t)small_mem + sizeof(*small_mem); - begin_align = RT_ALIGN((rt_ubase_t)start_addr, RT_ALIGN_SIZE); - end_align = RT_ALIGN_DOWN((rt_ubase_t)begin_addr + size, RT_ALIGN_SIZE); + small_mem = (struct rt_small_mem *)RT_ALIGN((rt_uintptr_t)begin_addr, RT_ALIGN_SIZE); + start_addr = (rt_uintptr_t)small_mem + sizeof(*small_mem); + begin_align = RT_ALIGN((rt_uintptr_t)start_addr, RT_ALIGN_SIZE); + end_align = RT_ALIGN_DOWN((rt_uintptr_t)begin_addr + size, RT_ALIGN_SIZE); /* alignment addr */ if ((end_align > (2 * SIZEOF_STRUCT_MEM)) && @@ -190,7 +190,7 @@ rt_smem_t rt_smem_init(const char *name, else { rt_kprintf("mem init, error begin address 0x%x, and end address 0x%x\n", - (rt_ubase_t)begin_addr, (rt_ubase_t)begin_addr + size); + (rt_uintptr_t)begin_addr, (rt_uintptr_t)begin_addr + size); return RT_NULL; } @@ -207,7 +207,7 @@ rt_smem_t rt_smem_init(const char *name, small_mem->heap_ptr = (rt_uint8_t *)begin_align; LOG_D("mem init, heap begin address 0x%x, size %d", - (rt_ubase_t)small_mem->heap_ptr, small_mem->mem_size_aligned); + (rt_uintptr_t)small_mem->heap_ptr, small_mem->mem_size_aligned); /* initialize the start of the heap */ mem = (struct rt_small_mem_item *)small_mem->heap_ptr; @@ -372,13 +372,13 @@ void *rt_smem_alloc(rt_smem_t m, rt_size_t size) RT_ASSERT(((small_mem->lfree == small_mem->heap_end) || (!MEM_ISUSED(small_mem->lfree)))); } - RT_ASSERT((rt_ubase_t)mem + SIZEOF_STRUCT_MEM + size <= (rt_ubase_t)small_mem->heap_end); - RT_ASSERT((rt_ubase_t)((rt_uint8_t *)mem + SIZEOF_STRUCT_MEM) % RT_ALIGN_SIZE == 0); - RT_ASSERT((((rt_ubase_t)mem) & (RT_ALIGN_SIZE - 1)) == 0); + RT_ASSERT((rt_uintptr_t)mem + SIZEOF_STRUCT_MEM + size <= (rt_uintptr_t)small_mem->heap_end); + RT_ASSERT((rt_uintptr_t)((rt_uint8_t *)mem + SIZEOF_STRUCT_MEM) % RT_ALIGN_SIZE == 0); + RT_ASSERT((((rt_uintptr_t)mem) & (RT_ALIGN_SIZE - 1)) == 0); LOG_D("allocate memory at 0x%x, size: %d", - (rt_ubase_t)((rt_uint8_t *)mem + SIZEOF_STRUCT_MEM), - (rt_ubase_t)(mem->next - ((rt_uint8_t *)mem - small_mem->heap_ptr))); + (rt_uintptr_t)((rt_uint8_t *)mem + SIZEOF_STRUCT_MEM), + (rt_uintptr_t)(mem->next - ((rt_uint8_t *)mem - small_mem->heap_ptr))); /* return the memory data except mem struct */ return (rt_uint8_t *)mem + SIZEOF_STRUCT_MEM; @@ -431,7 +431,7 @@ void *rt_smem_realloc(rt_smem_t m, void *rmem, rt_size_t newsize) if (rmem == RT_NULL) return rt_smem_alloc(&small_mem->parent, newsize); - RT_ASSERT((((rt_ubase_t)rmem) & (RT_ALIGN_SIZE - 1)) == 0); + RT_ASSERT((((rt_uintptr_t)rmem) & (RT_ALIGN_SIZE - 1)) == 0); RT_ASSERT((rt_uint8_t *)rmem >= (rt_uint8_t *)small_mem->heap_ptr); RT_ASSERT((rt_uint8_t *)rmem < (rt_uint8_t *)small_mem->heap_end); @@ -502,7 +502,7 @@ void rt_smem_free(void *rmem) if (rmem == RT_NULL) return; - RT_ASSERT((((rt_ubase_t)rmem) & (RT_ALIGN_SIZE - 1)) == 0); + RT_ASSERT((((rt_uintptr_t)rmem) & (RT_ALIGN_SIZE - 1)) == 0); /* Get the corresponding struct rt_small_mem_item ... */ mem = (struct rt_small_mem_item *)((rt_uint8_t *)rmem - SIZEOF_STRUCT_MEM); @@ -517,8 +517,8 @@ void rt_smem_free(void *rmem) RT_ASSERT(MEM_POOL(&small_mem->heap_ptr[mem->next]) == small_mem); LOG_D("release memory 0x%x, size: %d", - (rt_ubase_t)rmem, - (rt_ubase_t)(mem->next - ((rt_uint8_t *)mem - small_mem->heap_ptr))); + (rt_uintptr_t)rmem, + (rt_uintptr_t)(mem->next - ((rt_uint8_t *)mem - small_mem->heap_ptr))); /* ... and is now unused. */ mem->pool_ptr = MEM_FREED(small_mem); @@ -578,7 +578,7 @@ static int memcheck(int argc, char *argv[]) /* check mem */ for (mem = (struct rt_small_mem_item *)m->heap_ptr; mem != m->heap_end; mem = (struct rt_small_mem_item *)&m->heap_ptr[mem->next]) { - position = (rt_ubase_t)mem - (rt_ubase_t)m->heap_ptr; + position = (rt_uintptr_t)mem - (rt_uintptr_t)m->heap_ptr; if (position < 0) goto __exit; if (position > (int)m->mem_size_aligned) goto __exit; if (MEM_POOL(mem) != m) goto __exit; |
