aboutsummaryrefslogtreecommitdiff
path: root/malloc.c
blob: bd0ac0f23ee1e3c4a8f5e003ff1d53dc397f03fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdint.h>
#include "string.h"
#include "bios.h"

static uint8_t *fseg_base = &edata;
static uint8_t *malloc_top = &stext;

void *malloc_align(int n, int align)
{
	malloc_top = (uint8_t *) ((uintptr_t)(malloc_top - n) & -align);
	return malloc_top;
}

void *malloc_fseg_align(int n, int align)
{
	void *p;
	fseg_base = (uint8_t *) (((uintptr_t)fseg_base + align - 1) & -align);
	p = fseg_base;
	fseg_base += n;
	return p;
}