Skip to content

Commit 0963cb3

Browse files
committed
[fw-isoldr] aligned_alloc() for malloc
1 parent 701e53f commit 0963cb3

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

firmware/isoldr/loader/include/malloc.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* DreamShell ISO Loader
33
* Memory allocation
4-
* (c)2022-2023 SWAT <http://www.dc-swat.ru>
4+
* (c)2022-2025 SWAT <http://www.dc-swat.ru>
55
*/
66

77
#ifndef __MALLOC_H
@@ -19,6 +19,7 @@ uint32 malloc_heap_pos();
1919
void *malloc(uint32 size);
2020
void free(void *data);
2121
void *realloc(void *data, uint32 size);
22+
void *aligned_alloc(size_t alignment, size_t size);
2223

2324
__END_DECLS
2425

firmware/isoldr/loader/malloc.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* DreamShell ISO Loader
33
* Memory allocation
4-
* (c)2022-2024 SWAT <http://www.dc-swat.ru>
4+
* (c)2022-2025 SWAT <http://www.dc-swat.ru>
55
*/
66

77
#include <main.h>
@@ -386,3 +386,13 @@ void *realloc(void *data, uint32 size) {
386386
return internal_realloc(data, size);
387387
}
388388
}
389+
390+
// FIXME: This is a hack to get aligned memory.
391+
void *aligned_alloc(size_t alignment, size_t size) {
392+
void *ptr = malloc(size + alignment);
393+
if (ptr) {
394+
void *aligned_ptr = (void*)(((uintptr_t)ptr + alignment - 1) & ~(alignment - 1));
395+
return aligned_ptr;
396+
}
397+
return NULL;
398+
}

0 commit comments

Comments
 (0)