summaryrefslogtreecommitdiff
path: root/src/mem.c
diff options
context:
space:
mode:
authorShell <[email protected]>2024-08-28 20:54:55 +0800
committerMeco Man <[email protected]>2024-09-01 15:12:34 -0400
commitdfd8ccf262d53723056490d8858807f792ffa013 (patch)
tree83cc36f546cf5c17ed407318daf5dda0194b80c3 /src/mem.c
parentb6f1b16d7a7a61bc0b5301a6fcf084cef9f31e3b (diff)
feat: kernel/libcpu: fit into ilp32d
Diffstat (limited to 'src/mem.c')
-rw-r--r--src/mem.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/src/mem.c b/src/mem.c
index 64bf0fe018..26cba6d404 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -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;