aboutsummaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
Diffstat (limited to 'libc')
-rw-r--r--libc/mem.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/libc/mem.c b/libc/mem.c
index ba7795f..2fde00b 100644
--- a/libc/mem.c
+++ b/libc/mem.c
@@ -58,29 +58,29 @@ int memcmp(const void *s1, const void *s2, u32 n)
#ifdef kernel
-/* #define ALIGNMENT 1ul */
-/* #define ALIGN_TYPE char */
-/* #define ALIGN_INFO sizeof(ALIGN_TYPE) * 16 */
-
-/* #define ALIGN(ptr) \ */
-/* if (ALIGNMENT > 1) { \ */
-/* u32 diff; \ */
-/* ptr = (void *)((u32)ptr + ALIGN_INFO); \ */
-/* diff = (u32)ptr & (ALIGNMENT - 1); \ */
-/* if (diff != 0) { \ */
-/* diff = ALIGNMENT - diff; \ */
-/* ptr = (void *)((u32)ptr + diff); \ */
-/* } \ */
-/* *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)) = diff + ALIGN_INFO; \ */
-/* } */
-
-/* #define UNALIGN(ptr) \ */
-/* if (ALIGNMENT > 1) { \ */
-/* u32 diff = *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)); \ */
-/* if (diff < (ALIGNMENT + ALIGN_INFO)) { \ */
-/* ptr = (void *)((u32)ptr - diff); \ */
-/* } \ */
-/* } */
+#define ALIGNMENT 16ul
+#define ALIGN_TYPE char
+#define ALIGN_INFO sizeof(ALIGN_TYPE) * 16
+
+#define ALIGN(ptr) \
+ if (ALIGNMENT > 1) { \
+ u32 diff; \
+ ptr = (void *)((u32)ptr + ALIGN_INFO); \
+ diff = (u32)ptr & (ALIGNMENT - 1); \
+ if (diff != 0) { \
+ diff = ALIGNMENT - diff; \
+ ptr = (void *)((u32)ptr + diff); \
+ } \
+ *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)) = diff + ALIGN_INFO; \
+ }
+
+#define UNALIGN(ptr) \
+ if (ALIGNMENT > 1) { \
+ u32 diff = *((ALIGN_TYPE *)((u32)ptr - ALIGN_INFO)); \
+ if (diff < (ALIGNMENT + ALIGN_INFO)) { \
+ ptr = (void *)((u32)ptr - diff); \
+ } \
+ }
static u32 *heap;
static u32 index;
@@ -110,13 +110,13 @@ void *malloc(u32 size)
if (size < 1)
return NULL;
- /* size = size + ALIGNMENT + ALIGN_INFO; */
+ size = size + ALIGNMENT + ALIGN_INFO;
heap[index] = size;
index += size + 1;
void *p = (void *)(heap + index - size);
- /* ALIGN(p); */
+ ALIGN(p);
return p;
}